从 Promox 6.x 升级到 7.x 后,VM“不是可启动磁盘”

从 Promox 6.x 升级到 7.x 后,VM“不是可启动磁盘”

今天我决定升级Proxmox 虚拟环境 (PVE) 从 V6.2.4 到 V7.1。我是按照以下步骤做的:

  1. 首先升级到最新的 6.x 版本,然后apt-get updateapt-get upgrade-dist.
  2. 我按照以下步骤操作:将 Proxmox VE 从 6.x 升级到 7.0

在升级过程中,我遇到了一些关于“未找到磁盘”的错误,我很担心,但升级仍在继续。 (也许和我现在遇到的问题有关系。)升级完成后,我重新启动主机以完成升级。 LXC 容器已启动(启动时启动),没有任何问题。一些虚拟机(启动时启动)也可以直接工作。

未指定的屏幕截图 - 可能来自启动或升级(?)

Boot failed: not a bootable disk一些虚拟机在控制台中给出错误并不断重新启动。经过一番谷歌尝试后,我在某个地方发现了一个帖子,它有时有助于重新启动主机,所以我又做了一次,之后全部虚拟机给出了相关错误。我用谷歌搜索了几个小时,发现了很多类似的问题。对大多数虚拟机来说唯一有效的是恢复备份。不幸的是,这对于最重要的机器——邮件服务器来说不起作用。它包含 170 GB 的邮件,我唯一的备份是“proxmox 备份”(images.7x)。它们都不起作用,因为它们都给出了相同的问题。

问题:

  1. 如何让虚拟机再次启动?如果无法修复,有没有办法进入磁盘以便我获取数据?
  2. 这是怎么发生的?是我的错吗?这是一个错误吗?这是一个已知问题吗?
  3. 我不敢再重新启动 Proxmox,因为我担心其他虚拟机也会永久损坏。我如何确定这种情况不会再次发生?或者至少确保备份有效!

一些重要的事实:

  • 我 100% 确定在 Proxmox 升级之前所有工作的虚拟机都已找到
  • 在执行任何更新相关命令之前,我将每台计算机创建到网络共享(备份服务器)的备份
  • 备份是通过 Proxmox Web 界面进行的
  • 所有虚拟机都在 Ubuntu 20.04 LTS 上运行,包括邮件服务器
  • 我尝试将BIOS设置为UEFI(没有成功)
  • 我不是 Proxmox Pro 用户,因此如果需要额外数据,请解释我如何获取它以避免不必要的帖子

错误:

    计算机 UUID a238b981-27dd-4ebd-acee-1a9ee97d66a11
    从硬盘启动...
    启动失败:不是可启动磁盘
    
    [手动转录自这个图片.]

pveversion -v 输出

root@hv1:/home/axxmin# pveversion -v
proxmox-ve: 7.1-1 (running kernel: 5.13.19-2-pve)
pve-manager: 7.1-8 (running version: 7.1-8/5b267f33)
pve-kernel-helper: 7.1-6
pve-kernel-5.13: 7.1-5
pve-kernel-5.4: 6.4-11
pve-kernel-5.3: 6.1-6
pve-kernel-5.13.19-2-pve: 5.13.19-4
pve-kernel-5.4.157-1-pve: 5.4.157-1
pve-kernel-5.4.41-1-pve: 5.4.41-1
pve-kernel-5.3.18-3-pve: 5.3.18-3
pve-kernel-5.3.18-2-pve: 5.3.18-2
ceph-fuse: 14.2.21-1
corosync: 3.1.5-pve2
criu: 3.15-1+pve-1
glusterfs-client: 9.2-1
ifupdown: residual config
ifupdown2: 3.1.0-1+pmx3
ksm-control-daemon: 1.4-1
libjs-extjs: 7.0.0-1
libknet1: 1.22-pve2
libproxmox-acme-perl: 1.4.0
libproxmox-backup-qemu0: 1.2.0-1
libpve-access-control: 7.1-5
libpve-apiclient-perl: 3.2-1
libpve-common-perl: 7.0-14
libpve-guest-common-perl: 4.0-3
libpve-http-server-perl: 4.0-4
libpve-storage-perl: 7.0-15
libqb0: 1.0.5-1
libspice-server1: 0.14.3-2.1
lvm2: 2.03.11-2.1
lxc-pve: 4.0.11-1
lxcfs: 4.0.11-pve1
novnc-pve: 1.2.0-3
proxmox-backup-client: 2.1.2-1
proxmox-backup-file-restore: 2.1.2-1
proxmox-mini-journalreader: 1.3-1
proxmox-widget-toolkit: 3.4-4
pve-cluster: 7.1-2
pve-container: 4.1-3
pve-docs: 7.1-2
pve-edk2-firmware: 3.20210831-2
pve-firewall: 4.2-5
pve-firmware: 3.3-3
pve-ha-manager: 3.3-1
pve-i18n: 2.6-2
pve-qemu-kvm: 6.1.0-3
pve-xtermjs: 4.12.0-1
qemu-server: 7.1-4
smartmontools: 7.2-pve2
spiceterm: 3.2-2
swtpm: 0.7.0~rc1+2
vncterm: 1.7-1
zfsutils-linux: 2.1.1-pve3

有关备份的备份配置:

