web-dev-qa-db-ja.com

コマンドラインでのext4パーティションの縮小

実行中のシステムでext4パーティションを縮小し、Gpartedで行われているように、利用可能な空き領域に別のパーティションを作成することは可能でしょうか?

システムパーティションではない/dev/sdb1を縮小したいので、アンマウントは問題ありません。

/dev/sdb1resize2fsのサイズを変更できましたが、fdiskに新しいパーティションを作成するための空き領域がなかったため、その後失われました。

Ubuntu Server 14.04を実行しています。

3
Taavi

はい、実際にパーティションテーブルを変更するには、fdiskを実行する必要があります。

resize2fs(パーティションをアンマウントする必要があります)でパーティションのサイズを変更したら、コマンドの出力を確認します。

$ resize2fs /dev/sdb1 24G
...
The filesystem on /dev/sdb1 is now 6291456 (4k) blocks long.

ブロック数とブロック長を覚えておいてください。これはファイルシステムのサイズのみを変更し、パーティションは変更しませんでした。 fdiskコマンドを使用して、パーティションを削除し、正しいサイズで再作成する必要があります。

$ fdisk /dev/sdb

pと入力して、パーティションテーブルを表示できます。

Device     Boot Start      End  Sectors Size Id Type
/dev/sdb1  *     2048 52428766 52426719  25G 83 Linux

dと入力して、パーティションを削除します。次に、nで新しいパーティションを追加します。元のパーティションと同じ値を使用しますが、最後のセクターを現在のファイルシステムに適合するものに変更します。最後のセクターの相対サイズを受け入れるので、ブロックの数にresize2fsコマンドを与えたブロック長を掛けて、結果のサイズを計算します。この例では:

6291456 * 4k = 25165824k

新しいパーティションを追加するときに、最後のセクターの入力を求められたら、結果のサイズを入力します(+プレフィックスと大文字のKに注意してください):+25165824K

パーティションが起動可能なパーティションである場合はaと入力し、新しいパーティションテーブルを表示するにはpと入力します。

Device     Boot    Start      End  Sectors  Size Id Type
/dev/sdb1  *        2048 50333695 50331648   24G 83 Linux

wと入力して、変更をディスクに書き込みます。その後、新しいサイズが表示されます。

2
ciencia