私の Proxmox 6.4 ホストには、250 GB の LVM シン プールがありました。そこに Ubuntu VM (ルート パーティションにも LVM を使用) を作成しましたが、誤ってオーバーサブスクライブしてしまったため、VM 内の PV は 500 GB に設定されました。
しばらくはすべて順調に動作していましたが、隠れた 250 GB の制限を超えてしまい、VM が I/O エラーでクラッシュし、起動できなくなりました。そこで、ディスクの回復を試みています。ディスクのパーティション テーブルはそのままのようです。
$ fdisk -l /dev/vm-disks/vm-101-disk-0
Disk /dev/vm-disks/vm-101-disk-0: 500 GiB, 536870912000 bytes, 1048576000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 65536 bytes / 65536 bytes
Disklabel type: gpt
Disk identifier: 30874BBC-0B29-4083-B5BF-E973C665D87F
Device Start End Sectors Size Type
/dev/vm-disks/vm-101-disk-0p1 2048 4095 2048 1M BIOS boot
/dev/vm-disks/vm-101-disk-0p2 4096 2101247 2097152 1G Linux filesystem
/dev/vm-disks/vm-101-disk-0p3 2101248 1048573951 1046472704 499G Linux filesystem
私は走った
$ kpartx -a /dev/vm-disks/vm-101-disk-0
/dev/mapper
内部の 3 つのパーティションのエントリを作成するとvm-101-disk-0
、動作します。以下を実行すると、
$ file -sL /dev/mapper/vm--disks-vm--101--disk--0p3
/dev/mapper/vm--disks-vm--101--disk--0p3: LVM2 PV (Linux Logical Volume Manager), UUID: fdOzWR-sPcy-hyYo-Lj2H-YEnZ-wK3c-J6biES, size: 535794024448
すると、ディスクの 3 番目のパーティション内に PV が表示されます。しかし、これをホストのどこかにマウントしてデータの回復を開始するにはどうすればよいでしょうか。明らかに、これはpvscan
別の LV 内にあるため、ホスト システムからは見えません。回復のために何かオプションがあるのでしょうか。それとも、VM が 500 GB であると認識していたが、実際にはそうではなかったということは、修復できないほど損傷したということでしょうか。
答え1
シン プールのスペースが使い果たされたときに、VM に書き込み I/O エラーが発生しました。VM の場合、ハード ディスクが予期せずすべての書き込みを拒否したように見えます。したがって、VM がベア ハードウェアである場合、最初のアクションは、新しいハード ディスクを見つけて、この不良ハード ディスクをそこにクローンすることです。HW が修正されたら、論理構造を修正できます。
仮想マシンの場合、ハードウェアが壊れていないので、シン ボリューム操作を復元することで「ハード ディスク」を「修復」できます。シン プールを拡大し、lvextend
シン プール LV を使用してスペースを追加します。
そして、完了したら、何らかのリカバリ (仮想) メディアから VM を起動し、標準のファイル システム リカバリを実行します。覚えておいてください。それほど難しいことではありません。最近のファイル システムは、一般にこの種の障害に耐えられるように設計されています。
シンLVMを監視します。データスペースの枯渇はそれほど大きな問題ではありませんが、メタデータ疲労はもっと大きな影響を及ぼす可能性があります。このような事態を起こさないようにしてください。