balloon: 6144 
boot: cdn 
bootdisk: sata0 
cores: 2 
ide2: none,
media=cdrom 
memory: 12288 
name: axx-mcow-srv01 
net0: virtio=4E:86:95:6A:FC:46,bridge=vmbr20,
firewall=1 
numa: 0 
onboot: 1
ostype: l26 
sata0: vm_instances:vm-140-disk-0,size=200G 
scsihw: virtio-scsi-pci 
smbios1: uuid=a238b981-27dd-4ebd-acee-1a9ee97d66a1 
sockets: 1 
vmgenid: 971eb84d-7502-4a68-97af-66c595c011b9 #qmdump#map:sata0:drive-sata0:vm_instances:raw:

虚拟机配置

root@hv1:~# qm config 140
balloon: 6144
boot: cdn
bootdisk: sata0
cores: 2
ide2: none,media=cdrom
memory: 12288
name: axx-mcow-srv01
net0: virtio=4E:86:95:6A:FC:46,bridge=vmbr20,firewall=1
numa: 0
onboot: 1
ostype: l26
sata0: vm_instances:vm-140-disk-0,size=200G
scsihw: virtio-scsi-pci
smbios1: uuid=a238b981-27dd-4ebd-acee-1a9ee97d66a1
sockets: 1
vmgenid: 66102f99-158b-451b-a8e2-187ebed7b183

更新1

我找到了一个页面备份后 - 启动失败:不是可启动磁盘 在 Proxmox 支持论坛上,这对我的理解是有意义的。由于我没有分区表的单独备份,所以我找到了一个“启动修复盘”。这并没有修复我的虚拟机,但给了我一些可能有用的额外信息。

屏幕截图 – “有用”的信息(?)

屏幕截图 – 更多信息


更新2

使用 GParted live 启动后,我可以说分区表消失了。我尝试用以下命令重建它testdisk恢复损坏或损坏的 Linux 分区表),但这不起作用。
测试盘结果
是否可以创建一个具有完全相同配置(包括磁盘大小)的虚拟机并在其上安装 Ubuntu(与我们始终使用默认值相同的磁盘设置)并将该分区表复制到“损坏的”服务器?

答案1

我可以“修复”分区表,以便服务器再次启动。之后,我能够将所有内容迁移到新的服务器上,以确保一切正常运行。我按照下面的步骤做到了。

  1. 使用以下命令启动服务器启动修复盘
  2. 关闭自动启动的工具“启动修复”。
  3. 打开终端窗口并执行命令sudo testdisk /dev/sda。这将启动一个(命令行)工具来扫描磁盘 (sda) 中的分区。
  4. 使用 确认磁盘Proceed
  5. 选择使用的分区表类型。我有一个“BIOS”磁盘,所以我需要Intel。如果您有“EUFI”磁盘,请选择EFI GPT
  6. Analyse分析你的磁盘。
  7. 继续Quick search执行快速扫描。根据磁盘的不同,这可能需要几秒钟到一个小时。
  8. 我认为在某些情况下 aquick scan会伸出援手,但我注意到 adeeper search更准确并且增加了修复磁盘的机会。就我而言,这quick scan还不够。

可能deep search会发现多个分区。您可以使用 浏览文件P。您可以通过选择..或按 来返回Q,但要小心;按Q一次太多,您需要重新开始!

找到其中包含目录的分区,并使用箭头键(或)etc将其标记为(主)分区。就我而言,第二个分区具有类似 Linux 的文件结构,因此我将其设置为“主要可启动” ,但我注意到并不总是找到该分区。如果没有找到,(在我的测试中)它会将目录所在的分区标记为主分区。 (请参见下面我的测试机的屏幕截图。)使用(继续)确认设置,然后将新的分区表写入磁盘。P*etcPEnterWrite

测试磁盘的屏幕截图

写入分区表后,打开引导修复工具(我们在开始时关闭了它)来修复 Linux 引导加载程序 (GRUB)。您可以使用 执行修复Recommended repair。如果此选项不可用,请重新启动引导修复工具,因为它在分区表扫描期间可能仍处于活动状态。

       启动修复对话框,显示“推荐修复”按钮

我可以像这样修复我们的邮件服务器。我通过一些测试机器上的工作备份恢复了(损坏的)机器的备份。我能够修复所有(5)台我测试过的机器。

我希望这个答案可以帮助其他人。

答案2

非常感谢您发布您的解决方案 - 救了我的命!

情况:在 Proxmox 7.2-7 环境中采用了 5 个 Debian LAMP VM(CPU 资源),并重新启动它们以使更改生效。它们都没有启动,都无法启动,并出现众所周知的“不是可启动磁盘”错误。就我而言,修复过程中有两个细节不同:

sudo testdisk /dev/sda失败并显示消息:“无法打开文件或设备 /dev/sda:不是目录”,尽管有问题的设备是 sda。解决方案:刚刚输入sudo testdisk,在日志记录选项之后我可以选择/dev/sda

快速测试结果如下:

    Partition               Start        End    Size in sectors
>*Linux                    0  32 33   121 157 36    1951744 [boot]
P Linux                  121 157 37  3161  11 50   48828416 [system]
P Linux Swap            3161  11 51  3647  99 36    7813120
L Linux                 3647 164 38 13054  10 12  151113728 [data1]

我不需要改变/切换任何东西;只需使用 转到下一个屏幕Enter,然后选择“写入”。从那里开始,它的工作方式就像上面写的那样。

也许我的小提示也可以帮助别人。

这被跟踪为Proxmox 错误 2874

相关内容