転載・引用について

ユーザ用ツール

サイト用ツール


os:xenserver:tips

文書の過去の版を表示しています。


XenServer Tips

XCP-ng 7.4から7.5へのUpgrade

    • 記事執筆時点で、7.6がRelease Candidateになっており、7.5系は7.5.1になっていることに注意。
    • 手順はおそらく変わらないだろうから、記載しておく。
  1. まず、対象poolのpool masterにsshなどでloginする
  2. xsconsoleコマンドを実行する
    1. Backup, Restore and Update を選択する
    2. Backup Virtual Machine Metadata を選択する
    3. Root passwordを入力する
    4. Backupファイルを設置するSRを選択する。今回は local storage
    5. 数分待つ
    6. QUITする
  3. 別の手段としてCommandlineから xe pool-dump-database filename=[Filename].xml を実行
  4. 以下のコマンドを実行
    • 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
  5. Pool masterを再起動
  6. 以下、Poolに所属している他のServerも同様に更新する

XCP-ng上でのGuest VMのauto power on

  1. xe pool-list で、pool の uuid をゲット xe pool-list
  2. POOL上の auto startを有効化 xe pool-param-set uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx other-config:auto_poweron=true
  3. 有効化したい 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のページに記載されているが、ここに一応手順を記載しておく

  1. とにかく HotFix をDownloadする
  2. とにかく XenServer PoolのPool MasterにHotFixを転送する
    • なお、HotFixを転送する前には、Archiveを展開し、XS62Exxx.xsupdateファイルを転送しておくこと
  3. pool masterにloginし、以下のコマンドを突っ込む
    1. xe patch-upload -s localhost -u root -pw <password> file-name=<path_to_update_file>/XSxxExxx.xsupdate
      • ここで、出力されるUUIDをメモする。
    2. このタイミングで、もし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
    3. xe -s localhost -u root -pw <password> patch-pool-apply uuid=[上記UUID]
      • これで patchが適用されるはず
    4. xe patch-list -s localhost -u root -pw <password> name-label=XSxxExxx
      • システムにpatchが適用されているか確認。なお、name-labelを省略すると、適用されている全HotFixが表示される
    5. 必要に応じて、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

  1. xsconsole
  2. Backup, Restore and Update
  3. 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のメモ

  1. XenServer(XCP)内のOpen vSwitchの状況を確認する
    • brctl show
    • ovs-vsctl show

詳しいことは、これから調査…

このウェブサイトはクッキーを使用しています。 Webサイトを使用することで、あなたはあなたのコンピュータにクッキーを保存することに同意します。 また、あなたはあなたが私たちのプライバシーポリシーを読んで理解したことを認めます。 同意しない場合はウェブサイトを離れてください。クッキーに関する詳細情報
os/xenserver/tips.1538037179.txt.gz · 最終更新: 2018/09/27 17:32 by seirios

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki