LVM:回復に失敗した後にLVMシンプール/ボリュームを回復する方法は?

LVM:回復に失敗した後にLVMシンプール/ボリュームを回復する方法は?

破損したLVMシンプール/ボリュームの回復に関するアドバイスを聞きたいです。 LVMが薄くなるステップは次のとおりです。

  1. 私の仮想プールメタデータがいっぱいだったため(99.4%)、プールは固定されています。
  2. 次の2つのコマンドを使用して、プールとそのメタデータを拡張しようとしています。 lvextend -L+50G vg/pool lvextend --poolmetadata +50m vg/pool
  3. 現在、lvsはメタデータがまだ99.4%で停滞していることを示しています。
  4. メタデータを変更するには、lvconvert --repair vg / poolを試しました。
  5. 私のプールは空のように見え、lvsはプールとlvデータの0%を表示します。
  6. 編集する前にメタデータに戻ってみました lvconvert --thinpool vg/pool --poolmetadata pool-meta0 が、まだデータはありません。

それでもこの問題から回復できますか?この流線型プールには、保存したいLVがかなりあります。

とても感謝しています!

ベストアンサー1

私の場合はlvextend --poolmetadata私に尋ねるので、変更は許可されません。手動修理™。だから私の場合にどのような効果があったかを説明します。

この場合、すべてのシステムパーティションはシンプロビジョニングされた論理ボリュームにあり、LUKS内のLVM暗号化物理的な分割。暗号化を使用していないユーザーは、cryptsetup手順2のコマンドをスキップできます。


1.システムドライブよりも容量が大きい追加ドライブを追加し、オペレーティングシステムのインストールメディアを使用してリカバリモードで起動し、パーティションをマウントせずにルートシェルを起動します。リカバリプロセス中の成功の可能性を高めるには、シンプロビジョニングをサポートするディストリビューションと最新のカーネルバージョンのインストーラを試してください(たとえば、CentOSやRedHatを介したFedora)。

2.追加のドライブを識別してマウントし、システム全体のバックアップイメージを実行し、暗号化されたパーティションをマウントします。

$ fdisk -l                                   #Identify drives and partitions

(私たちは使うでしょう/dev/sdaシステムドライブの場合、/dev/sdb追加ドライブとボリューム名この例では、LUKS ボリューム名の場合)

$ mount /dev/sdb1 /mnt                       #Mount the extra drive
$ cd /mnt
$ cat /dev/sda > sda.img                     #Back up the system drive
$ sha256sum /dev/sda > sda.sum
$ sed -i 's/\/dev\/sda/.\/sda.img/g' sda.sum
$ sha256sum -c sda.sum                       #Verify backup integrity
$ cryptsetup open /dev/sda2 volname          #Mount encrypted LVM

三。この時点で、一部のディストリビューションは論理ボリュームを自動的にアクティブにしようとする可能性があり、これによりlvsコマンドがvgs中断pvsされ、論理ボリュームが使用できなくなります。このステップでは、プロセスが終了し、論理ボリュームが正しい状態に切り替わります。

$ ps aux | grep scan                         #Look for 'lvm pvscan' or similar
root     1234  0.0  0.0    64843  9472 ?    Ss   11:11   0:02 /usr/sbin/lvm pvscan -a ...

$ kill -9 1234                               #Get the PID and kill it with fire
$ pvscan                                     #Scan without activating volumes

VGそしてプール00ボリュームグループと仮想プール名に対応)

$ lvchange -an vg                            #Deactivate entire volume group
$ lvchange -pr -ay vg/pool00_tmeta           #Activate metadata in readonly mode

4.これで、メタデータ用の新しい論理ボリュームを作成して回復します。

$ lvs -a --units m | grep pool00_tmeta       #Get the current metadata size
  [pool00_tmeta]                       vg ewu-ai----    128.00m
    
$ lvcreate -L 256M -n pool00R vg             #Create a larger logical volume
$ lvchange -ay vg/pool00R                   #Activate the new logical volume
$ thin_repair -i /dev/vg/pool00_tmeta -o /dev/vg/pool00R
$ thin_check /dev/vg/pool00R                 #Verify it's been repaired properly

5.最後に、仮想プールのメタデータ論理ボリュームを交換し、古いボリュームを削除します。

$ lvchange -an vg                            #Deactivate all LVs again
$ lvconvert --thinpool vg/pool00 --poolmetadata vg/pool00R
$ lvs -a --units m | grep pool00_tmeta       #Verify the LVs have been swapped
  [pool00_tmeta]                       vg ewu-ai----    256.00m

$ lvremove vg/pool00R                        #Get rid of the damaged metadata

プロセス中に問題が発生した場合は、次のように追加のドライブからバックアップを復元できます。

$ cat /mnt/sda.img > /dev/sda

おすすめ記事