Xen虛擬機模版製作

  • 製作模版

windows

  1. 準備虛擬機,安裝配置好一個用來製作模版的虛擬機

  2. 導出windows的mbr到文件(僅適用於mbr分區表的windows操作系統),基於lvm(基於文件需要使用loop設備)

    dd if=/dev/mapper/vg_lv_name of=/path/to/windows_tpl.mbr count=1 bs=512
  3. 生成模板磁盤的分區設備
    kpartx -av /dev/mapper/vg_lv_name

4.複製模板數據到文件(或分區)

ntfsclone -r -O  windows_tpl.img /dev/mapper/vg_lv_namep1

5.刪除分區設備

kpartx -dv /dev/mapper/vg_lv_name

linux(僅適用於半虛擬化)

1.打包整個系統

tar cpzf os_tpl.tar.gz --exclude=/os_tpl.tar.gz /

2.建立虛擬磁盤

dd if=/dev/zero of=os_tpl.img bs=1 count=1 seek=10G
mkfs.ext4 os_tpl.img
mount -o loop os_tpl.img /mnt/os_tpl

3.釋放系統文件到虛擬磁盤

tar -zxSf os_tpl.tar.gz -C /mnt/os_tpl

4.掛載系統所需目錄(無此目錄可創建),然後chroot

sudo mkdir -p /mnt/os_tpl/{proc,sys,dev,dev/pts}

sudo mount -t proc proc /mnt/os_tpl/proc/
sudo mount -t sysfs sys /mnt/os_tpl/sys/
sudo mount -o bind /dev /mnt/os_tpl/dev/
sudo mount -o bind /dev/pts /mnt/os_tpl/dev/pts/
sudo chroot /mnt/os_tpl

5.chroot後更新系統並安裝linux-virtual內核,當然,不要忘了更新 grub(centos同理)

apt-get update & apt-get upgrade
apt-get install linux-virtual
apt-get purge grub2 grub-pc
apt-get install grub
update-grub

6.換了內核後還需要更新和配置幾個系統文件,menu.lst,fstab,hvc0.conf,以便新內核能在 Xen 虛擬環境里正常啓動

# vi /boot/grub/menu.lst
Kernel command line: root=/dev/xvda1 xencons=tty console=tty1 console=hvc0 nosep nodevfs ramdisk_size=32768 ip_conntrack.hashsize=8192 nf_conntrack.hashsize=8192 ro devtmpfs.mount=1 
# vi /etc/fstab
/dev/xvda1      /           ext4    noatime,errors=remount-ro       0 1
/dev/xvda2      none        swap    sw                              0 0
tmpfs           /dev/shm    tmpfs   nodev,nosuid,noexec,mode=1777   0 0
devpts          /dev/pts    devpts  gid=5,mode=620                  0 0
sysfs           /sys        sysfs   defaults                        0 0
/proc           /proc       proc    defaults                        0 0
/dev/xvdb       /home       ext4    noatime,errors=remount-ro       0 1
# vi /etc/init/hvc0.conf
# hvc0 - getty
#
# This service maintains a getty on hvc0 from the point the system is
# started until it is shut down again.

start on stopped rc RUNLEVEL=[2345]
stop on runlevel [!2345]

respawn
exec /sbin/getty -8 38400 hvc0

7.退出chroot並逆順序卸載剛纔掛載的目錄

umount /mnt/os_tpl/proc/
umount /mnt/os_tpl/sys/
umount /mnt/os_tpl/dev/pts/
umount /mnt/os_tpl/dev/
umount /mnt/os_tpl
# xl create test.cfg
  • 創建虛擬機

windows

1.創建磁盤/磁盤鏡像

lvcreate -L 20G -n xxx vg

2.從模版mbr恢復mbr到磁盤

dd if=windows_tpl.mbr of=/dev/mapper/vg_lv_name  count=1 bs=512

3.創建分區設備

kpartx -av /dev/mapper/vg_lv_name

4.複製模版數據到分區設備

ntfsclone -r -O /dev/mapper/vg_lv_namep1 windows_tpl.img

5.根據需要在分區設備執行resize

ntfsresize -f -v /dev/mapper/vg_lv_namep1

6.刪除分區設備

kpartx -dv /dev/mapper/vg_lv_name

Linux

1.建立虛擬磁盤

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

2.格式化虛擬磁盤

mkfs.ext4 test.img

3.掛載虛擬磁盤

mount -o loop test.img /mnt

4.釋放模版文件到目標位置

tar -zxSf test.tar.gz -C /mnt/
  • 創建Xen虛擬機配置文件,用 xl create 啓動虛擬機
    # vi /etc/xen/test.cfg
    bootloader = "pygrub"
    root = "/dev/xvda ro"
    name = "test"
    vcpus = "1"
    memory = "2048"
    disk = [ "file:/root/test.img,xvda,w","file:/root/test.swp,xvdb,w" ]
    vif = [ "bridge=xenbr0" ]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章