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

[经验分享] xen创建虚拟机

[复制链接]

尚未签到

发表于 2015-10-11 12:43:18 | 显示全部楼层 |阅读模式
  一,概述
  
  在Linux安装好Xen后接下来的工作就是如何创建和启动一个虚拟机。这个看似很简单的问题难住了不少人,VPSee 收到不少邮件关于如何快速创建和部署虚拟机镜像的。
  
  创建虚拟机的工具有很多,比如 :
  virt-manager,      virt-install,       virsh,       xen-create-image

  
  不过这些工具都要每次重头安装虚拟机的操作系统,需要人机交互、速度慢、不自动,不利于写成脚本。
  有什么快速的创建/部署/克隆虚拟机的办法呢?
  
  可以先做一个模版,然后通过拷贝模版的办法。我们只需要两个步骤:
  1、创建一个空白文件镜像;
  2、然后把一个打包好的 Linux 系统模版拷贝过去。通常一个打包好的最小 Linux 系统只要200MB 左右,
  在高配置的服务器上拷贝基本能瞬间完成,比起拷贝整个虚拟机镜像文件(比如 10GB)要快得多。
  
  
  二,配置步骤
  1、创建一个磁盘镜像文件:

# dd if=/dev/zero of=vpsee.img bs=1 count=1 seek=10G  
  
  2、格式化磁盘:

# mkfs.ext3 vpsee.img  
  
  3、挂载刚刚创建的磁盘镜像文件:

# mount -o loop vpsee.img /mnt  
  
  4、找个现有 Linux 的文件系统拷贝过去:

# tar -zxSf centos.tar.gz -C /mnt/  
  需要说明的是,这里的 centos.tar.gz  是提前制作好的,方法是:
  可以在一个干净的虚拟机上手动安装好一个最小的 CentOS 系统,然后配置和优化好,这样就是一个模板,
  以后如果创建新的 CentOS 虚拟机就可以从这个模板直接拷贝。
  
  打包存为模版,命令如下:
  # tar -zcvpf  centos.tar.gz  --exclude=/centos.tar.gz --exclude=/proc --exclude=/lost+found --exclude=/sys --exclude=/mnt --exclude=/media --exclude=/dev   /

  #上面命令是打包整个 /  根目录,但用--exclude 选项来排除 /  根目录 下某些文件 !
  
  5、卸载 /mnt:
  # umount mnt
  
  6、创建一个交换分区:

# dd if=/dev/zero of=vpsee-swap.img bs=1M count=256  
  
  7、创建和编辑一个 Xen 虚拟机的启动文件:

# vi /etc/xen/vpsee.conf  
name            = 'vpsee'  
vcpus           = 1  
memory          = '256'  
disk            = [ 'tap:aio:/home/vpsee/vpsee.img,sda1,w',  
'tap:aio:/home/vpsee/vpseeswap.img,sda2,w',]  
vif             = [ 'bridge=eth0' ]  
root            = '/dev/sda1 ro'  
on_reboot       = 'restart'  
on_crash        = 'restart'  
kernel          = "/boot/vmlinuz-2.6.18-194.32.1.el5xen"  
ramdisk         = "/boot/initrd-2.6.18-194.32.1.el5xen.img"  
  
  8、启动 Xen 虚拟机:

# xm create vpsee  
  
  
  
  二,xen 虚机存储详解

我们虚拟的系统应该有一个存储的地方,也就是文件系统。被虚拟的系统能安装和运行在哪些文件系统上呢?能安装和运行在一个实际的物理分区上,一个映像文件中,或NFS等网络文件系统中




2.2  以实际物理硬盘做为虚拟操作系统文件系统;


以实际物理硬盘分区做为虚拟操作系统的文件系统,要经过硬盘分区,创建文件系统流程;
请参考:《Linux 创建文件系统及挂载文件系统流程详解》


       准备物理分区及创建文件系统;
《Linux 查看磁盘分区、文件系统、使用情况的命令和相关工具介绍》

《实例解说 fdisk 使用方法》

《合理规划您的硬盘分区》

《Linux 创建文件系统及挂载文件系统流程详解》





          在物理分区上构建操作系统;


构建操作系统,目前在一个Linux操作系统中构建另一个操作系统,主要是通过chroot工具和软件包提取工具来构建。基础的东西还是需要一点的,请参考:《通过chroot 构建Linux操作系统概要》
目前在开源社区中,已经有人把一些常用的发行版的基础系统做好了。我们能拿过来直接用。呵。。。。。只要有基础系统,我们就能chroot进入,我们就能用相应发行版软件包管理器来构建操作系统了。

操作系统之基础系统资源:
http://jailtime.org
您可以直接下载您喜欢的操作系统,解压后,然后挂载映像文件,然后把映像文件的内容都拷到物理分区中就好了。不过还得做一点小小的修改,比如您下载系统映像文件中的/etc/fstab等文件。要根据您的引导的虚拟操作系统中定义的虚拟映射点来改。


6.13 虚拟操作系统的引导文件中关于文件系统的定义;


如果您的硬盘有一定的空间,就可以把被虚拟的操作系统安装在硬盘的实际物理分区中,当然您首先得准备一个硬盘分区。然后格式化成Linux的文件系统,比如ext3或reiserfs 等;然后是在这个分区上构建您想要虚拟的操作系统,最后才是写虚拟操作系统的引导配置文件,在配置文件中,要用phy:来指定。
比如:

disk = ['phy:hda7,sda1,w']

