web-dev-qa-db-ja.com

LVMでEXT4ボリュームをオンラインで縮小することは可能ですか?

今日私はOpenSUSE 12.3(カーネル3.7)を搭載した私のマシンでこれを試しました:

# resize2fs /dev/mapper/system-srv 2G
resize2fs 1.42.6 (21-Sep-2012)
Filesystem at /dev/mapper/system-srv is mounted on /srv; on-line resizing required
resize2fs: On-line shrinking not supported

/dev/mapper/system-srvはEXT4ボリュームです。

それは本当にサポートされていないのですか、それとも何か不足していますか?

47
Alicia

メッセージが言ったように、オンラインでのみgrowファイルシステムを実行できます。縮小する場合は、最初にマウントを解除する必要があります。

ext4ファイルシステムのメンテナによると 、Ted Ts'o:

オンラインでの縮小はサポートされていません。

71
Michael Hampton

はい、再起動せずにルートパーティションを縮小/移動/拡大できます(またはlivecd、usbkey): この回答を参照 =。それは非常によく書かれていて、理解しやすいですが、かなり長くて少し危険です。

resize2fsオンラインで縮小できませんext4パーティション。この制限は、ルートパーティションに適用されると、ホストを再起動してrootパーティションを縮小できるようにすることは避けられないと考える可能性があり、これは回避したい場合があります。リンクされたプロセスにより、再起動せずにルートパーティションをアンマウントできます。したがって、この観点では、パーティションのマウント状態に関する厳密なonlineサイズ変更ではありませんが、ネットワークに関するオンラインサイズ変更のままです。ホストのオンライン状態または到達可能性。

もちろん、ext4パーティションを拡張するだけの場合は、従来の実用的なresize2fsソリューションを使用する必要があります。

私がリンクした一般的なソリューションは、たとえば、あらゆるタイプの専用またはVPSソリューションで機能します。

TLDR;このソリューションはpivot_rootからtmpfsを意味するので、ルートパーティションを安全にumountライブでいじることができます。完了すると、新しいルートパーティションにpivot_rootが戻ります。

これにより、ルートファイルシステムのほとんどすべての操作が可能になります(移動、ファイルシステムの変更、物理デバイスの変更など)。

私はこれを個人的に使用しており、debianシステムでも非常にうまく機能しますが、ガイドは最初は2007年にredhat向けに作成されました。リンクした回答はCentOS7用に更新されました。 OpenSUSEで動作する可能性は非常に高いですが、おそらく多少の調整が必要です。

18
vaab

ケースがコンソールのないリモートサーバーの場合、再起動中にinitramfsを使用してファイルシステムを縮小できます。 rootをマウントする前に、initramfsにresize2fsを追加して実行する必要があります。

Debian/Ubuntuの例:

/ etc/initramfs-tools/hooks/resizefs(実行可能):

#!/bin/sh

set -e

PREREQS=""

prereqs() { echo "$PREREQS"; }

case $1 in
    prereqs)
        prereqs
        exit 0
    ;;
esac

. /usr/share/initramfs-tools/hook-functions

copy_exec /sbin/e2fsck
copy_exec /sbin/resize2fs

exit 0

/ etc/initramfs-tools/scripts/local-premount/resizefs(実行可能)

#!/bin/sh

set -e

PREREQS=""

prereqs() { echo "$PREREQS"; }

case "$1" in
    prereqs)
        prereqs
        exit 0
    ;;
esac

/sbin/e2fsck -yf /dev/sda1
/sbin/resize2fs /dev/sda1 5G
/sbin/e2fsck -yf /dev/sda1

ここでupdate-initramfsを実行し、再起動し、サイズを確認し、これらのスクリプトを削除して、もう一度update-intiramfsを実行します。

Dracut(Fedora、CentOS)の場合は、同じロジック(/usr/lib/dracut/modules.d)を使用します。

これは、rootfsを暗号化または移動する場合に非常に役立ちます。新しいパーティションに使用できる空き領域はありません。

14
urusha