🔨

Proxmox VEのVMを破壊したときの対処

2024/10/03に公開

なにかやらかしてVMを破壊してブートしなくなった、GRUBにすらたどり着かない、みたいなときの対処方法。

※きちんと検証しているわけではないので、自己責任でお願いします。

前提環境

  • Proxmox VE 7.3
  • VM
    • Almalinux 9.4

ストレージのLVM設定をいじってリブートしたところ、Booting from Hard disk... の表示でハングアップしてまったく起動しなくなった。

まとめ

  • vzdumpのダンプされたVMファイルがあればそれを戻す(1番楽)
  • Proxmox WebUIから該当VMに対しiSOファイルをマウントして、そこから起動、レスキューモードに頼る
    • VM起動時にNoVNCで頑張ってEsc連打するとブートメニューに入れるので、マウントしたiSOファイルの優先度を上げる

レスキューモードでの対処

Almalinux9.4のiSOを使って対処した。
iSOからインストーラが起動したら、レスキューモードを選択する。
そこから指示に従ってシェルを起動する。

ファイルシステム周りの確認

# lsblk -f /dev/sda
ファイルシステムの状態をみる

システム上データ領域をLVMにして運用している場合、そのままLVM化しているパーティションに無理やりfsck等を実行するとデータが破損します。

とのこと。こわい。
LVMを壊さないように以下を実行する

# pvs
# vgchange -a y (VG領域有効化)
# lvs (状態確認)

該当するパーティションのマウントを試してみて、ファイルシステムが生きているかみる。

# mount /dev/vdaX /mnt (マウントを試す)
# mount --bind /dev /mnt/dev
# mount --bind /proc /mnt/proc
# mount --bind /sys /mnt/sys (chrootするのに必要なディレクトリを用意する。/binとか/lib, /lib64もやらないとだめかも)
# chroot /mnt

でたとえばalmalinux-homeみたいなLVがある場合、/dev/mapper 以下に既にマッパーデバイスができていることがある。
これをマウントできれば普通にデータを吸い出せる。

SSHサーバの設定

レスキューモードでsshサーバの待ち受けを設定できれば、ローカルにデータを吸い出すときに楽

# ip a
# nmcli con sh
# nmcli con mod <デバイス名> ipv4.method manual ipv4.addr <IPアドレス>/<PREFIX>
# nmcli con mod <デバイス名> ipv4.gateway <gateway>
# nmcli con up <デバイス名>
# nmcli con sh
# ip a
# systemctl restart NetworkManager (設定反映)

参考

Discussion