歡迎您光臨本站 註冊首頁

linux 虛擬化Xen初體驗

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0

Xen的虛擬化分為半虛擬化以及全虛擬化技術,其中半虛擬化主要是通過修改 Linux 核心來完成的虛擬化技術.Xen 的半虛擬化技術主要是用在相同發行版本的 Linux 上,如果你想要使用半虛擬化的方式啟動多個虛擬機器,那麼虛擬機器全部都必須是相同的操作系統,甚至要求相同版本與相同核心的 Linux 發行版本.如果你想要安裝不同版本的 Linux 或者是其他的 OS ( Windows XP) 時,那就得要使用全虛擬化技術了.

全虛擬化技術必須滿足以下條件:

  1. 硬體支持 英特爾 的 VT 技術 (Virtualization Technology, 英特爾-VT);
  2. 硬體支持 AMD 的 SVM 技術 (Secure Virtual Machine, AMD-SVM or, AMD-V).


下面來切實體驗一下xen

一、確定你的cpu是否支持虛擬化技術

  1. # cat /proc/cpuinfo |grep flags |egrep -o 'pae|vmx|svm'
  2. pae
  3. svm
  4. pae
  5. svm

顯示了PAE以及SVM,說明我的CPU支持全虛擬化技術.

二、安裝Xen

1.安裝Xen的基本程序

  1. # yum install -y xen*

2.安裝Xen的內核

  1. # yum install -y kernel-xen*

3.安裝Xen的虛擬管理程序

  1. # yum install -y virt-manager

以上安裝完畢,就來配置Xen的環境了

三、配置Xen環境

修改grub.conf文件,以Xen的內核來啟動系統

  1. # grub.conf generated by anaconda
  2. #
  3. # Note that you do not have to rerun grub after making changes to this file
  4. # NOTICE: You do not have a /boot partition. This means that
  5. # all kernel and initrd paths are relative to /, eg.
  6. # root (hd0,0)
  7. # kernel /boot/vmlinuz-version ro root=/dev/sda1
  8. # initrd /boot/initrd-version.img
  9. #boot=/dev/sda
  10. default=0
  11. timeout=5
  12. splashimage=(hd0,0)/boot/grub/splash.xpm.gz
  13. hiddenmenu
  14. title CentOS (2.6.18-238.12.1.el5xen)
  15. root (hd0,0)
  16. kernel /boot/xen.gz-2.6.18-238.12.1.el5
  17. module /boot/vmlinuz-2.6.18-238.12.1.el5xen ro root=LABEL=/
  18. module /boot/initrd-2.6.18-238.12.1.el5xen.img
  19. title CentOS (2.6.18-238.el5)
  20. root (hd0,0)
  21. kernel /boot/vmlinuz-2.6.18-238.el5 ro root=LABEL=/
  22. initrd /boot/initrd-2.6.18-238.el5.img

修改完畢,重啟系統,shell界面就可以看到

  1. # uname -a
  2. Linux Xen 2.6.18-238.12.1.el5xen #1 SMP Tue May 31 14:02:29 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux

再看一下

  1. # xm list
  2. Name ID Mem(MiB) VCPUs State Time(s)
  3. Domain-0 0 1228 2 r----- 444.8

Xen的log所在地

  1. # ll /var/log/xen/
  2. total 44
  3. drwx------ 2 root root 4096 May 10 05:30 console
  4. -rw-r--r-- 1 root root 9653 Jun 10 15:07 domain-builder-ng.log
  5. -rw-r--r-- 1 root root 36 Jun 10 14:53 xend-debug.log
  6. -rw-r--r-- 1 root root 17855 Jun 10 15:07 xend.log
  7. -rw-r--r-- 1 root root 36 Jun 10 15:07 xen-hotplug.log

四、建立虛擬機

準備工作

這裡我們安裝虛擬機採用NFS的方式,如果你對你的網路比較自信,也可以採用網路安裝的方式,視具體情況而定.

創建一個NFS Server並將光碟根目錄下的文件copy 進去,同時分享出來並允許Xen宿主機訪問,這個不是重點,就不寫過程了

