今天我决定升级Proxmox 虚拟环境 (PVE) 从 V6.2.4 到 V7.1。我是按照以下步骤做的:
- 首先升级到最新的 6.x 版本,然后
apt-get update
是apt-get upgrade-dist
. - 我按照以下步骤操作:将 Proxmox VE 从 6.x 升级到 7.0
在升级过程中,我遇到了一些关于“未找到磁盘”的错误,我很担心,但升级仍在继续。 (也许和我现在遇到的问题有关系。)升级完成后,我重新启动主机以完成升级。 LXC 容器已启动(启动时启动),没有任何问题。一些虚拟机(启动时启动)也可以直接工作。
Boot failed: not a bootable disk
一些虚拟机在控制台中给出错误并不断重新启动。经过一番谷歌尝试后,我在某个地方发现了一个帖子,它有时有助于重新启动主机,所以我又做了一次,之后全部虚拟机给出了相关错误。我用谷歌搜索了几个小时,发现了很多类似的问题。对大多数虚拟机来说唯一有效的是恢复备份。不幸的是,这对于最重要的机器——邮件服务器来说不起作用。它包含 170 GB 的邮件,我唯一的备份是“proxmox 备份”(images.7x)。它们都不起作用,因为它们都给出了相同的问题。
问题:
- 如何让虚拟机再次启动?如果无法修复,有没有办法进入磁盘以便我获取数据?
- 这是怎么发生的?是我的错吗?这是一个错误吗?这是一个已知问题吗?
- 我不敢再重新启动 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
我可以“修复”分区表,以便服务器再次启动。之后,我能够将所有内容迁移到新的服务器上,以确保一切正常运行。我按照下面的步骤做到了。
- 使用以下命令启动服务器启动修复盘。
- 关闭自动启动的工具“启动修复”。
- 打开终端窗口并执行命令
sudo testdisk /dev/sda
。这将启动一个(命令行)工具来扫描磁盘 (sda) 中的分区。 - 使用 确认磁盘
Proceed
。 - 选择使用的分区表类型。我有一个“BIOS”磁盘,所以我需要
Intel
。如果您有“EUFI”磁盘,请选择EFI GPT
。 - 去
Analyse
分析你的磁盘。 - 继续
Quick search
执行快速扫描。根据磁盘的不同,这可能需要几秒钟到一个小时。 - 我认为在某些情况下 a
quick scan
会伸出援手,但我注意到 adeeper search
更准确并且增加了修复磁盘的机会。就我而言,这quick scan
还不够。
可能deep search
会发现多个分区。您可以使用 浏览文件P
。您可以通过选择..
或按 来返回Q
,但要小心;按Q
一次太多,您需要重新开始!
找到其中包含目录的分区,并使用箭头键(或)etc
将其标记为(主)分区。就我而言,第二个分区具有类似 Linux 的文件结构,因此我将其设置为“主要可启动” ,但我注意到并不总是找到该分区。如果没有找到,(在我的测试中)它会将目录所在的分区标记为主分区。 (请参见下面我的测试机的屏幕截图。)使用(继续)确认设置,然后将新的分区表写入磁盘。P
←→*
etc
P
EnterWrite
写入分区表后,打开引导修复工具(我们在开始时关闭了它)来修复 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。