Xen虛擬機磁盤鏡像模板制作(一)—Windows Server 2008(2012)


這段時間一直在研究如何制作一個適合Xen虛擬化的Windows Server 2008(2012)磁盤鏡像,中間雖然遇到了一些阻撓,不過最終還是順利解決,成功制作出了Xen Windows Server 2008(2012) 磁盤鏡像模板。這里記錄下整個制作過程:

1、首先要確保服務器的VT已經打開,可以通過如下命令來查看:

[root@localhost ~]# cat /proc/cpuinfo | egrep '(vmx|svm)'

如果有輸出,則說明該服務器的VT已經打開。

2、創建一個將要用來安裝Windows Server 2008(2012)系統的LV,命令如下:

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

參數說明:

1)-L:指定LV的大小。這里設置為15G,是因為Windows Server 2008(2012)系統本身安裝完后,占用系統盤較大,大約在9--10G;另外官方推薦系統盤大小要在13G以上

2)vg0:這里是我測試創建的vg

3、查看已經成功創建的系統LV:

[root@localhost ~]# lvs
  LV          VG   Attr   LSize  Origin Snap%  Move Log Copy%  Convert
  windows     vg0  -wi-a- 15.00G                                      
[root@localhost ~]# ll /dev/vg0/windows 
lrwxrwxrwx 1 root root 23 Jun  2 13:12 /dev/vg0/windows -> /dev/mapper/vg0-windows

4、系統LV 創建好后,開始准備Xen虛擬機的配置文件:

kernel = "/usr/lib/xen/boot/hvmloader"
builder='hvm'
memory = 2048
name = "windows"
vif = [ 'bridge=eth0' ]
disk = [ 'phy:/dev/vg0/windows,hda,w','file:/root/cn_windows_server_2008_r2_standard_enterprise_datacenter_and_web_with_sp1_x64_dvd_617598.iso,hdc:cdrom,r' ]
vcpus  = 1
on_reboot = 'restart'
on_crash = 'restart'
boot = 'd'
sdl = 0
vnc = 1
vnclisten = '0.0.0.0'
vncdisplay = 1
stdvga = 0
serial = 'pty'
usbdevice = 'tablet'
localtime = 1

注意:

1)這里使用的是全虛擬化方式安裝Windows Server虛擬機,后面會安裝半虛擬化驅動qplpv driver

2)要設置虛擬機從CDROM啟動

5、創建並啟動Windows Server虛擬機,命令如下:

[root@localhost ~]# xm create /root/windows.cfg 
Using config file "/root/windows.cfg".
Started domain windows (id=442)

6、此時Windows Server虛擬機已經啟動,進入到系統安裝界面,下面就是按部就班地安裝系統;我們通過VNC客戶端連接到虛擬機上,如下所示:

7、系統安裝到下面這一步時:

這里我們需要事先手動對整塊磁盤進行分區並格式化,因為如果我們采用了系統默認的分區格式化方式,系統會幫我們創建一個100M的隱藏分區,后期我們在導出系統文件時會比較麻煩。

這里同時按住 Shift + F10,彈出命令提示符界面,執行如下命令進行磁盤分區並格式化:

執行命令后,關閉命令提示符,點擊"刷新",發現此時磁盤分區已經創建好了,而且沒有那100M的隱藏分區,如下圖:

8、后面就是系統安裝過程了:

9、系統安裝完成后,關閉虛擬機,修改Xen虛擬機配置文件:

kernel = "/usr/lib/xen/boot/hvmloader"
builder='hvm'
memory = 2048
name = "windows"
vif = [ 'bridge=eth0' ]
disk = [ 'phy:/dev/vg0/windows,hda,w','file:/root/xen-windows-driver.iso,hdc:cdrom,r' ]
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

注意:

1)設置系統從硬盤啟動

2)修改CDROM為xen-windows-driver.iso

      PS:這里的xen-windows-driver.iso是本人通過 mkisofs 命令制作的,里面僅僅包含了qplpv drvier及agent,你同樣可以制作你自己需要的iso文件

10、下面就是根據需要修改一些Windows Server系統配置的工作,具體如下:

1)關閉防火牆

2)開啟遠程桌面

3)設置新磁盤自動聯機,具體命令如下:

 

4)安裝半虛擬化驅動qplpv driver

安裝完重啟后,我們發現"設備管理器"里的驅動變為Xen的了

11、至此,系統配置修改已經完成了,下面關閉虛擬機,備份磁盤MBR主引導扇區,命令如下:

[root@localhost ~]# dd if=/dev/vg0/windows of=windows_mbr bs=512 count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.010009 seconds, 51.2 kB/s
[root@localhost ~]# ll windows_mbr
-rw-r--r-- 1 root root 512 Jun  2 15:49 windows_mbr

