今天停电后我遇到了这个问题。
我有 2 个虚拟机,其中一个无法启动,并且使用了 100% 的 CPU 和 100% 的内存。
由于它很难解决(至少对我来说),我想在这里详细介绍我为修复它所采取的步骤,混合了许多教程。
答案1
我也有这个问题。这对我有帮助:
问题可能是由于 GRUB 没有发送信号视频。
我已经看到很多关于此问题的帖子,我的虚拟机很可能卡住了在这个 GRUB 屏幕上,你必须选择要启动的操作系统(鉴于他们按 Enter 键启动)。
https://askubuntu.com/questions/372164/how-to-load-ubuntu-server-automatically-in-grub
因为我在非虚拟化电脑上断电后也发生过这种情况。
只需单击空白区域,按回车键,它就会开始启动。
答案2
首先,我尝试使用 Ubuntu 服务器安装 CD 并转到“恢复损坏的系统”,然后尝试重新安装 GRUB,但失败了。
然后我使用强制关机关闭了故障的虚拟机。
其次,在 XenCenter 控制台中列出虚拟机
[root@xen01 ~]# xe vm-list
uuid ( RO) : d56d5ae8-62de-5e7e-41f9-1bd707d727d9
name-label ( RW): fdev-appgw
power-state ( RO): halted
uuid ( RO) : 87aba275-0e05-4160-bebf-efc85fe93386
name-label ( RW): fdev-tracker
power-state ( RO): halted
uuid ( RO) : c81439c2-a345-4f04-947e-34554718ce7e
name-label ( RW): Control domain on host: fdev-xen01
power-state ( RO): running
fdev-tracker 是失败的。
列出了它的磁盘。我必须承认我不知道为什么这里有 2 个磁盘,因为我对 Linux 还比较陌生。但我使用了第一个,即显示设备:hdb 的那个
[root@xen01 ~]# xe vbd-list vm-name-label=fdev-tracker
uuid ( RO) : d461e06d-9cc3-7762-f141-0b3d2abe7b3c
vm-uuid ( RO): 87aba275-0e05-4160-bebf-efc85fe93386
vm-name-label ( RO): fdev-tracker
vdi-uuid ( RO): 92dd9489-b450-4766-8853-b8b2fc9597ad
empty ( RO): false
device ( RO): hdb
uuid ( RO) : 969fc0c8-1fcf-ed2c-ed6e-a71dc3c359d9
vm-uuid ( RO): 87aba275-0e05-4160-bebf-efc85fe93386
vm-name-label ( RO): fdev-tracker
vdi-uuid ( RO): ba9e2ed8-c9db-4f95-8f14-2d51c99ea992
empty ( RO): false
device ( RO): hdd
之后,我输入了这些命令,以便能够将磁盘挂载到我的其他 Linux VM 中。我不知道它们到底是做什么的,但教程就是这样说的。请注意,d56d5ae8-62de-5e7e-41f9-1bd707d727d9 是在职的VM。我之前遇到过问题,因为教程没有明确说明这一点。92dd9489-b450-4766-8853-b8b2fc9597ad 是失败机器 VDI。
[root@xen01 ~]# xe vbd-create vm-uuid=d56d5ae8-62de-5e7e-41f9-1bd707d727d9 vdi-uuid=92dd9489-b450-4766-8853-b8b2fc9597ad device=autodetect
91022555-2b86-4faf-cce1-eb62efc8aab7
它输出一个 UUID。我用它将其插入正在工作的机器。
[root@xen01 ~]# xe vbd-plug uuid=91022555-2b86-4faf-cce1-eb62efc8aab7
之后我通过 ssh 连接了正在工作的虚拟机并输入parted
:
jsivil@appgw:/proc$ sudo parted
GNU Parted 2.3
Using /dev/xvda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print devices
/dev/xvda (10,7GB)
/dev/xvdb (21,5GB)
(parted) quit
/dev/xvdb
这个 21 GB 的磁盘是故障虚拟机的磁盘。
我尝试对它进行 fsck:
jsivil@appgw:/proc$ sudo fsck -p -c -v -f /dev/xvdb
fsck from util-linux 2.20.1
fsck.ext2: Bad magic number in super-block while trying to open /dev/xvdb
/dev/xvdb:
The superblock could not be read or does not describe a valid ext2/ext3/ext4
filesystem. If the device is valid and it really contains an ext2/ext3/ext4
filesystem (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
e2fsck -b 8193 <device>
or
e2fsck -b 32768 <device>
但我记得格式化时它有 2 个分区,一个用于整个文件系统 (ext4),另一个用于交换 (我认为是 ext3)。所以也许这造成了麻烦。
然后我看到了另一个教程,它使用一个名为的程序kpartx
。我没有它,所以我做了:
sudo apt-get install kpartx
然后我做了:
jsivil@appgw:/proc$ sudo kpartx -a /dev/xvdb
似乎它使分区可见或类似的东西。它们现在位于 /dev/mapper/
jsivil@appgw:/proc$ sudo fsck -p -c -v -f /dev/mapper/ #tab press
control xvdb1 xvdb2 xvdb5
So I made the fsck on all xvdb*:
jsivil@appgw:/proc$ sudo fsck -p -c -v -f /dev/mapper/xvdb1
fsck from util-linux 2.20.1
/dev/mapper/xvdb1: Updating bad block inode.
126881 inodes used (10.05%, out of 1262320)
65 non-contiguous files (0.1%)
120 non-contiguous directories (0.1%)
# of inodes with ind/dind/tind blocks: 0/0/0
Extent depth histogram: 117890/29
778957 blocks used (15.43%, out of 5047040)
0 bad blocks
1 large file
99695 regular files
17528 directories
55 character device files
25 block device files
0 fifos
28 links
9564 symbolic links (8869 fast symbolic links)
5 sockets
------------
126900 files
jsivil@appgw:/proc$ sudo fsck -p -c -v -f /dev/mapper/xvdb
xvdb1 xvdb2 xvdb5
jsivil@appgw:/proc$ sudo fsck -p -c -v -f /dev/mapper/xvdb2
fsck from util-linux 2.20.1
fsck.ext2: Attempt to read block from filesystem resulted in short read while trying to open /dev/mapper/xvdb2
Could this be a zero-length partition?
jsivil@appgw:/proc$ sudo fsck -p -c -v -f /dev/mapper/xvdb5
fsck from util-linux 2.20.1
fsck: fsck.swap: not found
fsck: error 2 while executing fsck.swap for /dev/mapper/xvdb5
我不知道为什么它在 xvdb2 上失败了(也不知道是什么原因,因为对我来说它应该只有 2 个分区)。xvdb5 是交换分区,所以这并不重要。接下来,我尝试挂载以查看我是否能够看到我的文件(我可以使用 Ubuntu Server CD),但我很好奇。
cd to /run/shm
jsivil@appgw:/run/shm$ mkdir /run/shm/a
jsivil@appgw:/run/shm$ sudo mount -t ext4 /dev/mapper/xvdb1 a
我 cd 到“a”处,所有内容都在那里。我将其卸载。
接下来,我返回有关 XenServer 的主要指南,并尝试将其从 VM 中拔出
[root@xen01 ~]# xe vbd-unplug uuid=91022555-2b86-4faf-cce1-eb62efc8aab7
The VM rejected the attempt to detach the device.
type: VBD
ref: 91022555-2b86-4faf-cce1-eb62efc8aab7
msg:
似乎正在工作的虚拟机中的某些先前步骤已使磁盘处于“正在使用”状态或类似状态。
所以我重启了正在运行的虚拟机。尝试再次重启,但虚拟机仍在重启。所以我又遇到了一个错误。等到它完成后,我就可以这样做了。
[root@xen01 ~]# xe vbd-unplug uuid=91022555-2b86-4faf-cce1-eb62efc8aab7
You attempted an operation on a VM which requires PV drivers to be installed but the drivers were not detected.
vm: d56d5ae8-62de-5e7e-41f9-1bd707d727d9 (fdev-appgw)
[root@xen01 ~]# xe vbd-unplug uuid=91022555-2b86-4faf-cce1-eb62efc8aab7
[root@xen01 ~]# xe vbd-destroy uuid=91022555-2b86-4faf-cce1-eb62efc8aab7
完成所有这些后,我尝试启动失败机器,但是我没有运气 :( 存在同样的问题,100% CPU 和 100% 内存。
我放入 Ubuntu Server 安装 CD(我将其放在 ISO 存储中)并强制重启。进入“救援损坏的系统”,并将 xvdb1 安装为我的根文件系统。之后,我转到“重新安装 GRUB”。记得之前失败了,但这次成功了。
我弹出了 CD 并重新启动。
我的虚拟机又可以工作了!!!
这似乎是一个罕见的问题,因为我找不到太多关于此问题的信息,只有一个人在 ServerFault 上找到,但没有可行的答案(例如破坏 vm 域或类似的东西)。
我希望它能对某些人有所帮助,并随意编辑它并清除我不知道的概念。