転載・引用について

ユーザ用ツール

サイト用ツール


os:xenserver:tips

差分

このページの2つのバージョン間の差分を表示します。


前のリビジョン
os:xenserver:tips [2019/01/04 02:08] – [XCP-ng上でのGuest VMのauto power on] seirios
行 1: 行 1:
-====== XenServer Tips ====== 
  
-===== XCP-ngでlocaldiskの処理をする ===== 
-XCP-ng環境において(おそらくXenServerでもそのまま適用できるはず)、あるXenServer hostにlocal storageを追加する必要に迫られることがある。 
-この時に、以下の状況が発生して酷い目にあうことがあるので、復旧方法のメモを。 
- 
-  - XenServerでPoolを組んでいる 
-    * ここでは、Pool masterをXS-M/その他のサーバーとしてXS-Sの2台でPoolを構成していると仮定する 
-  - Pool masterではないPool構成ServerにLocal Diskを追加して、それを認識させる 
-    * XS-Sに2TのDiskを接続し、Local SRとしてVMを設定する。接続されたDiskが仮に、sdbとして認識されたとする 
-    * Diskとしてどう認識されたのか、はdmesgなどを利用して確認すること。いくつかの手段は後述する 
-  - 新たに接続したDiskをLocal SR(name-label=Local-Add-1)として認識させる 
-  - VMなどを設置して稼働させる 
-  - なんらかの理由でXS-Sから追加したLocal-Add-1が消えた 
-    * 今回は、XCP-ngのUpdate時にうまく更新ができず、一度Poolから外してPoolに再度接続したら事象が発生した 
- 
-このような局面で、通常通りにLocal SRを構築してしまうと、Local-Add-1に記録されたVMのDisk Imageがなくなってしまい、痛い思いをすることになる。 
- 
-というわけで、ここでは、 
-  - Local SRの作り方 
-  - 切り離されたLocal SRをReAttachする方法 
-を記述する 
- 
-=== Local SRの作り方 === 
-  * HDDをXS-Sに接続する 
-    * 近年では、Hot Plugができる筐体とMotherBoardが普及しているので、rebootしないで済む可能性がある 
-  * ''dmesg'' コマンドや''cat /proc/partitions'' などから、新たに接続されたDeviceのdevice nameを確認する 
-    * どのDiskが新しいDiskかを判断するのは実は結構難しい。 
-    * 個人的には、''dmesg''を利用してDevice nameを確認し、''/proc/partition''の当該の#blocksを見て容量から正誤判断することが多い 
-  * ''ls -l /dev/disk/by-id''の出力を確認し、Symbolic Linkの出力を見ながら、DiskのLabelを確認する。 
-    * 今回は、''wwn-0xzzzzzzzzzzzzzzzz -> ../../sdb''から、DiskのLabelが''wwn-0xzzzzzzzzzzzzzzzz''であるとする 
-  * ''xe host-list''を実行し、XS-Sのhost-UUIDを取得する 
-    * 今回は、host-uuidが''yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy''であるとする。 
-  * ''xe sr-create name-label="Local-Add-1" type=lvm device-config:device=/dev/disk/by-id/wwn-0xzzzzzzzzzzzzzzzz host-uuid=yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy'' を実行する 
-    * この時、追加したsdbはlvmで初期化されてしまうことに注意 
-    * 通常は問題にならないが、Partitionが分離されている場合、注意すること 
- 
-これで、XCP-ng Center(XenCenter)の左側のペイン(Resource Pain)のXS-Sに、Local-Add-1が追加される 
- 
-=== (おまけ) 追加したLocal Storageを完全に切り離す方法 === 
-  * ''xe sr-list name-label="Local-Add-1"'' を実行し、SRのUUIDを取得する 
-    * SRのUUIDを''xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx''とする 
-  * ''xe pbd-list sr-uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx''を実行し、PBDのUUIDを取得する 
-    * PBDのUUIDを''wwwwwwww-wwww-wwww-wwww-wwwwwwwwwwww''とする 
-  * ''xe pbd-unplug uuid=wwwwwwww-wwww-wwww-wwww-wwwwwwwwwwww'' を実行し、PBDを切り離す 
-  * ''xe sr-forget uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'' を実行し、SRを削除する 
-  * ''xe pbd-destroy uuid=wwwwwwww-wwww-wwww-wwww-wwwwwwwwwwww'' を実行し、PBDを削除する 
- 
-これで、コマンドラインからlocal SRとLocal Diskを切り離せる。 
- 
-=== 切り離されたLocal SRをReattachする方法 === 
- 
-ここで、切り離さ亜れたDiskをLocal SRとして再度認識させる方法を以下に記載する 
- 
-  - pvdisplayを実行する 
-    * 対象となる''/dev/sdb''のVG Nameを確認する。このVG Nameが存在しない場合、本件のScope外となるので色々調べてください。 
-    * ここでは、VG Nameが''VG_XenStorage-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx''であるとする。 
-    * つまり、VG Name内に、SR-UUIDが記録されているということである。 
-  - ''xe sr-introduce uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx name-label="Local-Add-1" type=lvm''を実行して、SRを作成する 
-    * この段階で Resource PainにDisk Iconに''×''が付いた状態ではあるが、SRが認識される 
-  - ''xe pbd-create host-uuid=yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy sr-uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx device-config:device=/dev/disk/by-id/wwn-0xzzzzzzzzzzzzzzzz'' を実行し、PBDを作成する 
-    * これで、SRと物理Diskの接続が明確になる 
-    * PBDのUUIDが表示される。ここでは、''vvvvvvvv-vvvv-vvvv-vvvv-vvvvvvvvvvvv''とする 
-  - ''xe pbd-list uuid=vvvvvvvv-vvvv-vvvv-vvvv-vvvvvvvvvvvv''を実行し、PBDの状況を確認する 
-    * これで、Resource PainのXS-Sの所に、''Local-Add-1''が''×''付きのまま移動する 
-    * currently-attachedが**false**であることに注意。 
-  - ''xe pbd-plug uuid=vvvvvvvv-vvvv-vvvv-vvvv-vvvvvvvvvvvv''を実行し、PBDを接続する 
-    * これで、Resource PainのXS-Sの所あった''×''が消える 
-    * Resource Painから''Local-Add-1''を選択し、Storage Tabを確認すると、DiskのListが表示される 
-    * あとは、じっくり、正しいVMにDiskを接続していけばよい 
-  - (おまけ) ''xe vdi-list sr-uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx''とすると、SR内に存在するVDI(Virtual Disk Image)が表示される。 
-    * Storage Tabで表示される情報が出る。 
- 
-===== XCP-ng 7.5から7.5.1へのUpdate ===== 
-  - 以下のコマンドを実行 
-    * <code> 
-yum update -y 
-</code> 
-  - Pool Masterを再起動 
-  - Poolを構成するMaster以外のServerを再起動 
- 
-===== XCP-ng 7.4から7.5へのUpgrade ===== 
- 
-  * [[https://xcp-ng.org/2018/08/10/xcp-ng-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'' を実行 
-  - 以下のコマンドを実行 
-    * <code> 
-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 
-</code> 
-  - 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'' 
- 
-===== FV時にVMに割り当てるNICをe1000にする ===== 
-http://www.netservers.net.uk/articles/open-source-howtos/citrix_e1000_gigabit 
- 
-XenServer 6.2までの場合 
-<code> 
-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 
-</code> 
- 
-XenServer 6.5からの場合 
-<code> 
-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 
-</code> 
- 
-なお、qemu-dm.shは、環境変数に格納されている文字列の文字列置換を行っているので、bash以外で正しく動作する保証が無い 
- 
-この方法でFV時のNICをe1000として認識させる場合、XenServerのupdate(HotFix)を適用するときに問題が出る場合がある。 
-これは、chattrを利用してqemu-dmを保護しているからである。従って、HotFix適用の際には、適用前に以下を実施する 
-<code> 
-*** XenServer 6.2まで *** 
-chattr -i /usr/lib/xen/bin/qemu-dm 
- 
-*** XenServer 6.5から *** 
-chattr -i /usr/lib64/xen/bin/qemu-dm 
-</code> 
- 
-この保護を入れる理由は、単純にUpdateされてしまい、qemu-dmが置き換えられてしまうと、NICがrtl8139に認識されるようになってしまうからである。つまり、あえてUpdateを失敗させて、やり直しできるようにするのが目的である。 
- 
-===== MetaData Backup ===== 
-  - xsconsole 
-  - Backup, Restore and Update 
-  - Backup Virtual Machine Metadata 
-の順でメニューを選べばあとはみたまま。 
- 
-===== Console画面を出す ===== 
-<code> 
-[root@XenServ01 ~] xsconsole 
-</code> 
- 
-===== xeでVMのNICをいじる ===== 
-xeコマンドでVMのNICをいじる為のメモ。 
- 
-AMDのブルドーザーコアマシンを使っていて、流石に古くなったので別のIntel XeonマシンにVMを移設した。 
-細かいところは今度まとめるので、テキストでメモ書き 
- 
-<code> 
-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する 
-</code> 
-これで、既存のVMに割り当てているNICを置き換える事が出来る。 
- 
-ということは、こんな事をすればVMをxeコマンドだけで作れるってことかもしれない 
-<code> 
-事前に、割り当てたい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に繋ぐ 
-</code> 
-あとはpif関連とかパラメータとかを理解すればいいのか。 
- 
-===== MTUを9000にする ===== 
-    * XenServ01のeth1のMTUを9000にする場合 
-<code> 
-[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 ~]#  
-</code> 
-    * これで再起動すれば eth1のMTUが9000になる 
-  * MTUを9000にしたものの、Switching HUBがMTU 9000に対応していないということはままあることですが、その時には、以下をどうぞ 
-<code> 
-[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 ~]#  
-</code> 
-  * これでパラメータが消えます。ので、再起動してください。 
-    * 当然、NFSやiSCSIもMTUを1500にしておくほうがいいですよ。 
-  * なお、Xenに限らず、iSCSIやNFSを利用するなら、Networkを独立させて、かつJumbo Packetを通せるSwitchにしておくほうが性能が出ます。 
- 
-===== Open vSwitchのメモ ===== 
-  - XenServer(XCP)内のOpen vSwitchの状況を確認する 
-    * ''brctl show'' 
-    * ''ovs-vsctl show'' 
-詳しいことは、これから調査... 
os/xenserver/tips.txt · 最終更新: 2023/10/25 03:06 by seirios

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki