• Xen虚拟机磁盘镜像模板制作(二)—Windows Server 2008(2012)


    《Xen虚拟机磁盘镜像模板制作(一)—Windows Server 2008(2012)》一文中,我们已经成功制作出了Windows Server磁盘镜像。下面我们说明下如何通过它来生成目标虚拟机,同时测试下之前制作好的虚拟机磁盘镜像模版是否有问题。具体流程如下文所述:

    1、创建目标虚拟机的系统盘:

    [root@localhost ~]# lvcreate -L 15G -n windows_vm vg0
      Logical volume "windows_vm" created

    2、查看成功创建的虚拟机系统盘:

    [root@localhost ~]# lvs
      LV         VG   Attr   LSize  Origin Snap%  Move Log Copy%  Convert
      windows_vm vg0  -wi-a- 15.00G

    3、将之前导出的磁盘MBR主引导扇区 windows_mbr 重新dd到虚拟机系统盘里:

    [root@localhost ~]# dd if=/root/windows_mbr of=/dev/vg0/windows_vm
    1+0 records in
    1+0 records out
    512 bytes (512 B) copied, 0.009189 seconds, 55.7 kB/s

    4、修改系统盘分区大小(以扇区数为单位):

    [root@localhost ~]# echo "000001CA:00F0DF01" | xxd -r - /dev/vg0/windows_vm 
    [root@localhost ~]# 

    因为前面我们创建的虚拟机系统盘大小是15G,因此这里我们需要将磁盘分区1所占用的扇区数大小设置为00F0DF01(具体计算方式后续再整理),而000001CA则表示保存磁盘分区1占用扇区数的开始字节位置,具体说明请参考《磁盘MBR主引导扇区》

    5、建立系统盘的磁盘分区映射,将系统盘的所有分区映射到/dev/mapper下:

    [root@localhost ~]# kpartx -av /dev/vg0/windows_vm 
    add map windows_vm1 : 0 31453184 linear /dev/vg0/windows_vm 2048
    [root@localhost ~]# ll /dev/mapper/
    total 0
    crw------- 1 root root  10, 62 May  5 17:18 control
    brw-rw---- 1 root disk 253,  2 Jun 26 13:29 vg0-windows_vm
    brw-rw---- 1 root disk 253,  0 Jun 26 13:38 windows_vm1
    [root@localhost ~]# 

    红色的部分即为虚拟机磁盘的根分区。

    6、解压并恢复之前制作好的Windows Server磁盘镜像模板 windows_img 到虚拟机磁盘的根分区上:

    [root@localhost ~]# gunzip -c /root/windows_img | ntfsclone --restore-image --overwrite /dev/mapper/windows_vm1 -
    ntfsclone v2012.1.15 (libntfs-3g)
    Ntfsclone image version: 10.1
    Cluster size           : 4096 bytes
    Image volume size      : 16104026112 bytes (16105 MB)
    Image device size      : 16104030208 bytes
    Space in use           : 7510 MB (46.6%)   
    Offset to image data   : 56 (0x38) bytes
    Restoring NTFS from image ...
    Warning : no alternate boot sector in image
    Syncing ...
    [root@localhost ~]# 

    7、扩展系统盘文件系统大小适应磁盘根分区的大小:

    [root@localhost ~]# ntfsresize -f -f /dev/mapper/windows_vm1 
    ntfsresize v2012.1.15 (libntfs-3g)
    Device name        : /dev/mapper/windows_vm1
    NTFS volume version: 3.1
    Cluster size       : 4096 bytes
    Current volume size: 16104026624 bytes (16105 MB)
    Current device size: 16104030208 bytes (16105 MB)
    New volume size    : 16104026624 bytes (16105 MB)
    Nothing to do: NTFS volume size is already OK.
    [root@localhost ~]# 

    这里是因为系统盘文件系统大小刚好也是15G,刚好匹配于根分区大小,所以显示了Nothing to do,无关紧要。

    8、进行到这一步,假如你需要往虚拟机系统中植入一些文件或者修改某些文件,可以将虚拟机根分区mount到某个目录下,如下所示:

    [root@localhost ~]# mount -t ntfs-3g /dev/mapper/windows_vm1 /mnt/
    [root@localhost ~]# umount /mnt/
    [root@localhost ~]# 

    不需要往虚拟机系统中植入一些文件或者修改某些文件,直接跳过这步。

    9、删除磁盘分区映射:

    [root@localhost ~]# kpartx -d /dev/vg0/windows_vm 
    [root@localhost ~]# ll /dev/mapper/
    total 0
    crw------- 1 root root  10, 62 May  5 17:18 control
    brw-rw---- 1 root disk 253,  2 Jun 26 13:29 vg0-windows_vm
    [root@localhost ~]# 

    10、至此,虚拟机系统盘已经准备好,下面就是需要准备虚拟机配置文件:

    kernel = "/usr/lib/xen/boot/hvmloader"
    builder='hvm'
    memory = 2048
    name = "windows_vm"
    vif = [ 'bridge=eth0' ]
    disk = [ 'phy:/dev/vg0/windows_vm,hda,w' ]
    vcpus  = 1
    on_reboot = 'restart'
    on_crash = 'restart'
    boot = 'c'
    sdl = 0
    vnc = 1
    vnclisten = '0.0.0.0'
    vncdisplay = 1
    stdvga = 0
    serial = 'pty'
    usbdevice = 'tablet'
    localtime = 1

    11、启动该虚拟机:

    [root@localhost ~]# xm create /root/windows_vm.cfg 
    Using config file "/root/windows_vm.cfg".
    Started domain windows_vm (id=573)
    [root@localhost ~]# xm li
    Name                                        ID   Mem VCPUs      State   Time(s)
    Domain-0                                     0  1856     8     r-----  92557.1
    windows_vm                                 573  2048     1     r-----      1.7
    [root@localhost ~]#

    12、通过vnc登陆该虚拟机:

     至此,通过前面制作的Windows Server磁盘镜像模板成功生成了一个全新的虚拟机。

  • 相关阅读:
    Jmeter跨线程组传值
    python基础之高级函数
    Python基础之函数的应用
    python基础之文件的输入输出
    python基础练习之猜数字
    折腾了两天的跨站脚本提交问题,与IIS7有关
    python简介和环境搭建
    python paramiko
    Linux rsync 企业级应用
    Linux find 命令详解
  • 原文地址:https://www.cnblogs.com/CasonChan/p/4602035.html
Copyright © 2020-2023  润新知