web-dev-qa-db-ja.com

ディスクイメージ内のパーティションとファイルシステムのサイズを変更する

Ext2ファイルシステムとext3ファイルシステムの2つのパーティションを持つRAWディスクイメージがあります。後者のパーティションのサイズにギガバイトを追加し、そのファイルシステムのサイズを変更したいと思います。これどうやってするの?

2

まず、このプロセスにはリスクがあり、私が行ったいくつかの仮定によっては状況が少し異なる可能性がありますが、それは間違っている可能性があります。これを試みる前に、データをバックアップしてください。

以下についての注意:GUIを使用してこれらのステップを自動化するためにgpartedのようなものを使用する場合、ステップ3〜6は回避できる可能性があります。

バックアップ後の手順は次のとおりです。

  1. イメージがマウント解除され、使用されていないことを確認します。

  2. 仮想ディスクイメージのサイズを拡張します。私は通常、qemu-resizeを使用してこれを行います。おそらく、dd -bs = X count = y >> iso.imgだけで画像を展開できます。二重矢印は非常に重要です。単一矢印は既存の画像を無効にします。

  3. ツールによっては、RAWイメージを仮想ディスクに変換するためのループバックデバイスを作成する必要がある場合とない場合があります。これを行うには、losetup/dev/loop0/path/to/blockを使用できます-これにより、/ dev/loop0が作成され、基になるファイルを参照する代わりに使用できます。

  4. パーティションマネージャを使用して、ディスクのサイズを変更します。私は通常fdiskを使用します。ここでの最初のステップは、パーティションの情報をダンプすることです。 2番目のステップは、最後のパーティションを削除し、同じ開始ブロックを使用して再作成し、ファイルシステムのタイプ属性が正しく、起動フラグが正しく設定されている(おそらくオフになっている)ことを確認することです。その後、これをディスクに書き込むことができます。

  5. Kpartx/dev/loop0と入力します。これにより/ dev/mapper/loop0pXが作成されるため、パーティションに直接アクセスできます。

  6. サイズを変更するには、resize2fs/dev/mapper/loop0pXを使用します。このコマンドは別の名前で呼ばれる場合があることに注意してください。 resize4fsは一般的な代替手段です。

  7. 必要に応じて、dmsetup remove/dev/mapper/loop0pXを使用します

  8. Losetup -D/dev/loop0を使用して、ブロックデバイスを削除します。

1
davidgo