文書の過去の版を表示しています。
目次
XenServer Tips
XCP-ng 7.4から7.5へのUpgrade
-
- 記事執筆時点で、7.6がRelease Candidateになっており、7.5系は7.5.1になっていることに注意。
- 手順はおそらく変わらないだろうから、記載しておく。
- まず、対象poolのpool masterにsshなどでloginする
- xsconsoleコマンドを実行する
Backup, Restore and Update
を選択するBackup Virtual Machine Metadata
を選択する- Root passwordを入力する
- Backupファイルを設置するSRを選択する。今回は
local storage
- 数分待つ
- QUITする
- 別の手段としてCommandlineから
xe pool-dump-database filename=[Filename].xml
を実行 - 以下のコマンドを実行
wget https://updates.xcp-ng.org/7/xcp-ng-7.5.repo -O /etc/yum.repos.d/xcp-ng.repo yum clean metadata yum install xcp-ng-deps yum update
- Pool masterを再起動
- 以下、Poolに所属している他のServerも同様に更新する
XCP-ng上でのGuest VMのauto power on
- xe pool-list で、pool の uuid をゲット
xe pool-list
- POOL上の auto startを有効化
xe pool-param-set uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx other-config:auto_poweron=true
- 有効化したい VM でこれを実行
xe vm-param-set uuid=UUID other-config:auto_poweron=true
XenServer 6.2 以降への Hotfixの適用
XenServer 6.2からは、XenCenterでのPatch適用は出来なくなった。 XenCenterからHotFixを適用するには、Citrixからライセンスを買う必要がある。 しかし、さすがに個人でそんなことをするのは馬鹿げているので、手動でpatchを適用する。
Patch適用の方法は、HotFixのページに記載されているが、ここに一応手順を記載しておく
- とにかく HotFix をDownloadする
- とにかく XenServer PoolのPool MasterにHotFixを転送する
- なお、HotFixを転送する前には、Archiveを展開し、XS62Exxx.xsupdateファイルを転送しておくこと
- pool masterにloginし、以下のコマンドを突っ込む
xe patch-upload -s localhost -u root -pw <password> file-name=<path_to_update_file>/XSxxExxx.xsupdate
- ここで、出力されるUUIDをメモする。
- このタイミングで、もしXenServer側で認識されるNICをe1000に変えているならば、以下を実施
- (XenServer 6.2まで) chattr -i /usr/lib/xen/bin/qemu-dm
- (XenServer 6.5から) chattr -i /usr/lib64/xen/bin/qemu-dm
- xe -s localhost -u root -pw <password> patch-pool-apply uuid=[上記UUID]
- これで patchが適用されるはず
- xe patch-list -s localhost -u root -pw <password> name-label=XSxxExxx
- システムにpatchが適用されているか確認。なお、name-labelを省略すると、適用されている全HotFixが表示される
- 必要に応じて、xe-toolstack-restartかサーバーの再起動を行う。特に、kernelの置き換えの場合には再起動必須。
- 再起動すべきかどうかは、after-apply-guidanceを見れば判断できる。
- restartXAPI → xe-toolstack-restart
- restartHost → 再起動
なお、各VMを移設してから実施すること。必要に応じて、Storage Migration/Pool間Migrationを活用すること
FV時にVMに割り当てるNICをe1000にする
http://www.netservers.net.uk/articles/open-source-howtos/citrix_e1000_gigabit
XenServer 6.2までの場合
mv /usr/lib/xen/bin/qemu-dm /usr/lib/xen/bin/qemu-dm.orig vi /usr/lib/xen/bin/qemu-dm.sh ===== Start of qemu-dm.sh ===== #!/bin/bash oldstring=$@ newstring=${oldstring//rtl8139/e1000} exec /usr/lib/xen/bin/qemu-dm.orig $newstring ===== End of qemu-dm.sh ===== cp /usr/lib/xen/bin/qemu-dm.sh /usr/lib/xen/bin/qemu-dm chmod 755 /usr/lib/xen/bin/qemu-dm chattr +i /usr/lib/xen/bin/qemu-dm
XenServer 6.5からの場合
mv /usr/lib64/xen/bin/qemu-dm /usr/lib64/xen/bin/qemu-dm.orig vi /usr/lib64/xen/bin/qemu-dm.sh ===== Start of qemu-dm.sh ===== #!/bin/bash oldstring=$@ newstring=${oldstring//rtl8139/e1000} exec /usr/lib64/xen/bin/qemu-dm.orig $newstring ===== End of qemu-dm.sh ===== cp /usr/lib64/xen/bin/qemu-dm.sh /usr/lib64/xen/bin/qemu-dm chmod 755 /usr/lib64/xen/bin/qemu-dm chattr +i /usr/lib64/xen/bin/qemu-dm
なお、qemu-dm.shは、環境変数に格納されている文字列の文字列置換を行っているので、bash以外で正しく動作する保証が無い
この方法でFV時のNICをe1000として認識させる場合、XenServerのupdate(HotFix)を適用するときに問題が出る場合がある。 これは、chattrを利用してqemu-dmを保護しているからである。従って、HotFix適用の際には、適用前に以下を実施する
*** XenServer 6.2まで *** chattr -i /usr/lib/xen/bin/qemu-dm *** XenServer 6.5から *** chattr -i /usr/lib64/xen/bin/qemu-dm
この保護を入れる理由は、単純にUpdateされてしまい、qemu-dmが置き換えられてしまうと、NICがrtl8139に認識されるようになってしまうからである。つまり、あえてUpdateを失敗させて、やり直しできるようにするのが目的である。
MetaData Backup
- xsconsole
- Backup, Restore and Update
- Backup Virtual Machine Metadata
の順でメニューを選べばあとはみたまま。
Console画面を出す
[root@XenServ01 ~] xsconsole
xeでVMのNICをいじる
xeコマンドでVMのNICをいじる為のメモ。
AMDのブルドーザーコアマシンを使っていて、流石に古くなったので別のIntel XeonマシンにVMを移設した。 細かいところは今度まとめるので、テキストでメモ書き
xe vif-list ←とにかくvifのlistを取得する xe vif-param-list uuid=.... ←必要なvifを探す。見つけたら、network-uuid(3)をメモする xe vm-list name-label="foo bar" ←とにかく、VMのUUIDを取得する(1) xe vif-list vm-uuid=(1) ←VMに紐づいているvifのリストを取る VIFのUUID(2)が列記される xe vif-destroy uuid=(2) ←VMにattachされているVIFがなくなる xe vif-create vm-uuid=(1) network-uuid=(3) mac=random device=0 ←device 0番に適当に作成(random)したmac addressを つけ、新たなvifとしてVMにattachする
これで、既存のVMに割り当てているNICを置き換える事が出来る。
ということは、こんな事をすればVMをxeコマンドだけで作れるってことかもしれない
事前に、割り当てたいNetworkのUUID(D)を取得する xe vm-install new-name-label="VM のラベル名" template="テンプレートのUUID名" ←VMのUUID(A)が出力される xe vm-param-set uuid=(A) VCPUs-at-startup=1 ←起動時のCPUは1つ xe vm-param-set uuid=(A) VCPUs-max=1 ←CPUの最大値は1つ xe vm-param-set uuid=(A) memory-dynamic-max=1073741824 ←Memoryは1G xe vm-param-set uuid=(A) memory-dynamic-min=1073741824 ←Memoryは1G xe vm-param-set uuid=(A) memory-static-max=1073741824 ←Memoryは1G xe vm-param-set uuid=(A) memory-static-min=134217728 ←Memoryは最小でも100M xe sr-list ←SRのリストを取得。VMを作りたいSRのUUID(B)をメモる xe vdi-create sr-uuid=(B) virtual-size=17179869184 type=system name-label=(VDI のラベル名) sharable=false ←Diskの容量は16G、System Diskとしてラベルをつける VDIのUUID(C)が出力される xe vbd-create bootable=true device=xvda mode=RW type=Disk unpluggable=false vdi-uuid=(C) vm-uuid=(A) ←VBDを作成し、VMと結びつける xe vif-create vm-uuid=(A) network-uuid=(D) mac=random device=0 ←VMにNetworkを割り当てる xe vm-param-set uuid=(A) other-config:install-repository=http://mirror.centos.org/centos/6/os/x86_64 xe vm-param-set uuid=(A) PV-args="ksdevice=eth0" xe vm-param-set uuid=(A) other-config:disable_pv_vnc=1 ←必要なパラメータをセットする xe vm-start uuid=(A) ←VMを起動する xe console uuid=(A) ←VMのConsoleに繋ぐ
あとはpif関連とかパラメータとかを理解すればいいのか。
MTUを9000にする
- XenServ01のeth1のMTUを9000にする場合
[root@XenServ01 ~]# xe pif-list host-name-label=XenServ01 device=eth1 uuid ( RO) : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx device ( RO): eth1 currently-attached ( RO): true VLAN ( RO): -1 network-uuid ( RO): hhhhhhhh-hhhh-hhhh-hhhh-hhhhhhhhhhhh [root@XenServ01 ~]# xe pif-param-set uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx other-config:mtu=9000 [root@XenServ01 ~]#
- これで再起動すれば eth1のMTUが9000になる
- MTUを9000にしたものの、Switching HUBがMTU 9000に対応していないということはままあることですが、その時には、以下をどうぞ
[root@XenServ01 ~]# xe pif-list host-name-label=XenServ01 device=eth1 uuid ( RO) : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx device ( RO): eth1 currently-attached ( RO): true VLAN ( RO): -1 network-uuid ( RO): hhhhhhhh-hhhh-hhhh-hhhh-hhhhhhhhhhhh [root@XenServ01 ~]# xe pif-param-get uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx param-name=other-config : ; mtu: 9000; [root@XenServ01 ~]# xe pif-param-clear uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx param-name=other-config [root@XenServ01 ~]# xe pif-param-get uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx param-name=other-config [root@XenServ01 ~]#
- これでパラメータが消えます。ので、再起動してください。
- 当然、NFSやiSCSIもMTUを1500にしておくほうがいいですよ。
- なお、Xenに限らず、iSCSIやNFSを利用するなら、Networkを独立させて、かつJumbo Packetを通せるSwitchにしておくほうが性能が出ます。
Open vSwitchのメモ
- XenServer(XCP)内のOpen vSwitchの状況を確認する
brctl show
ovs-vsctl show
詳しいことは、これから調査…