XenServer 模擬千兆網卡
這兩天用 XenServer 安裝 VM,其中一台 VM 是用作無盤測試的 Linux Server,不在主流發行版之列,無奈 XenServer 日前對非主流的 Linux 支持不是很給力,默認模擬的兩張網上為 Realtek Semiconductor. Co. RTL 8139/8139C,但 VM Linux Server 對這個支持又不好,折騰了半天,VM 中沒有 NIC(Network Interface Cards)。
晚上在這里找到了解決方案:http://www.netservers.co.uk/articles/open-source-howtos/citrix_e1000_gigabit
XenServer 不允許用戶選擇 VM 使用的網上類型,而默認模擬給 VM 用的網上是 RTL 8139 百兆級網上,XenServer 使用 QEMU 模擬客戶機的設備,其中有個隱藏的功能是模擬千兆網卡,可以解決非主流 Linux 發行版不能半虛擬化(paravirtualization)的性能瓶頸(bottleneck),當然,也能解決我遇到的問題,原文對此問題的解決方式如下:
1. 在 XenServer 中執行如下命令:
# mv /usr/lib/xen/bin/qemu-dm /usr/lib/xen/bin/qemu-dm.orig
2. 在 XenServer 中編輯新的 /usr/lib/xen/bin/qemu-dm 如下:
1 #!/bin/bash 2 oldstring=$@ 3 newstring=${oldstring//rtl8139/e1000} 4 exec /usr/lib/xen/bin/qemu-dm.orig $newstring
3. 將新的 qemu-dm 設置為可執行並禁止更改:
# chmod 755 /usr/lib/xen/bin/qemu-dm # chattr +i /usr/lib/xen/bin/qemu-dm
注意,chattr 命令使 qemu-dm 不能被更改,這樣在升級時可以會失敗,解決辦法是在升級前執行 chattr -i /usr/lib/xen/bin/qemu-dm
XenServer 中綁定多張網卡
個人感覺 XenServer 6.2 中的 xeconsole 人性化做的還行,但功能的豐富程度尚可提高,因為里面的網絡管理居然沒提供網上綁定功能。
找了些資料發現,XenServer 在 bash 中綁定網卡的做法如下:
1 root@xxx # xe pif-list # 列出物理網卡 2 uuid(RO) : UUID0 3 device(RO) : eth0 4 currently-attached(RO) : true 5 VLAN(RO) : -1 6 network-uuid(RO) : N_UUID0 7 8 uuid(RO) : UUID1 9 device(RO) : eth1 10 currently-attached(RO) : true 11 VLAN(RO) : -1 12 network-uuid(RO) : N_UUID1 13 root@xxx # xe network-create name-lable="bond0+1" # 創建名為 bond0+1 的網卡 14 uuuuuuuu-uuuu-uuuu-uuuu-uuuuuuuuuuuu # 新建網卡的 UUID_bond 15 root@xxx # xe bond-create network-uuid=UUID_bond pif-uuids=UUID0,UUID1 [mode=<balance-slb|active-backup>] 16 root@xxx # xe network-list # 列出網卡,查看綁定是否生效
上述的 mode=balance-slb|active-backup 是 XenServer 支持的兩各綁定模式。這兩個模式是關於負載均衡和失效保護的。balance-slb 為負載均衡模式(Server Load Balance),即兩塊網卡都工作,active-backup 是失效保護模式的冗余功能,即綁定的兩塊網卡一主一備份。默認是 balance-slb 模式。
實際上網上綁定可以有 7 種模式,以后有機會可以去了解。
設置虛擬機自啟動
在XenServer的較早前版本(6.0以前)中,啟動XenServer時,可以選擇自動啟動在其中安裝的虛擬機。這個功能在XenServer 6.0中被Citrix取消了,原因是會干擾到XenServer的HA(高可用性)和Failover(故障轉移)功能的兼容性。但是,如果只運行一個XenServer,這個功能還是非常好的。
在XenServer 6.0中,自動啟動虛擬機仍然是可以辦到的。這需要在“Pool Level”上開啟自啟動功能,並且,在需要自啟動的虛擬機上使用命令行進行設置。
1 獲取 Pool 的 UUID
root@server# xe pool-list uuid ( RO) : POOL-UUID name-label ( RW) : TestPool name-description ( RW): master ( RO) : 74fc086b-8c89-4918-b69e-369fcb19847d default-SR ( RW) : bebb142a-d986-acac-d4f4-636de937d28b
2 設置 Pool 的自啟動
root@server# xe pool-param-set uuid=POOL-UUID other-config:auto_poweron=true
3 獲取需要設置為自啟動的虛擬機的 UUID(以名稱為“W2K08”的虛擬機為例)
root@server# xe vm-list name-label="W2K08" uuid ( RO) : VM-UUID name-label ( RW) : W2K08 power-state ( RO) : running
如果要得到簡介的結果(即只希望輸出UUD),可以使用如下命令:
root@server# xe vm-list name-label="W2K08" params=uuid --minimal
4 設置虛擬機的自啟動
root@server# xe vm-param-set uuid=VM-UUID other-config:auto_poweron=true
2015-05-30 append:
本地補丁上傳執行
# xe patch-upload ... # xe patch-list # xe patch-apply uuid=... host-uuid=...
使用本地 ISO 作為 Storage Repository (SR)
# xe sr-create type=iso name-label="local isos" device-config:location=/folder-to-isos device-config:legacy_mode=true content-type=iso # mount iso locally first