码迷,mamicode.com
首页 > 其他好文 > 详细

虚拟化系列之二--创建虚拟机

时间:2016-05-12 14:28:36      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:

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=4
on_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多个虚拟机了。


遇到的问题:
1.执行virsh list命令时:
error: Failed to reconnect to the hypervisor
error: no valid connection
error: Failed to connect socket to ‘/var/run/libvirt/libvirt-sock‘: No such file or directory
解决办法:
yum -y install avahi
/etc/init.d/messagebus restart
/etc/init.d/avahi-daemon restart
/etc/init.d/libvirtd restart
/sbin/chkconfig messagebus on
/sbin/chkconfig avahi-daemon on

2.Error, some other host already uses address
解决办法:
  注释/etc/sysconfig/Network-scripts/ifup-eth文件内容:
         #if ! arping -q -c 2 -w 3 -D -I ${REALDEVICE} ${IPADDR} ; then
          #  net_log $"Error, some other host already uses address ${IPADDR}."
          #  exit 1
         #fi
service network restart

3.xl创建虚拟机复制目录时
cp -ax /{bin,dev,etc,lib,root,sbin,usr,var} /tmp/loop报错:
cp: preserving permissions for `/mnt/var/run/cups/certs/0‘: Operation not supported
解决办法:挂载时加参数-o rw,acl
mount -o loop /data/xen/xen2.img /tmp/loop -o rw,acl

4.创建第5台虚拟机的时候
Error: Device 2049 (vbd) could not be connected. Failed to find an unused loop device
解决办法:
MAKEDEV -v /dev/loop

虚拟化系列之二--创建虚拟机

标签:

原文地址:http://blog.csdn.net/javaofliang/article/details/51361584

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!