12、創建磁盤分區映射,將所有分區映射到/dev/mapper下:

[root@localhost ~]# kpartx -av /dev/vg0/windows 
add map windows1 : 0 31453184 linear /dev/vg0/windows 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,  5 Jun  2 15:34 vg0-windows
brw-rw---- 1 root disk 253,  4 Jun  2 15:54 windows1
[root@localhost ~]# 

因為前面我們安裝系統時只創建了一個分區,因此這里就只有一個windows分區,即windows1

13、mount windows分區到mnt下:

[root@localhost ~]# mount -t ntfs-3g /dev/mapper/windows1 /mnt/
[root@localhost ~]# ll /mnt/
total 2097184
drwxrwxrwx 1 root root       4096 Jun  2 14:17 Boot
-rwxrwxrwx 1 root root     383786 Nov 21  2010 bootmgr
-rwxrwxrwx 1 root root       8192 Jun  2 14:17 BOOTSECT.BAK
lrwxrwxrwx 2 root root         60 Jul 14  2009 Documents and Settings -> /mnt//Users
-rwxrwxrwx 1 root root 2147082240 Jun  2 15:32 pagefile.sys
drwxrwxrwx 1 root root          0 Jul 14  2009 PerfLogs
drwxrwxrwx 1 root root       4096 Jun  2 14:20 ProgramData
drwxrwxrwx 1 root root       4096 Jun  2 15:31 Program Files
drwxrwxrwx 1 root root       4096 Jun  2 15:31 Program Files (x86)
drwxrwxrwx 1 root root          0 Jun  2 14:20 Recovery
drwxrwxrwx 1 root root          0 Jul 14  2009 $Recycle.Bin
drwxrwxrwx 1 root root       4096 Jun  2 14:18 System Volume Information
drwxrwxrwx 1 root root       4096 Jun  2 14:41 Users
drwxrwxrwx 1 root root      16384 Jun  2 15:29 Windows
[root@localhost ~]# 

因為windows文件系統是NTFS格式的,所以這里類型要設置為ntfs-3g

14、刪除文件 pagefile.sys:

[root@localhost ~]# rm -f /mnt/pagefile.sys 
[root@localhost ~]# ll /mnt/
total 424
drwxrwxrwx 1 root root   4096 Jun  2 14:17 Boot
-rwxrwxrwx 1 root root 383786 Nov 21  2010 bootmgr
-rwxrwxrwx 1 root root   8192 Jun  2 14:17 BOOTSECT.BAK
lrwxrwxrwx 2 root root     60 Jul 14  2009 Documents and Settings -> /mnt//Users
drwxrwxrwx 1 root root      0 Jul 14  2009 PerfLogs
drwxrwxrwx 1 root root   4096 Jun  2 14:20 ProgramData
drwxrwxrwx 1 root root   4096 Jun  2 15:31 Program Files
drwxrwxrwx 1 root root   4096 Jun  2 15:31 Program Files (x86)
drwxrwxrwx 1 root root      0 Jun  2 14:20 Recovery
drwxrwxrwx 1 root root      0 Jul 14  2009 $Recycle.Bin
drwxrwxrwx 1 root root   4096 Jun  2 14:18 System Volume Information
drwxrwxrwx 1 root root   4096 Jun  2 14:41 Users
drwxrwxrwx 1 root root  16384 Jun  2 15:29 Windows
[root@localhost ~]# 

15、unmount windows分區:

[root@localhost ~]# umount /mnt/
[root@localhost ~]# ll /mnt/
total 0
[root@localhost ~]# 

16、打包並壓縮windows1分區里的系統文件:

[root@localhost ~]# ntfsclone --save-image --output - /dev/mapper/windows1 | gzip -c > windows_img
ntfsclone v1.13.1 (libntfs 9:0:0)
NTFS volume version: 3.1
Cluster size       : 4096 bytes
Current volume size: 16104026112 bytes (16105 MB)
Current device size: 16104030208 bytes (16105 MB)
Scanning volume ...
100.00 percent completed
Accounting clusters ...
Space in use       : 7274 MB (45.2%)   
Saving NTFS to image ...
100.00 percent completed
Syncing ...
[root@localhost ~]# ll windows_img 
-rw-r--r-- 1 root root 3073945978 Jun  2 16:14 windows_img

17、刪除磁盤分區映射:

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

18、至此,我們需要的Xen Windows Server磁盤鏡像模板就制作好了,下面兩個文件就是我們需要的:

[root@localhost ~]# ll windows_*
-rw-r--r-- 1 root root 3073945978 Jun  2 16:14 windows_img
-rw-r--r-- 1 root root        512 Jun  2 15:49 windows_mbr
[root@localhost ~]# 

 

PS:這里雖然是Windows Server 2008示例說明,但2012過程同上。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM