在我的 Debian 10(buster)XEN 主机中,我将使用 Debian jessie 的 Xen-VM 从 LVM 快照复制到新的 xen 来宾中,并尝试启动它。这就是我所做的:
第一次尝试
我创建了一台新机器xen-create-image
并通过 rsync 覆盖了所有文件。
现在我看到了这个错误:
libxl: error: libxl_bootloader.c:649:bootloader_finished: Domain 35:bootloader failed - consult logfile /var/log/xen/bootloader.35.log
$ cat /var/log/xen/bootloader.35.log
Traceback (most recent call last):
File "/usr/lib/xen-4.11/bin/pygrub", line 882, in <module>
raise RuntimeError, "Unable to find partition containing kernel"
RuntimeError: Unable to find partition containing kernel
我必须重新创建正确的引导加载程序吗?
或者我是否必须从快照到新映像的 rsync 中排除某些文件?
更新:
我也尝试过这个:
chroot 进入安装的新系统:
mount /dev/vg0/vm01.mail-test-disk /media/vm01.mail-test-disk/
mount -t proc none /media/vm01.mail-test-disk/proc
mount --rbind /dev /media/vm01.mail-test-disk/dev
mount -t sysfs sysfs /media/vm01.mail-test-disk/sys
chroot /media/vm01.mail-test-disk/ /bin/bash
在 chroot shell 中:
apt install grub-pc
--> 当询问时,选择 /dev/dm-33 (622770 MB; vg0-vm01.mail--test--disk) 并继续,尽管它似乎失败了
update-grub
新错误:
$ umount -l /media/vm01.mail-test-disk
$ xen create /etc/xen/vm01.mail-test.cfg
Parsing config from /etc/xen/vm01.mail-test.cfg
libxl: error: libxl_aoutils.c:478:libxl__openptys: openpty failed: No such file or directory
libxl: error: libxl_utils.c:1128:libxl__recvmsg_fds: recvmsg got EOF (ptys)
libxl: error: libxl_exec.c:118:libxl_report_child_exitstatus: openpty child [20919] exited with error status 255
libxl: error: libxl_create.c:1267:domcreate_rebuild_done: Domain 37:cannot (re-)build domain: -3
libxl: error: libxl_domain.c:1034:libxl__destroy_domid: Domain 37:Non-existant domain
libxl: error: libxl_domain.c:993:domain_destroy_callback: Domain 37:Unable to destroy guest
libxl: error: libxl_domain.c:920:domain_destroy_cb: Domain 37:Destruction of domain failed
我也尝试grub-xen
代替grub-pc
,但同样的错误。
Parsing config...
我现在总是遇到同样的错误,在创建任何其他图像时也是如此
xen create /etc/xen/...cfg
我重新开始,这次排除了重要文件夹
rsync -aAX --del --info=progress2 /media/vm01.mail-disk-snapshot/ /media/vm01.mail-test-disk/ --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found,/boot/*,/var/tmp/*,/var/cache/*,/usr/tmp/*}
这让我没有错误消息,但虚拟机无法访问:
$xen create /etc/xen/vm01.mail-test.cfg
Parsing config from /etc/xen/vm01.mail-test.cfg
$xl console vm01.mail-test
xenconsole: Could not read tty from store: Success
xentop
显示新创建的 VM 的 CPU 使用率为 99%
这部分的解决方案:
我发现,我通过挂载 /dev 文件夹破坏了正在运行的 Dom0 Xen 主机系统
mount --rbind /dev /media/vm01.mail-test-disk/dev
用于chroot
编辑新虚拟机(看这里)。重新启动修复了 /dev 并使用--bind
它来防止再次出现错误。
更新2:
我又试了一次格式化的启动 rsync 之前的卷,因此排除的文件夹是空的,而不包含引导 Debian 系统的内容:
mkfs.ext4 /dev/vg0/vm01.mail-test-disk
rsync -aAX --del --info=progress2 /media/vm01.mail-disk-snapshot/ /media/vm01.mail-test-disk/ --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found,/boot/*,/var/tmp/*,/var/cache/*,/usr/tmp/*}
现在虚拟机开始启动,我可以输入xen-console
,但现在我收到此错误:
[....] Activating swap...[ 6.228541] Adding 8388604k swap on /dev/xvda1. Priority:-2 extents:1 across:8388604k SSFS
done.
[ 6.282959] EXT4-fs (xvda2): re-mounted. Opts: (null)
[....] Checking root file system...fsck from util-linux 2.25.2
/dev/xvda2 has unsupported feature(s): metadata_csum
e2fsck: Get a newer version of e2fsck!
fsck exited with status code 8
failed (code 8).
[....] An automatic file system check (fsck) of the root filesystem failed. A manual fsck must be performed, then the system restarted. The fsck should be performed in maintenance mode with the root filesystem mounted in read-on
[FAILde. ... failed!
[warn] The root filesystem is currently mounted in read-only mode. A maintenance shell will now be started. After performing system maintenance, press CONTROL-D to terminate the maintenance shell and restart the system. ... (war
ning).
答案1
我找到了解决方案这里
在 jessie 主机上创建的 ext4 文件系统没有的功能,而拉伸服务器有。
- 元数据_csum
- 64位
所以这解决了我的最后一个问题:
e2fsck -f /dev/vg0/vm01.mail-test-disk
tune2fs -O ^metadata_csum /dev/vg0/vm01.mail-test-disk
# yes
tune2fs -O ^64bit /dev/vg0/vm01.mail-test-disk
resize2fs -s /dev/vg0/vm01.mail-test-disk