最新消息:

如何快速创建 Xen 虚拟机镜像

Xen admin 4151浏览 0评论

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

1、创建一个磁盘镜像文件:

 

# dd if=/dev/zero of=test.img bs=1 count=1 seek=10G

2、格式化磁盘:

 

# mkfs.ext3 test.img

3、挂载刚刚创建的磁盘镜像文件:

 

# mount -o loop test.img /mnt

4、找个现有 Linux 的文件系统拷贝过去:

 

# tar -zxSf centos.tar.gz -C /mnt/

需要说明的是,这里的 centos.tar.gz 是提前制作好的,可以在一个干净的虚拟机上手动安装好一个最小的 CentOS 系统,然后配置和优化好,这样就是一个模板,以后如果创建新的 CentOS 虚拟机就可以从这个模板直接拷贝。

5、卸载 /mnt:

 

# umount mnt

6、创建一个交换分区:

 

# dd if=/dev/zero of=test-swap.img bs=1M count=256

7、创建和编辑一个 Xen 虚拟机的启动文件:

 

# vi /etc/xen/test.conf
name            = 'test'
vcpus           = 1
memory          = '256'
disk            = [ 'tap:aio:/home/vpsee/test.img,sda1,w',
'tap:aio:/home/vpsee/test-swap.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 test

额外的:

创建一个模版:

tar cvpzf centos.tar.gz –exclude=centos.tar.gz –directory / –exclude=lost+found –exclude=media –exclude=proc /

出现错误提示tar:error exit delayed from previous errors 加上–exclude=sys就不会报错了。

tar -cvpzf debian.tar.gz –exclude=/debian.tar.gz –exclude=/proc –exclude=/lost+found –exclude=/sys –exclude=/mnt –exclude=/media –exclude=/dev /

创建一个虚拟机:virt-install -p -n centos -r 256 -f /Disk1/domains/centos-xen-1/centos.img -s 10 -l http://mirrors.163.com/centos/5.6/os/i386/ –nographics

如果 在安装虚拟机是想灵活分配swap空间,那么在安装过程中可以不分配swap分区,可以通过在安装完系统之后,先关闭系统。

然后到/Disk1/domains/centos-xen-1/创建一个空白的img

 

 dd if=/dev/zero of=test-swap.img bs=1M count=1024

 
笔者准备给1G的虚拟分区给此虚拟机。
然后找到/etc/xen/youhostname,打开它:

name = “centos”

uuid = “6dcf6816-5588-6d2f-d385-08127a5476d3”

maxmem = 256

memory = 256

vcpus = 1

bootloader = “/wp-content/bin/pygrub”

on_poweroff = “destroy”

on_reboot = “restart”

on_crash = “restart”

disk = [ “tap:aio:/Disk1/domains/centos-xen-1/centos.img,xvda,w” ]

vif = [ “mac=00:16:36:52:11:a6,bridge=xenbr0,script=vif-bridge” ]

将disk = [ “tap:aio:/Disk1/domains/centos-xen-1/centos.img,xvda,w” ]改为 ,disk = [ “tap:aio:/Disk1/domains/centos-xen-1/centos.img,xvda,w””tap:aio:/Disk1/domains/centos-xen-1/swap.img,xvda3,w”]

注意:笔者在给虚拟机安装是只划分了2个分区,分别是xvda1,xvad2,那么接下来就是xvda3这个分区,以此类推,如果你不清楚自己的分区,请打开虚拟机,使用fdisk -l命令查看。
保存之后,启动你的虚拟机:xm create youhost -c
登陆进虚拟机之后,将我们刚刚创建的虚拟分区创建为swap,
mkswap /dev/xvda3
然后使用此分区为swap
swapon /dev/xvda3
当然也有关闭命令:
swapoff /dev/xvda3
这样就已经挂载起你的外部swap分区了。
当然你可以通过编辑/etc/fstab来让虚拟机开机默认挂载这个分区。
/dev/xvda3 swap swap defaults 0 0

问题1:INIT: Id “1” respawning too fast: disabled for 5 minutes

这里是快速复制的VPS,所以需要更新/etc/inittab文件。找到1:2345:respawn:/sbin/getty 38400 hvc0这一行将最后的hvc0 改成tty1即可,需重启。

转载请注明:爱开源 » 如何快速创建 Xen 虚拟机镜像

您必须 登录 才能发表评论!