
破損したLVMシンプール/ボリュームの回復に関するアドバイスを聞きたいです。 LVMが薄くなるステップは次のとおりです。
- 私の仮想プールメタデータがいっぱいだったため(99.4%)、プールは固定されています。
- 次の2つのコマンドを使用して、プールとそのメタデータを拡張しようとしています。
lvextend -L+50G vg/pool lvextend --poolmetadata +50m vg/pool
- 現在、lvsはメタデータがまだ99.4%で停滞していることを示しています。
- メタデータを変更するには、lvconvert --repair vg / poolを試しました。
- 私のプールは空のように見え、lvsはプールとlvデータの0%を表示します。
- 編集する前にメタデータに戻ってみました
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