トラブル等関連
DiskFull
XenServerは、どうもlogrotate時にlogファイルを削除しない模様。また、XenServerを普通にInstallすると、Control DomainのDiskは4Gになる。
その結果、Control DomainのDiskが埋まってしまう事がある。そういう場合には、loginした上で、
# cd /var/log
# rm -f *.[0-9][0-9].gz
# rm -f *.[0-9][0-9][0-9].gz
すれば良い。ただし、間違ったファイルを消さないよう、事前に確認をちゃんとする事。
No interface present
XenServer 6.2SP1にHotFixを適用後再起動したら、PoolのSlave側で No interface present
となった。
この症状がなぜ出るのかは不明だが、以下の条件の場合には復旧できる可能性がある。
XenServerのコンソールから Network and Management console
をみると、No interface presentが表示される
XenServerのコンソールから Local Command Shell
を選択する
ifconfig -a を実行し、Ethernet portが認識されているかを確認する
xe pif-listを実行する
この状況の場合、以下の手段で復旧する「ことがある」
Local Command Shellから以下のコマンドを入力する
xe pool-emergency-transition-to-master
すると、pool構成員から(一時的に)masterに戻る
Local Command Shellを抜け、Network and Management consoleを選択
Management I/FにIP Addressを設定する
再起動
これで戻らない場合は、更に格闘が必要だが、そこまで至っていないので、どうなるのかは不明。
なお、XenServerでHAを構成している場合には、xe host-emergency-ha-disable
の前に、xe host-emergency-ha-disable
を入力して、HAをOffにすること
Taskが進行せずPendingになった時の対処
VMをどうしてもrebootできないとき
Last Update: 20240718 : refresh sequence and replace commands.
VMがどうしてもrebootできないことがある。
そういう時にはまず
xe vm-reboot UUID=${vm_uuid}
だめなら、さらに強制的に再起動する
xe vm-reboot UUID=${vm_uuid} force=true
これでも駄目だ。もういい!
VM の UUID を確認
list_domains コマンドで VM の domain ID (!=UUID) を確認
xl destroy ${ID}
xe vm-reset-powerstate –force uuid=${vm_uuid} もしくは xe vm-reset-powerstate –force vm=${vm_name}
かなり危険
See https://xcp-ng.org/forum/topic/3771/vm-migration-failed-now-can-t-access-vm/7
VDI is not available
The VDI is not available. というエラーメッセージが XenCenter の Logs タブに出現した時(By motoさん)
当該VMに紐付いたディスクイメージ(Xen的にはvdi)が見つからない状態である。
当該VMの名前が“exampleVm”であれば、xe vbd-list vm-name-label=examleVMコマンドを実行してvbdを特定する。
通常、各VMにはDVD-ROMドライブとHDDドライブのふたつのvbdがattachされているので上のコマンドの実行結果にもふたつのvbdが表示される。
このうちHDDのvbdにはvdiのuuidが付いており、上のコマンドの出力結果ではvdi-uuid欄に表示されているのでメモする。これをVDIUUIDとする。
xe vdi-list uuid=VDIUUIDを実行して、sr-uuidを確保する
xe vdi-list name-label=Diskの名前で検索することも可能
XenCenterで当該HDDをdetatchする
xe vdi-forget uuid=VDIUUIDコマンドを実行して当該VDIを一旦XenServerのデータベースから消す。
SRのデータベースに再登録させるためにxe sr-scan uuid=SRUUIDコマンドを実行する。
XenCenterの当該SRのStorageタブに無名のvdiが出現するので、Property設定から名称などを指定する。
XenCenterの当該VMのStorageタブでこのvdiを指定して当該VMがbootするディスクイメージとする。
これでbootすれば復活できる場合がある。
XenServerに接続しているiSCSI SRが破損した場合の対応
この記事は、以下の状況に陥った場合の解決策(解決できるかもしれない策)である。
XenServerにiSCSIをSRとして接続している場合に於いて
何らかの理由で、XenServer側からiSCSI SRに記録されているVDIが見えなくなった
見えなくなった理由が、破損がVDI単位ではなく、SR単位であると考えられる
このような障害に見舞われた場合、XenCenter等で“VDI is not available”が出力される。
単順な対策に関しては、別に記載したが、その方法では復旧できない場合に、神に祈るような想いで実施する手順である。
この記事の元になった障害事象は、
である。
- まず確認すべき事項
XenServerのPool Masterにloginする
xe sr-scanを実行
ls /dev/mapperを実施し、iSCSI SRのUUIDと比較
lvscanを実行
xe sr-scan実行時に出力された異常なUUIDを探す
この状況であるなら、この記事に記載する方法によって復旧する可能性がある。
これは、この状況に陥っている場合、
LVM イメージは存在しないにもかかわらず
LVM側のMetaDataには「存在しないはずの」LVMの情報が残っており
sr-scanでLVM情報を確認してXenServerに読み込もうとしたが
イメージが存在しないので読み込めず
結果The VDI is not availableとなった
という状況であると考えられる。
この場合、XenServer pool側では、そもそもSRが異常なので、そのSRにVDIが記録されている全てのVMが正しく動作しないはずである。
(なぜなら、この状況では、XenServerはPoolからSRを切り離す等するはずだからである)
以下復旧手順
lvdisplayを実行し、xe sr-scanにて表示された「存在しないはずのVDIのUUID」を探す
その結果、LV Nameに/dev/VG_XenStorage-xxxx/VHD-[存在しないはずのVDIのUUID]
というLogical volumeが見つかるはずである。
これが見つかった場合には、以下を実施
まず、当該のSRのFull Dump(もしくはDuplicate)を実施し、最悪の場合に元に戻せるようにする
lvremove /dev/VG_XenStorage-xxxx/VHD-[存在しないはずのVDIのUUID]
を実行する
xe sr-scanを再度実行する
これでなおることがある。
参考: discypus Linux/LVM/LVMの削除