XenServer 6.2 VM CPU 和内存使用率 100%,无法启动

XenServer 6.2 VM CPU 和内存使用率 100%,无法启动

今天停电后我遇到了这个问题。

我有 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 域或类似的东西)。

我希望它能对某些人有所帮助,并随意编辑它并清除我不知道的概念。

相关内容