仮想ディスク上にファイルシステムのメタデータを再作成しようとしています。このメタデータはe2imageを使用して保存でき、e2imageのmanページには、e2image -I
を使用してファイルシステムを復元できると記載されています。残念ながら、manページには、この引数の使用方法に関する情報はありません。私は以下を試しました(読みやすくするためにコマンド結果をインデントしました):
msk $ e2image /dev/nbd1 -I test.qcow2
e2image 1.42.5 (29-Jul-2012)
e2image: Wrong magic number for Ext2 Image Header while trying to open test.qcow2
msk $ Sudo e2image /dev/nbd1 -I test.qcow2
e2image 1.42.5 (29-Jul-2012)
e2image: Wrong magic number for Ext2 Image Header while trying to open test.qcow2
msk $ Sudo e2image test.qcow2 -I /dev/nbd1
e2image 1.42.5 (29-Jul-2012)
e2image: Wrong magic number for Ext2 Image Header while trying to open /dev/nbd1
私のファイルシステムは実際にはext4ですが、manページには次のように書かれています。
The e2image program will save critical ext2, ext3, or ext4
次のコマンドを使用してイメージを作成しました。
Sudo e2image -Q /dev/mapper/nbd0p1 test.qcow2
e2imageは3つの異なるフォーマットをサポートしています。デフォルトでは、「通常の」カスタムe2imageファイル形式を作成します。 -rを使用すると、適切なオフセットにメタデータを含む大きなスパースファイルが作成され、-Qを使用すると、qcow2形式のファイルが作成されます。 (-Qオプションは、大きなファイルシステムイメージをより移植しやすくするために最近追加されました)。
マンページからはまったくわかりませんが、-Iオプションは、「通常の」e2imageファイル形式(つまり、-rまたは-Qなしで作成された画像)に対してのみ有効です。
Qcow2イメージがあるので、qemu-imgを使用してブロックデバイスに書き戻すことができます。
# qemu-img convert -O raw test.qcow2 /dev/nbd1
ただし、e2imageで生成された画像にはメタデータのみが含まれていることに注意してください、つまりファイルデータはまったくありません。ファイルデータの/ dev/nbd1のさまざまなブロックを指すメタデータを書き出すことになります。したがって、ファイルには、/ dev/nbd1のそれらのブロックに以前含まれていたデータがすべて含まれます。
だから私はそれを行う方法をあなたに話しました、しかしそれが実際にあなたがしたいことであることを確認してください!
e2image -Q
を使用してe2image -r
を使用して作成されたQCOW2イメージを復元することができます。例えば:
# e2image -Q /dev/sdb1 image.qcow2
# e2image -r image.qcow2 /dev/sdb2
これをe2fsprogsのバージョン1.42.12
でテストしたことに注意してください。
>= 1.42.9
の時点で、e2image
は-a
フラグもサポートしており、メタデータに加えてファイルシステムデータを含めることができます。
# e2image -Qa /dev/sdb1 image-full.qcow2
# e2image -r image-full.qcow2 /dev/sdb2
この場合、e2image -r
は割り当てられたブロックのみをターゲットに書き戻すのに対し、qemu-img convert
は論理ファイルシステム全体を書き込むように見えることを確認しました。これにより、部分的に使用されているファイルシステムのI/Oを大幅に節約できます。