解決策 1:
メッセージが言ったように、成長しかできません オンラインの ext4 ファイルシステム。縮小したい場合は、まずアンマウントする必要があります。
ext4 ファイルシステムのメンテナーである Ted Ts'o によると:
<ブロック引用>申し訳ありませんが、オンライン縮小はサポートされていません.
解決策 2:
コンソールのないリモート サーバーの場合は、再起動中に initramfs を使用してファイル システムを圧縮できます。 root をマウントする前に、resize2fs を initramfs に追加して実行する必要があります。
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
# simple device example
/sbin/e2fsck -yf /dev/sda1
/sbin/resize2fs /dev/sda1 5G # see size info below
/sbin/e2fsck -yf /dev/sda1
# complex device example
# activate md-raid containing FS/PV
#/sbin/mdadm -A /dev/md0
# activate VG containing FS
#/sbin/lvm vgchange -ay vg0
# resize
#/sbin/e2fsck -yf /dev/vg0/root # or /dev/md0
#/sbin/resize2fs /dev/vg0/root 5G
#/sbin/e2fsck -yf /dev/vg0/root
update-initramfs -u -k kernel-name
を実行します カーネル kernel-name
の initramfs を更新する これは、ブートローダー (grub) でデフォルトとして設定されています。起動に失敗した場合 - 別の変更されていない正常なカーネル/initramfs で起動できます。または、 all
を使用できます すべてのカーネルを更新しますが、戻る方法はありません。
ファイルシステムを自動的に拡張するツールがシステムにないことを確認してください (例:cloud-init - コメント resizefs
/etc/cloud/cloud.cfg
で ).
リブート。ファイルシステムのサイズを確認してください。 initramfs スクリプトを削除して update-intiramfs -u -k kernel-name
を実行します
parted resizepart
で基盤となるデバイスを縮小できるようになりました / mdadm --grow --size=
/ lvresize -L
.デバイスのサイズは、スクリプトのファイルシステムのサイズよりも大きくする必要があります。間違いを犯さないための最も簡単な方法:デバイスのサイズを計画している場合 - 6G.スクリプトで fs サイズを 5G に設定します。 fs のサイズ変更後 - デバイスのサイズを 6G に変更し、resize2fs /dev/sda1
を使用して fs をオンラインで最大に拡張します . fs がデバイスに完全に収まるようになりました。
dracut (Fedora、CentOS) の場合、同じロジック (/usr/lib/dracut/modules.d) を使用します。
これは、rootfs の暗号化または移動に非常に便利で、新しいパーティション用の空き領域がありません。
解決策 3:
はい、再起動せずにルート パーティションを縮小/移動/拡大できます (livecdでもusbkeyでもありません):この回答を参照してください。非常によく書かれており、従うのは簡単ですが、かなり長く、少し危険です.
resize2fs
オンラインで縮小できません ext4
パーティション .この制限をルート パーティションに適用すると、ホストを再起動して root
を縮小することは避けられないと考えるかもしれません。 これは避けたいことかもしれません。リンクされたプロセスにより、再起動せずにルート パーティションをアンマウントできます。したがって、厳密にはオンラインではありません。 パーティションのマウント状態に関してはサイズ変更しますが、ネットワークのオンライン ステータスまたはホストの到達可能性に関してはオンラインのサイズ変更のままです。
もちろん、ext4 パーティションのみを拡張したい場合は、従来の作業 resize2fs
に固執する必要があります。
リンクした一般的なソリューションは、たとえば、あらゆるタイプの専用または VPS ソリューションで機能します。
TLDR;この解決策は pivot_root
を意味します tmpfs
まで umount
できるように 安全にルート パーティションを有効にし、いじってください。完了すると、pivot_root
になります。 新しいルート パーティションに戻ります。
これにより、ルート ファイル システムのほぼすべての操作が可能になります (移動、ファイル システムの変更、物理デバイスの変更など)。
私は個人的にこれを使用しており、debian システムでも非常にうまく機能しますが、このガイドは 2007 年に redhat 用に最初に作成されたもので、リンクした回答は CentOS7 用に更新されました。 OpenSUSE で動作する可能性は非常に高いですが、多少の調整は必要です。