IT技術互動交流平臺

虛擬化系列之二 建虛擬機

來源:IT165收集  發布日期:2016-05-10 22:32:35
本文 參考地址 從Xen Host Kernel復制出一個半虛擬化的guest

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多個虛擬機了。

 

遇到的問題: 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
Tag標簽: 虛擬化系列之二   建虛擬機  
  • 專題推薦

About IT165 - 廣告服務 - 隱私聲明 - 版權申明 - 免責條款 - 網站地圖 - 網友投稿 - 聯系方式
本站內容來自于互聯網,僅供用于網絡技術學習,學習中請遵循相關法律法規
香港最快开奖现场直播结果