Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

6.4. 復原實體卷冊的 Metadata

若實體卷冊的卷冊群組 metadata 區域不小心被覆寫或損毀的話,您將會看見一則顯示 metadata 區域不正確,或是系統無法找到含有某個 UUID 的實體卷冊的錯誤訊息。您可藉由在實體卷冊上編寫新的 metadata 區域,指定和遺失的 metadata 相同的 UUID 來恢復實體卷冊的資料。

警告

您不該以一個可運作的 LVM 邏輯卷冊來嘗試這項程序。若您指定了錯誤的 UUID,您將會遺失您的資料。
下列範例顯示了當 metadata 遺失或損毀時您所可能會看見的輸出。
# 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.
  ...
您可能能夠透過查看 /etc/lvm/archive 目錄來找尋被覆寫的實體卷冊的 UUID。若要找尋特定卷冊群組最後一個已知、有效、壓縮過的 LVM metadata,請查看 VolumeGroupName_xxxx.vg 檔案。
此外,您可能會發現停用卷冊並設置 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 中的 metadata 資訊(卷冊群組最近期良好封存的 metadata)來將實體卷冊的標籤恢復。restorefile 引數會指示 pvcreate 指令使新的實體卷冊能和卷冊群組上的舊實體卷冊相容,並確保新的 metadata 不會被放置在舊實體卷冊包含著資料的位置上(這是有可能會發生的,比方說在原始的 pvcreate 指令有使用控制 metadata 定位的指令列引數的情況下,或是實體卷冊原本是透過使用不同預設值的不同版本軟體來建立的情況下)。pvcreate 指令只會將 LVM metadata 區域覆寫,而不會影響到現有的資料區域。
# 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 指令來儲存卷冊群組的 metadata。
# 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
[root@link-07 backup]# 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)
若 on-disk 的 LVM metadata 所需容量和將它覆寫的資料相同,這項指令便可將實體卷冊復原。若將 metadata 覆寫的資料超過了 metadata 範圍,那麼卷冊上的資料就可能會被影響到。您可能能夠透過使用 fsck 指令來將資料復原。