设为首页 收藏本站
查看: 1482|回复: 0

[经验分享] 从Xen Host Kernel复制出一个半虚拟化的Guest

[复制链接]

尚未签到

发表于 2015-10-12 08:00:22 | 显示全部楼层 |阅读模式
  在《


创建并启动一个xen半虚拟化PV客户机


》一文中讲解了如何从Ubuntu的http源安装半虚拟化的xen guest OS,核心思想是先下载客户机的vmlinuz和initrd,启动xen虚拟机后将会选择ubuntu网络源,进行在线安装。后来准备做几个guest副本时,发现这种在逻辑卷中安装的guest好像难以复制(暂时不知道,主要是不知道如何mount这个逻辑卷,因为它又被分成了Linux和Swap格式),看如下图,该虚拟机使用的一个lv_domU2:  
DSC0000.png


  为了能够方便复制出多个半虚拟化guest,又重新研究和实验了在img中安装guest,这种方式下安装完一个Guest后,我们只需要复制这个guest的img和xen配置文件即可。
  这种方法主要参考了:http://www.virtuatopia.com/index.php/Building_a_Xen_Virtual_Guest_Filesystem_on_a_Disk_Image_(Cloning_Host_System)。从Xen
Host复制出一个Guest。
  前提:安装完kernel-xen和xen4.5,并且xl info查看没问题。
  1)为guest创建root img和swap
  创建一个20G的用于根文件系统的 img


  # dd if=/dev/zero of=centos1.img bs=1M seek=20480 count=0
  然后格式化成Linux 83文件系统格式
  # mkfs -t ext3 centos1.img
  创建一个2G的用于swap交换的img
  # dd if=/dev/zero of=centos1.swap bs=1M seek=2048 count=0
  格式化为swap
  # mkswap centos1.swap
  2)复制Host的根文件系统到guest的根文件系统img中
  # mkdir /tmp/loop
  # mount -o loop centos1.img /tmp/loop
  # 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=centos6-1,GATEWAY=192.168.122.1(xenbr0的IP)
  /tmp/loop/etc/sysconfig/network-scripts/ifcfg-eth0 设置一个和Host xenbr0在同一个网段的IP,还要删掉UUID和HWADDR,要不然和host端的硬件地址一样了。或者是在通过控制台连接到虚拟机后再修改也可以。
  exported for NFS access to remote systems文件
  /tmp/loop/etc/exports
  卸载guest的根目录
  # umount /tmp/loop/
  4)创建一个xen虚拟机配置文件centos1.cfg
  为了避免SCSI模块又报错,我们重新生成一个initrd,参考http://www.virtuatopia.com/index.php/A_Xen_Guest_OS_fails_to_boot_with_a_%22switchroot:_mount_failed:_No_such_file_or_directory_error_message%22_error_message.:
  

mkinitrd --omit-scsi-modules --with=xennet --with=xenblk --preload=xenblk initrd-$(uname -r)-no-scsi.img $(uname -r)
  
  指定启动内核为Host的内核文件
  

kernel = "/boot/vmlinuz-3.14.42-1.el6xen.x86_84"
ramdisk = "/boot/initrd-3.14.42-1.el6xen.x86_64.img"
memory = 1024
name = "centos1"
vif = [ 'bridge=xenbr0' ]
disk = ['tap:aio:/path/to/centos1.img,xvda1,w', 'tap:aio:/path/to/centos1.swap,xvda2,w']
root = "/dev/xvda1 ro"
  
  需要注意的是,在启动虚拟机的时候可能会报出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 /path/to/centos1.cfg -c
  最后出现登录提示,使用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、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-125593-1-1.html 上篇帖子: Debian/Ubuntu 下篇帖子: 虚拟化 之 安装 XEN
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表