/home
パーティションのファイルシステムを縮小する方法は次のとおりです。
e2fsck /dev/sda1
resize2fs /dev/sda1 150G
現在実行してみると、df
パーティションが210Gから150Gに縮小されたものになります。間違った)。
ファイルシステムのサイズだけが小さくなったので、fdisk
パーティションのサイズをどのように使用または縮小できますかparted
?
答え1
まず、一般的な警告:データをバックアップしてください。パーティションとファイルシステムのサイズ変更は決して100%安全な作業ではありません。
GPartedでグラフィカル環境を使用できる場合、最も簡単な解決策は次のとおりです。
/dev/sda1
パーティションを含むファイルシステムのサイズに戻します。パーティションを右クリックして「検査」を選択し、すべての操作を適用します。パーティションを希望のサイズに縮小します。パーティションを右クリックして[サイズの調整/移動]を選択し、目的の[新しいサイズ]を設定し、すべての操作を確認して適用します。 GPartedもファイルシステムのサイズ変更を処理します。
dumpe2fs
あるいは、コマンドラインツールを使用してtune2fs
ファイルシステムのブロックサイズとブロック数を取得し、縮小したいパーティションを再作成して、新しいパーティションを元のパーティションと同じバイトで開始し、そのパーティションに追加することもできます。 offset縮小が終了するファイルシステムのサイズ(バイト単位)。
parted
以下は、一般ファイルでサポートされているGNUおよびループデバイスを使用して関連コマンドを操作する完全な例です。
まず、ブロックデバイスを作成してそれを分割し、最初の(唯一の)パーティションに210MiBファイルシステムを作成します。
$ fallocate -l 211MiB testfile $ sudo losetup -f testfile $ sudo parted /dev/loop0 unit MiB mklabel msdos mkpart primary 1 100%FREE $ lsblk /dev/loop0 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 211M 0 loop └─loop0p1 259:0 0 210M 0 part $ sudo mkfs.ext4 -L test -v /dev/loop0p1 210M $ sudo mount /dev/loop0p1 /mnt/temp $ df /mnt/temp Filesystem 1K-blocks Used Available Use% Mounted on /dev/loop0p1 202353 14 187491 1% /mnt/temp
その後、ファイルシステムのサイズを150MiBに調整し、あなたの質問に記載されているものと同様の状態になりました。
$ sudo umount /mnt/temp $ sudo e2fsck -f /dev/loop0p1 $ sudo resize2fs /dev/loop0p1 150M $ sudo mount /dev/loop0p1 /mnt/temp $ df /mnt/temp Filesystem 1K-blocks Used Available Use% Mounted on /dev/loop0p1 144716 1550 132414 2% /mnt/temp $ sudo umount /mnt/temp
これで、パーティションでホストされているファイルシステムの現在のサイズに基づいてパーティションのターゲットサイズを取得します。
$ sudo dumpe2fs -h /dev/loop0p1
または
$ sudo tune2fs -l /dev/loop0p1
関連する行は次のとおりです。
Block count: 153600 First block: 1 Block size: 1024
次のように、新しいパーティションサイズをバイト単位で計算できます。
153600 * 1024 = 157286400
その後、パーティションの現在の開始バイトが必要です(まだ分からないチャック)。
$ sudo parted /dev/loop0 unit b print Number Start End Size Type File system Flags 1 1048576B 221249535B 220200960B primary ext4
今、私たちは新しいパーティションがバイト1048576で始まり、バイトで終わることを知っています。
1048576 + 157286400 -1 = 158334975
計算は
parted
0から始まり包含範囲を使用するため、終了バイトを計算するにはパーティションサイズから1バイトを減算する必要があります。これでパーティションを再作成して結果を確認できます。
$ sudo parted /dev/loop0 unit b rm 1 mkpart primary 1048576 158334975 $ lsblk /dev/loop0 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 211M 0 loop └─loop0p1 259:0 0 150M 0 part
sudo e2fsck -f /dev/loop0p1
パーティションが小さすぎると、再実行すると警告が表示されるため、ファイルシステムが破損する前に回復できます。