中文意思就是:

disk=['phy:分区,映射点,w']



这行是什么意思呢?就是表示被虚拟的操作系统安装在/dev/hda3,我们要把hda3硬盘分区虚拟映射到/dev/sda1,并且是可读可写的;在这里要值得注意的是虚拟平台正在使用中的分区不能做为是映射点。
比如我在Slackware是位于/dev/hda6的虚拟平台,也就是真实运行的操作系统,我想用它来虚拟位于/dev/hda7分区的Fedora。所以我不能把/dev/hda6做为hda7的映射点。也就是下面一行是错误的:


disk = ['phy:hda7,hda6,w']



如何定义映射点,其实也比较好办,只要符合Linux设备的规则就可以;比如下面的也可以;


disk = ['phy:hda7,sda2,w']

disk = ['phy:hda7,sda3,w']  

disk = ['phy:hda7,sdb1,w']

disk = ['phy:hda7,sdb2,w']

... ...



什么是映射点呢?也就是说通过phy定义后,被虚拟的操作系统的位于的真实的物理分区,在虚拟平台中,被映射到另一个分区;可能这样说有点不太明白。呵。。。。。。
举个例子吧:比如我们在Slackware虚拟Fedora ,而Fedora 位于/dev/hda7中。我们在引导Fedora的配置文件中定义Fedora所用的物理分区被映射到/dev/sda1;


disk = ['phy:hda7,sda1,w']

root = "/dev/sda1 ro"



当我们把Fedora引导起来的时候,Fedora的文件系统就是用被虚拟后的分区,也就是/dev/sda1。在Fedora中,我们通过df -h 查看到Fedora是位于/dev/sda1。
所以在引导Fedora的配置文件中,还要有一行来指定Fedora的root在哪里,就在/dev/sda1上;因为/dev/hda7已经被虚拟到了/dev/sda1。这回明白了吧;






2.3  以映像文件做虚拟操作系统的文件系统;


以映像文件做为虚拟操作系统的文件系统,这种方法是比较常用。也是比较方便和易于操作的,也就是说被虚拟的操作系统是放在了一个文件中。


创建映像文件;

[iyunv@localhost ~]# dd if=/dev/zero of=fedora50.img  bs=2k  seek=2048k count=1

读入了 1+0 个块

输出了 1+0 个块

[iyunv@localhost ~]# ls -lh fedora50.img

-rw-r--r--  1 root root 4.1G 2006-04-13 01:27 fedora50.img



我们可以用dd来创建映像文件,上面的例子是创建了大小为4.1G的体积的,名为fedora50.img的映像文件;您可以调整上面命令参数的大小来创建您想要的体积大小的映像文件。


格式化映像为Linux文件系统;


Linux文件系统,比如ext3或reiserfs,看自己喜欢吧;您可以用mkfs.ext3或mkfs.reiserfs命令来创建文件系统,请参考:


[iyunv@localhost ~]# /sbin/mkfs.ext3 fedora50,img

mke2fs 1.38 (30-Jun-2005)

fedora50,img is not a block special device.

Proceed anyway? (y,n) y 注:在这里输入y就时行格式化了,然后遇到提示之处,都是用回车。



这样fedora50.img就是ext3文件系统了,你可以用mount -o loop 来挂载使用它,在它上面存储文件等。


[iyunv@localhost ~]# mkdir /mnt/fedora50

[iyunv@localhost ~]# mount -o loop fedora50.img /mnt/fedora50

[iyunv@localhost ~]# df -h

root@localhost:/opt# df -lh

Filesystem            容量  已用 可用 已用% 挂载点

/dev/hda6              12G  8.5G  3.3G  73% /

/root/fedora50,img     4.0G  129M  3.7G   4% /mnt/fedora



上面的一系列命令执行下去后,说明fedora50.img已经挂载到了/mnt/fedora目录中,我们可以向/mnt/fedora中存放文件。这样就写到了fedora50.img映像文件中。写完后,我们可以卸载fedora50.img;


[iyunv@localhost ~]# umount  /mnt/fedora







2.4   在映像文件上构建操作系统;


在映像文件上构建操作系统,目前在一个Linux操作系统中构建另一个操作系统,主要是通过chroot工具和软件包提取工具来构建。基础的东西还是需要一点的,请参考:
目前在开源社区中,已经有人把一些常用的发行版的基础系统做好了。我们能拿过来直接用。呵。。。。。只要有基础系统,我们就能chroot进入,我们就能用相应发行版软件包管理器来构建操作系统了。

操作系统之基础系统资源:
http://jailtime.org


  虚拟操作系统的引导文件中关于文件系统的定义;

disk = ['file:/opt/vmos/vmos.img,sda1,w', 'file:/opt/vmos/vmos.swap,sda2,w']

root = "/dev/sda1 ro"



我们还是以实例解说,把装有vmos.img的映像映射到/dev/sda1 分区,vmos.img就是虚拟操作系统root存放地。vmos.swap是被虚拟文件系统的交换分区,这个交换分区也是一个文件,被映射到了/dev/sda2 。然后通过root= 行来指定虚拟操作系统所处的分区,这个位置就是被虚拟后的分区。
定义时要注意自己的这些文件存放在哪了?上面的例子表示vmos.img和vmos.swap是存放在/opt/vmos目录中。要看好了。。

运维网声明 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-125438-1-1.html 上篇帖子: xen-tools 下篇帖子: xen的调度算法分析
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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