転載・引用について

ユーザ用ツール

サイト用ツール


os:xenserver:tips

差分

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

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
os:xenserver:tips [2018/09/27 16:10]
seirios
os:xenserver:tips [2019/09/24 14:10] (現在)
行 1: 行 1:
 ====== XenServer Tips ====== ====== XenServer Tips ======
  
-===== XCP-ng上Guest VMのauto power on ===== +===== XCP-ngで2TiB以上の大きさのDiskをVMに割り付ける =====
-  - 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の適用 ===== +XCP-ng(おそらくはXenServerも)は、XCP-ng Consoleからは2TiB以上Virtual DiskVM割り当てことがでい。この場合の2TiB「割り当られた全てのVirtual Diskの容量合計」あって個々のVirtual Diskの容量はないことに注意が必要である。
-XenServer 6.2からは、XenCenterでPatch適用は出来なくなった。 +
-XenCenterからHotFix適用するは、Citrixからライセンスを買う必要があ。 +
-しかし、さすに個人そんなことをするのは馬鹿げいるので、手動patchを適用する。+
  
-Patch適用の方法はHotFixページ記載されいるがここに一手順を記載しておく+しかし様々な事情により、4TiBVirtual Diskを持つTimeMachine Backup用のVMを作成したい状況なっしまったので以下に記載する。
  
-  - とにかく HotFix をDownloadする +==== 準備 ==== 
-  - とにかく XenServer PoolのPool MasterにHotFixを転送する +今回はBoot用10GiBデータ用4TiBVirtual Disk持つVM作成するのとする。
-    * なおHotFixを転送する前Archiveを展開し、XS62Exxx.xsupdateファイルを転送しておくこと +
-  - pool masterloginし、以下コマンド突っ込む +
-    - ''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活用すること+  - XCP-ng Console等から新規VMを作成する。 
 +  - 普通通りVMを作成すれば良いが自動起動Offにすることと、起動用の10GiBのDiskのみをVMにattachしておく。 
 +  - 作成が終了すれば、VMは起動されないので、準備完了
  
-===== FV時にVMに割り当てるNICe1000にする ===== +==== 4TiBのDiskAttachする ==== 
-http://www.netservers.net.uk/articles/open-source-howtos/citrix_e1000_gigabit+この作業はXCP-ng Consoleからはできないので、XCP-ngにloginし、CLIを駆使して作業する。
  
-XenServer 6.2までの場合 +  - ''xe sr-list name-label=NameOfNAS'' 
-<code> +    * ここ、SRUUIDを取得する。取得したUUIDを以下 [SRuuid] と表記する 
-mv /usr/lib/xen/bin/qemu-dm /usr/lib/xen/bin/qemu-dm.orig +  - ''vgs | awk '{print $1}' | grep [SRuuid]'' 
-vi /usr/lib/xen/bin/qemu-dm.sh+    * ここで、VG名があることを確認する。取得したVG名を以下 [VGname] と表記する 
 +  ''lvcreate -L4T -n"LV-"$(uuidgen) [VGname] --config global{metadata_read_only=0}'' 
 +    * ''-L4T'' は容量が4Tということなので、自分の必要な容量を指定すること 
 +  - ''xe sr-scan uuid=[SRuuid]'' 
 +    * XCP-ng側で新たに作成したLVを認識させる
  
-===== Start of qemu-dm.sh ===== +これで、XCP-ng ConsoleのSRから新たに作成したVirtual Diskが見えるようになっているはずなので、XCP-ng consoleから確認し、準備で作成したVMにattachする
-#!/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 +===== XCP-ngでlocaldiskの処理をする ===== 
-chattr +i /usr/lib/xen/bin/qemu-dm +XCP-ng環境において(おそらくXenServerでもそのまま適用できるはず)、あるXenServer hostにlocal storageを追加する必要に迫られることがある。 
-</code>+この時に、以下の状況が発生して酷い目にあうことがあるので、復旧方法のメモを。
  
-XenServer 6.5場合 +  - XenServerでPoolを組んでいる 
-<code> +    * ここでは、Pool masterをXS-M/その他のサーバーとしてXS-Sの2台でPoolを構成していると仮定する 
-mv /usr/lib64/xen/bin/qemu-dm /usr/lib64/xen/bin/qemu-dm.orig +  - Pool masterではないPool構成ServerにLocal Diskを追加して、それを認識させる 
-vi /usr/lib64/xen/bin/qemu-dm.sh+    * 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に再度接続したら事象が発生した
  
-===== Start of qemu-dm.sh ===== +このような局面で、通常通りにLocal SRを構築してしまうと、Local-Add-1に記録されたVMのDisk Imageがなくなってしまい、痛い思いをすることになる。
-#!/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+というわけで、ここでは、 
 +  Local SRの作り方 
 +  切り離されたLocal SRをReAttachする方法 
 +を記述する
  
-chmod 755 /usr/lib64/xen/bin/qemu-dm +=== Local SRの作り方 === 
-chattr +i /usr/lib64/xen/bin/qemu-dm+  * 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> </code>
 +  - Pool Masterを再起動
 +  - Poolを構成するMaster以外のServerを再起動
  
-なお、qemu-dm.shは、環境変数に格納されている文字列の文字列置換を行っているで、bash以外で正しく動作する保証が無い+===== XCP-ng 7.4から7.5へUpgrade =====
  
-この方法FV時のNICをe1000とし認識させる場合XenServerのupdate(HotFix)を適用すると問題が出る場合がある。 +  * [[https://xcp-ng.org/2018/08/10/xcp-ng-7-5-upgrade/]] を参照 
-これは、chattrを利用してqemu-dmを保護しているからである従って、HotFix適用の際には、適用前に以下を実施する +    * 記事執筆時点、7.6がRelease Candidateになっおり7.5系は7.5.1になっていとに注意。 
-<code> +    * 手順おそらく変わらないだろうから記載しておく
-*** XenServer 6.2まで *** +
-chattr -i /usr/lib/xen/bin/qemu-dm+
  
-*** XenServer 6.5から *** +  - まず、対象poolのpool masterにsshなどでloginする 
-chattr -/usr/lib64/xen/bin/qemu-dm+  - 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> </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''
  
-この保護を入れる理由は、単純にUpdateされてしまい、qemu-dmが置き換えられてしまうと、NICがrtl8139に認識されるようになってしまうからである。つまり、あえてUpdateを失敗させて、やり直しできるようにするのが目的である。 
  
 ===== MetaData Backup ===== ===== MetaData Backup =====
os/xenserver/tips.1538032230.txt.gz · 最終更新: 2019/01/20 00:02 (外部編集)