6.4. 物理ボリュームメタデータの復元

物理ボリュームのボリュームグループのメタデータ領域が誤って上書きされたり、破棄されたりする場合は、メタデータ領域が正しくないことを示すエラーメッセージか、システムで特定 UUID の物理ボリュームが見つからなかったことを示すエラーメッセージが表示されます。物理ボリュームからのデータの復元は、失われたメタデータと同じ UUID を指定して、物理ボリューム上に新規のメタデータ領域を書き込むことによって実行できる場合があります。

警告

作業用の LVM 論理ボリュームを使ってこの手順を試行しないでください。間違った UUID を指定するとデータ損失の原因となります。
以下の例は、メタデータ領域が見つからなかったり、破損している場合に表示される出力の種類を示しています。
# lvs -a -o +devices
  Couldn't find device with uuid 'FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk'.
  Couldn't find all physical volumes for volume group VG.
  Couldn't find device with uuid 'FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk'.
  Couldn't find all physical volumes for volume group VG.
  ...
上書きされている物理ボリュームの UUID は、/etc/lvm/archive ディレクトリーで見つけることができます。VolumeGroupName_xxxx.vg ファイルで、該当するボリュームで最後にアーカイブ化された、有効な LVM メタデータを確認します。
または、ボリュームを非アクティブ化し、partial (-P) 引数を設定すると、見つからない破損した物理ボリュームの UUID を見つけられる可能性があります。
# vgchange -an --partial
  Partial mode. Incomplete volume groups will be activated read-only.
  Couldn't find device with uuid 'FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk'.
  Couldn't find device with uuid 'FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk'.
  ...
pvcreate コマンドで、--uuid--restorefile 引数を使用して、物理ボリュームを復元します。以下の例では、/dev/sdh1 デバイスを上記の UUID (FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk) を持つ物理ボリュームとしてラベル付けします。このコマンドは、ボリュームグループ用の最近の正しいアーカイブのメタデータ VG_00050.vg に含まれているメタデータ情報で、物理ボリュームラベルを復元します。restorefile 引数は pvcreate コマンドに対して、ボリュームグループ上の古いものと互換性のある物理ボリュームを作成するように指示し、古い物理ボリュームのデータが含まれていた場所に新しいメタデータを配置しないようにします。(これは、たとえば元の pvcreate コマンドが、メタデータの配置を制御をするコマンドライン引数を使用していた場合や、物理ボリュームが複数の異なるデフォルトを使用するソフトウェアの別バージョンを使用して作成されていた場合などに発生する可能性があります)。pvcreate コマンドは LVM メタデータ領域のみを上書きし、既存のデータ領域には影響を与えません。
# pvcreate --uuid "FmGRh3-zhok-iVI8-7qTD-S5BI-MAEN-NYM5Sk" --restorefile /etc/lvm/archive/VG_00050.vg /dev/sdh1
  Physical volume "/dev/sdh1" successfully created
次に、vgcfgrestore コマンドを使用して、ボリュームグループのメタデータを復元することができます。
# vgcfgrestore VG
  Restored volume group VG
これで論理ボリュームが表示できるようになります。
# lvs -a -o +devices
  LV     VG   Attr   LSize   Origin Snap%  Move Log Copy%  Devices
  stripe VG   -wi--- 300.00G                               /dev/sdh1 (0),/dev/sda1(0)
  stripe VG   -wi--- 300.00G                               /dev/sdh1 (34728),/dev/sdb1(0)
以下のコマンドはボリュームをアクティブにし、アクティブになったボリュームを表示します。
# lvchange -ay /dev/VG/stripe
# lvs -a -o +devices
  LV     VG   Attr   LSize   Origin Snap%  Move Log Copy%  Devices
  stripe VG   -wi-a- 300.00G                               /dev/sdh1 (0),/dev/sda1(0)
  stripe VG   -wi-a- 300.00G                               /dev/sdh1 (34728),/dev/sdb1(0)
オンディスク LVM メタデータが、それを書き換えるデータと同じ容量である場合は、このコマンドで物理ボリュームを復元できます。メタデータの書き換えがメタデータ領域を超える場合、ボリューム上のデータは影響を受ける可能性があります。そのデータを復元するには、fsck コマンドを使用することができます。