创建虚拟机的工具有很多,比如 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 虚拟机镜像