下面進入真正的虛擬機安裝階段

  1. # virt-install -n centos -r 512 --vcpus=1
  2. > --nographic -f /opt/vm/centos.img -s 20 -p

  3. > -l nfs:192.168.1.249:/home/netinstall

解釋一下各參數的意義:

  1. -n 代表虛擬機的名字
  2. -r 分配給虛擬機的內存
  3. --vcpus 分配給虛擬機的CPU
  4. --nographic 不適用圖形界面
  5. -f 虛擬機磁碟映像的所在地
  6. -s 虛擬機磁碟映像的大小,單位記得是GB
  7. -p 半虛擬化的方式
  8. -l 安裝映像的路徑

PS:上面是採用NFS的方式,如果internet比較快,就換成internet上的源,門戶網站sohu,163均有開源的鏡像站點,另外中國科技大學的鏡像站點也不錯

  1. # 開源鏡像站點
  2. 163 http://mirrors.163.com
  3. sohu http://mirrors.sohu.com
  4. 科大 http://mirrors.ustc.edu.cn

運行上面的安裝虛擬機命令后,會提示以下的信息

  1. Starting install...
  2. Retrieving file vmlinuz... | 2.1 MB 00:00
  3. Retrieving file initrd.img... 85% [=========================== ] 5.6 MB/s | 6.7 MB 00:00 ETA
  4. Message from syslogd@ at Fri Jun 10 15:07:07 2011 ...
  5. Xen kernel: Disabling IRQ #16
  6. Retrieving file initrd.img... | 7.9 MB 00:00

  7. Creating storage file... | 20 GB 00:00
  8. Creating domain... | 0 B 00:00
  9. Connected to domain centos
  10. Escape character is ^]
  11. Bootdata ok (command line is method=nfs:192.168.1.249:/home/netinstall)
  12. Linux version 2.6.18-238.el5xen (mockbuild@builder10.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-48)) #1 SMP Thu Jan 13 16:41:45 EST 2011
  13. BIOS-provided physical RAM map:
  14. Xen: 0000000000000000 - 0000000020800000 (usable)
  15. No mptable found.
  16. Built 1 zonelists. Total pages: 133120
  17. Kernel command line: method=nfs:192.168.1.249:/home/netinstall
  18. Initializing CPU#0
  19. PID hash table entries: 4096 (order: 12, 32768 bytes)
  20. Xen reported: 2812.790 MHz processor.
  21. Console: colour dummy device 80x25
  22. Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes)
  23. Inode-cache hash table entries: 65536 (order: 7, 524288 bytes)
  24. Software IO TLB disabled
  25. Memory: 496384k/532480k available (2529k kernel code, 27260k reserved, 1736k data, 196k init)
  26. Calibrating delay using timer specific routine.. 7050.28 BogoMIPS (lpj=14100572

    )
  27. Security Framework v1.0.0 initialized
  28. SELinux: Initializing.
  29. selinux_register_security: Registering secondary module capability
  30. Capability LSM initialized as secondary
  31. Mount-cache hash table entries: 256
  32. CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
  33. CPU: L2 Cache: 1024K (64 bytes/line)
  34. CPU: Physical Processor ID: 0
  35. CPU: Processor Core ID: 1
  36. (SMP-)alternatives turned off
  37. Brought up 1 CPUs
  38. checking if image is initramfs... it is
  39. Grant table initialized
  40. NET: Registered protocol family 16
  41. Brought up 1 CPUs
  42. PCI: setting up Xen PCI frontend stub
  43. ACPI: Interpreter disabled.
  44. Linux Plug and Play Support v0.97 (c) Adam Belay
  45. pnp: PnP ACPI: disabled
  46. xen_mem: Initialising balloon driver.
  47. usbcore: registered new driver usbfs
  48. usbcore: registered new driver hub
  49. PCI: System does not support PCI
  50. PCI: System does not support PCI
  51. NetLabel: Initializing
  52. NetLabel: domain hash size = 128
  53. NetLabel: protocols = UNLABELED CIPSOv4
  54. NetLabel: unlabeled traffic allowed by default

  55. NET: Registered protocol family 2
  56. IP route cache hash table entries: 32768 (order: 6, 262144 bytes)
  57. TCP established hash table entries: 131072 (order: 9, 2097152 bytes)
  58. TCP bind hash table entries: 65536 (order: 8, 1048576 bytes)
  59. TCP: Hash tables configured (established 131072 bind 65536)
  60. TCP reno registered
  61. audit: initializing netlink socket (disabled)
  62. type=2000 audit(1307689628.858:1): initialized
  63. VFS: Disk quotas dquot_6.5.1
  64. Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
  65. Initializing Cryptographic API
  66. alg: No test for crc32c (crc32c-generic)
  67. ksign: Installing public key data
  68. Loading keyring
  69. - Added public key C099FB4D84A418B6
  70. - User ID: CentOS (Kernel Module GPG key)
  71. io scheduler noop registered
  72. io scheduler anticipatory registered
  73. io scheduler deadline registered
  74. io scheduler cfq registered (default)
  75. pci_hotplug: PCI Hot Plug PCI Core version: 0.5
  76. rtc: IRQ 8 is not free.
  77. Non-volatile memory driver v1.2
  78. Linux agpgart interface v0.101 (c) Dave Jones
  79. brd: module loaded
  80. Xen virtual console successfully installed as xvc0
  81. Bootdata ok (command line is method

    =nfs:192.168.1.249:/home/netinstall)
  82. Linux version 2.6.18-238.el5xen (mockbuild@builder10.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-48)) #1 SMP Thu Jan 13 16:41:45 EST 2011
  83. BIOS-provided physical RAM map:
  84. Xen: 0000000000000000 - 0000000020800000 (usable)
  85. No mptable found.
  86. Built 1 zonelists. Total pages: 133120
  87. Kernel command line: method=nfs:192.168.1.249:/home/netinstall
  88. Initializing CPU#0
  89. PID hash table entries: 4096 (order: 12, 32768 bytes)
  90. Xen reported: 2812.790 MHz processor.
  91. Console: colour dummy device 80x25
  92. Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes)
  93. Inode-cache hash table entries: 65536 (order: 7, 524288 bytes)
  94. Software IO TLB disabled
  95. Memory: 496384k/532480k available (2529k kernel code, 27260k reserved, 1736k data, 196k init)
  96. Calibrating delay using timer specific routine.. 7050.28 BogoMIPS (lpj=14100572)
  97. Security Framework v1.0.0 initialized
  98. SELinux: Initializing.
  99. selinux_register_security: Registering secondary module capability
  100. Capability LSM initialized as secondary
  101. Mount-cache hash table entries: 256
  102. CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)

  103. CPU: L2 Cache: 1024K (64 bytes/line)
  104. CPU: Physical Processor ID: 0
  105. CPU: Processor Core ID: 1
  106. (SMP-)alternatives turned off
  107. Brought up 1 CPUs
  108. checking if image is initramfs... it is
  109. Grant table initialized
  110. NET: Registered protocol family 16
  111. Brought up 1 CPUs
  112. PCI: setting up Xen PCI frontend stub
  113. ACPI: Interpreter disabled.
  114. Linux Plug and Play Support v0.97 (c) Adam Belay
  115. pnp: PnP ACPI: disabled
  116. xen_mem: Initialising balloon driver.
  117. usbcore: registered new driver usbfs
  118. usbcore: registered new driver hub
  119. PCI: System does not support PCI
  120. PCI: System does not support PCI
  121. NetLabel: Initializing
  122. NetLabel: domain hash size = 128
  123. NetLabel: protocols = UNLABELED CIPSOv4
  124. NetLabel: unlabeled traffic allowed by default
  125. NET: Registered protocol family 2
  126. IP route cache hash table entries: 32768 (order: 6, 262144 bytes)
  127. TCP established hash table entries: 131072 (order: 9, 2097152 bytes)
  128. TCP bind hash table entries: 65536 (order: 8, 1048576 bytes)
  129. TCP: Hash tables configured (established 131072 bind 65536)

  130. TCP reno registered
  131. audit: initializing netlink socket (disabled)
  132. type=2000 audit(1307689628.858:1): initialized
  133. VFS: Disk quotas dquot_6.5.1
  134. Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
  135. Initializing Cryptographic API
  136. alg: No test for crc32c (crc32c-generic)
  137. ksign: Installing public key data
  138. Loading keyring
  139. - Added public key C099FB4D84A418B6
  140. - User ID: CentOS (Kernel Module GPG key)
  141. io scheduler noop registered
  142. io scheduler anticipatory registered
  143. io scheduler deadline registered
  144. io scheduler cfq registered (default)
  145. pci_hotplug: PCI Hot Plug PCI Core version: 0.5
  146. rtc: IRQ 8 is not free.
  147. Non-volatile memory driver v1.2
  148. Linux agpgart interface v0.101 (c) Dave Jones
  149. brd: module loaded
  150. Xen virtual console successfully installed as xvc0
  151. Event-channel device installed.
  152. Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
  153. ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx
  154. ide-floppy driver 0.99.newide
  155. usbcore: registered new driver hiddev
  156. usbcore: registered new driver usbhid
  157. drivers/usb/input/hid-core.c: v2.6:USB HID core driver
  158. PNP: No PS/2 controller found. Probing ports directly.
  159. i8042.c: No controller found.
  160. mice: PS/2 mouse device common for all mice
  161. md: md driver 0.90.3 MAX_MD_DEVS=256, MD_SB_DISKS=27
  162. md: bitmap version 4.39
  163. TCP bic registered
  164. Initializing IPsec netlink socket
  165. NET: Registered protocol family 1
  166. NET: Registered protocol family 17
  167. XENBUS: Device with no driver: device/vbd/51712
  168. XENBUS: Device with no driver: device/vif/0
  169. Initalizing network drop monitor service
  170. Write protecting the kernel read-only data: 498k
  171. Greetings.
  172. anaconda installer init version 11.1.2.224 starting
  173. mounting /proc filesystem... done
  174. creating /dev filesystem... done
  175. mounting /dev/pts (unix98 pty) filesystem... done
  176. mounting /sys filesystem... done
  177. anaconda installer init version 11.1.2.224 using /dev/xvc0 as console
  178. trying to remount root filesystem read write... done
  179. mounting /tmp as ramfs... done
  180. running install...
  181. running /sbin/loader

