标签:
1. img和swap
创建一个50G的用于根文件系统的 img
# dd if=/dev/zero of=/data/xen/xen1.img bs=1M seek=51200 count=0
格式化成ext3
# mkfs -t ext3 /data/xen/xen1.img
创建一个2G的用于swap交换的img
# dd if=/dev/zero of=/data/xen/xen1..swap bs=1M seek=2048 count=0
格式化为swap
# mkswap /data/xen/xen1.swap
2.复制Host的根文件系统到guest的根文件系统img中
# mkdir /tmp/loop
# mount -o loop =/data/xen/xen1.img /tmp/loop -o rw,acl
# cp -ax /{bin,dev,etc,lib,lib64,root,sbin,usr,var} /tmp/loop
这里要非常注意!!!在x86_64中一定要记得复制/lib64,因为lib64中有一些系统必须的链接库。
创建剩余的文件夹
# mkdir /tmp/loop/{home,proc,opt,sys.tmp}
# chmod 777 /tmp/loop/tmp
3.修改guest root filesystem中的一些文件
/tmp/loop/etc/fstab:
/dev/xvda1 / ext3 defaults 1 1 /dev/xvda2 none swap sw 0 0 none /dev/pts devpts gid=5,mode=620 0 0 none /dev/shm tmpfs defaults 0 0 none /proc proc defaults 0 0 none /sys sysfs defaults 0 0
注意这些文件中保存的用户信息和主机信息
/tmp/loop/etc/passwd/tmp/loop/etc/group
/tmp/loop/etc/hosts
修改网络配置
/tmp/loop/etc/sysconfig/network 修改HOSTNAME=xen1,
/etc/sysconfig/network-scripts/ifcfg-eth0 设置一个和Host br0在同一个网段的IP,还要删掉UUID和HWADDR,要不然和host端的硬件地址一样了。或者是在通过控制台连接到虚拟机后再修改也可以。
卸载guest的根目录
# umount /tmp/loop/
4.创建一个xen虚拟机配置文件/etc/xen/xen1.cfg
指定启动内核为Host的内核文件
kernel="/boot/vmlinuz-3.18.25-19.el6.x86_64"ramdisk="/boot/initramfs-3.18.25-19.el6.x86_64.img"name="xen1"memory="4096"disk = [‘tap:aio:/data/xen/xen1.img,xvda1,w‘, ‘tap:aio:/data/xen/xen1.swap,xvda2,w‘]vcpus=4on_reboot="restart"on_crash="destroy"root="/dev/xvda1 ro"extra="selinux=0"vif=["bridge=br1"]
需要注意的是,在启动虚拟机的时候可能会报出dracut: chroot: failed to run command `/sbin/load_policy‘: No such file or directory,这就是因为clone根文件系统时没有把/lib64复制到guest中造成的,参考http://marc.info/?l=xen-users&m=135907220030809。
5.启动并控制台连接到虚拟机
不要用xl create,virsh create创建虚拟机用virsh define!我用前两中方法创建虚拟机没问题,但是关闭虚拟机后就找不到了!
用virsh define创建虚拟机
将/etc/xen/下的配置文件转换为virsh的配置文件
virsh -c xen:/// domxml-from-native xen-xl xen1.cfg >xen1.xml
创建虚拟机
virsh define xen1.xml
最后出现登录提示,使用Host OS的帐号密码登录即可
CentOS release 6.6 (Final)
Kernel 3.14.42-1.el6xen.x86_64 on an x86_64
centos6-1 login:
6.这样我们就可以通过复制已经创建好的guest的根文件系统img和swap,并且复制修改一个xen客户机配置文件,修改好根文件系统中的一些文件如fstab和network,就可以很方便地clone多个虚拟机了。
解决办法:
MAKEDEV -v /dev/loop
标签:
原文地址:http://blog.csdn.net/javaofliang/article/details/51361584