接下來的安裝就和平時的差不多了,順便也貼一下圖.

選擇語言,english

網路的配置界面

具體的IP信息

這裡選擇文本模式

歡迎界面

是否要初始化disk,當然要

這步,不要啥操作,選擇OK

選YES,就不翻譯了

選擇NO

也是NO

選擇OK

設置主機名

時區的配置

root口令設置

自定義軟體包

檢查依賴關係

格式化文件系統

安裝過程

安裝完畢,重啟.虛擬機完裝好了,安裝過程中可以通過ctrl ]回到宿主機.

五、虛擬機的一些管理命令

  1. xm dm xen的dmesg信息
  2. xm create centos 啟動虛擬機centos
  3. xm console centos 以文本方式連接至虛擬機
  4. xm reboot centos 重啟虛擬機
  5. xm shutdown centos 關閉虛擬機
  6. xm pause centos 暫停虛擬機
  7. xm resume centos 恢復被暫停的虛擬機
  8. ………

虛擬機的配置文件位於/etc/xen下以虛擬機的名字為名稱

  1. name = "centos"
  2. uuid = "5ec1488a-42ec-87a7-8001-49243f29497f"
  3. maxmem = 512

  4. memory = 512
  5. vcpus = 1
  6. bootloader = "/usr/bin/pygrub"
  7. on_poweroff = "destroy"
  8. on_reboot = "restart"
  9. on_crash = "restart"
  10. disk = [ "tap:aio:/opt/vm/centos.img,xvda,w" ]
  11. vif = [ "mac=00:16:36:45:e1:b1,bridge=xenbr0,script=vif-bridge" ]
要想Xen虛擬機隨開機自啟動,要這樣做
  1. # ln -s /etc/xen/centos /etc/xen/auto/
  2. # /etc/init.d/xendomains start
  3. Starting auto Xen domains: centosUsing <class 'grub.GrubConf.GrubConfigFile'> to parse /grub/menu.lst

  4. (skip)[done] [ OK ]

本文出自 「BSDerの-專註於開源領域」 博客,請務必保留此出處http://hellosa.blog.51cto.com/2698675/585091


[火星人 ] linux 虛擬化Xen初體驗已經有658次圍觀

http://coctec.com/docs/linux/show-post-48303.html