web-dev-qa-db-ja.com

xenserverスナップショットチェーンが長すぎます

XenServer 6.2サーバーを1か月ほど実行していますが、最近、VMの1つがスナップショットを実行しません。

すべてのスナップショットを削除しましたが、「スナップショットチェーンが長すぎます」というエラーが表示されます。 XenServerの古いバージョンでも同様の問題が報告されていますが、常にこれが6.2で解決されています。

これが、snapApr 2821:39:02を試行したときに作成されたSMlogの多くの行の終わりです。

normandy SM: [10191] lock: closed /var/lock/sm/lvm-d964aab2-8278-2e43-d79b-4cdb394a6646/4cef1b2c-9461-4525-851d-1f908087a8b2
Apr 28 21:39:02 normandy SM: [10191] lock: acquired /var/lock/sm/lvm-d964aab2-8278-2e43-d79b-4cdb394a6646/173a35a9-8aff-42b3-9cbb-a6d05ec3e9dc
Apr 28 21:39:02 normandy SM: [10191] Refcount for lvm-d964aab2-8278-2e43-d79b-4cdb394a6646:173a35a9-8aff-42b3-9cbb-a6d05ec3e9dc (2, 0) + (-1, 0) => (1, 0)
Apr 28 21:39:02 normandy SM: [10191] Refcount for lvm-d964aab2-8278-2e43-d79b-4cdb394a6646:173a35a9-8aff-42b3-9cbb-a6d05ec3e9dc set => (1, 0b)
Apr 28 21:39:02 normandy SM: [10191] lock: released /var/lock/sm/lvm-d964aab2-8278-2e43-d79b-4cdb394a6646/173a35a9-8aff-42b3-9cbb-a6d05ec3e9dc
Apr 28 21:39:02 normandy SM: [10191] lock: closed /var/lock/sm/lvm-d964aab2-8278-2e43-d79b-4cdb394a6646/173a35a9-8aff-42b3-9cbb-a6d05ec3e9dc
Apr 28 21:39:02 normandy SM: [10191] ***** generic exception: vdi_snapshot: EXCEPTION SR.SROSError, The snapshot chain is too long
Apr 28 21:39:02 normandy SM: [10191]   File "/opt/xensource/sm/SRCommand.py", line 106, in run
Apr 28 21:39:02 normandy SM: [10191]     return self._run_locked(sr)
Apr 28 21:39:02 normandy SM: [10191]   File "/opt/xensource/sm/SRCommand.py", line 153, in _run_locked
Apr 28 21:39:02 normandy SM: [10191]     return self._run(sr, target)
Apr 28 21:39:02 normandy SM: [10191]   File "/opt/xensource/sm/SRCommand.py", line 231, in _run
Apr 28 21:39:02 normandy SM: [10191]     return target.snapshot(self.params['sr_uuid'], self.vdi_uuid)
Apr 28 21:39:02 normandy SM: [10191]   File "/opt/xensource/sm/LVMSR", line 1448, in snapshot
Apr 28 21:39:02 normandy SM: [10191]     return self._snapshot(snapType)
Apr 28 21:39:02 normandy SM: [10191]   File "/opt/xensource/sm/LVMSR", line 1546, in _snapshot
Apr 28 21:39:02 normandy SM: [10191]     raise xs_errors.XenError('SnapshotChainTooLong')
Apr 28 21:39:02 normandy SM: [10191]   File "/opt/xensource/sm/xs_errors.py", line 49, in __init__
Apr 28 21:39:02 normandy SM: [10191]     raise SR.SROSError(errorcode, errormessage)
Apr 28 21:39:02 normandy SM: [10191]
Apr 28 21:39:02 normandy SM: [10191] lock: closed /var/lock/sm/d964aab2-8278-2e43-d79b-4cdb394a6646/sr

私は髪を抜いています。誰かが私を正しい方向に向けることができれば本当にありがたいです。

ありがとうございました

2
Paul Whalley

Xenserver 5.5から6.02でこの問題が発生し、ハードウェアが完全に変更されました。これを修正する唯一の確実な方法は、サーバーを新しいストレージリポジトリにコピーし、古いVMを削除することです。メインサーバーは約2%のCPUで動作するため、合体などのバックグラウンドプロセスが終了するのを待つことは問題ではありません。

/usr/bin/vhd-util scan -f -a -p -c -m VHD-* -l `/usr/sbin/vgdisplay|grep Name|awk '{print $3}'`

フェラーオ氏が上で示したように、私にすべてのチェーンのリストを取得します。そのリストをファイルにリダイレクトすると、私が「良い」チェーンと「悪い」チェーンと呼んでいるものが表示されます。良いチェーン:

vhd=VHD-7c12552c-96fb-413f-8cc7-4cb7a6a1bd88 capacity=8589934592 size=4777312256 hidden=1 parent=none
vhd=VHD-f9a91117-0062-473b-89f9-95030f57b736 capacity=8589934592 size=8615100416 hidden=0 parent=VHD-7c12552c-96fb-413f-8cc7-4cb7a6a1bd88
vhd=VHD-1d070bb9-1dda-4e13-a732-9bbc3e7e0af2 capacity=8589934592 size=4236247040 hidden=1 parent=VHD-7c12552c-96fb-413f-8cc7-4cb7a6a1bd88
  vhd=VHD-6f9b7573-0ef5-44d9-bde9-47587f78fc86 capacity=8589934592 size=8388608 hidden=0 parent=VHD-1d070bb9-1dda-4e13-a732-9bbc3e7e0af2
  vhd=VHD-f15cc2d8-d1ee-4b11-9853-5c84cab81715 capacity=8589934592 size=2646605824 hidden=1 parent=VHD-1d070bb9-1dda-4e13-a732-9bbc3e7e0af2
     vhd=VHD-32266eef-6665-4aac-83c5-5e1ab0c01861 capacity=8589934592 size=8388608 hidden=0 parent=VHD-f15cc2d8-d1ee-4b11-9853-5c84cab81715
     vhd=VHD-a910a28c-a484-48ae-86fb-8a53eab7db65 capacity=8589934592 size=2176843776 hidden=1 parent=VHD-f15cc2d8-d1ee-4b11-9853-5c84cab81715
        vhd=VHD-ecf62cd9-a76f-4a28-a27d-6a1f7b464554 capacity=8589934592 size=8388608 hidden=0 parent=VHD-a910a28c-a484-48ae-86fb-8a53eab7db65
        vhd=VHD-1ec4deff-f04f-4272-9edc-78b0f9fd9cff capacity=8589934592 size=2122317824 hidden=1 parent=VHD-a910a28c-a484-48ae-86fb-8a53eab7db65
           vhd=VHD-026f73b5-8600-47ee-ada1-3628b4a04a19 capacity=8589934592 size=8388608 hidden=0 parent=VHD-1ec4deff-f04f-4272-9edc-78b0f9fd9cff
           vhd=VHD-4659cef9-64a3-4fca-bf54-3bcc23665c36 capacity=8589934592 size=8615100416 hidden=0 parent=VHD-1ec4deff-f04f-4272-9edc-78b0f9fd9cff

ボックスがここで行を折り返していることはわかりませんが、通常は非表示と非表示の行があり、次に別の非表示の非表示の行(hidden = 1またはhidden = 0)が表示されます。スナップショットとしてのXenCenter。ただし、「チェーンが長すぎる」ステータスに向けて構築されているVMは異なって見えます。

vhd=VHD-970758dc-a396-4503-ae24-ebf093759947 capacity=19864223744 size=19633537024 hidden=1 parent=none
vhd=VHD-9ef661b3-d20e-401a-be01-d4a020960c17 capacity=19864223744 size=1769996288 hidden=1 parent=VHD-970758dc-a396-4503-ae24-ebf093759947
  vhd=VHD-00864374-1fa2-4492-9c1c-0e6fdf89de7a capacity=19864223744 size=3133145088 hidden=1 parent=VHD-9ef661b3-d20e-401a-be01-d4a020960c17
     vhd=VHD-101649bf-13af-4ba2-948d-d7db192ca7ad capacity=19864223744 size=1950351360 hidden=1 parent=VHD-00864374-1fa2-4492-9c1c-0e6fdf89de7a
        vhd=VHD-83dca990-f158-41bc-b32b-69f8f8862c15 capacity=19864223744 size=3233808384 hidden=1 parent=VHD-101649bf-13af-4ba2-948d-d7db192ca7ad
           vhd=VHD-8cb96357-c872-40e2-adb2-aa1bbe613dca capacity=19864223744 size=1610612736 hidden=1 parent=VHD-83dca990-f158-41bc-b32b-69f8f8862c15
              vhd=VHD-84dca005-af4b-4615-88cb-124977b13c8e capacity=19864223744 size=3468689408 hidden=1 parent=VHD-8cb96357-c872-40e2-adb2-aa1bbe613dca
                 vhd=VHD-b0904a6f-c169-4d6b-816d-9d775600535d capacity=19864223744 size=1925185536 hidden=1 parent=VHD-84dca005-af4b-4615-88cb-124977b13c8e
                    vhd=VHD-e268d580-a245-4960-a13f-9a9c252fc9e8 capacity=19864223744 size=3980394496 hidden=1 parent=VHD-b0904a6f-c169-4d6b-816d-9d775600535d
                       vhd=VHD-ac706540-ba7c-4eba-b919-aa88784ae796 capacity=19864223744 size=1933574144 hidden=1 parent=VHD-e268d580-a245-4960-a13f-9a9c252fc9e8
                          vhd=VHD-96a39f51-5c1a-4234-974e-7de91b4e49f2 capacity=19864223744 size=3170893824 hidden=1 parent=VHD-ac706540-ba7c-4eba-b919-aa88784ae796
                             vhd=VHD-32b1d67c-1011-460b-ac5d-5d83ade7e5f2 capacity=19864223744 size=1673527296 hidden=1 parent=VHD-96a39f51-5c1a-4234-974e-7de91b4e49f2
                                vhd=VHD-81f9dda9-e26d-49bb-97f3-72cbb9a4c4bf capacity=19864223744 size=19910361088 hidden=0 parent=VHD-32b1d67c-1011-460b-ac5d-5d83ade7e5f2

繰り返しますが、これが折り返さずに表示されるかどうかはわかりませんが、最初の例のように行が非表示、非表示、非表示、非表示などではなく、すべて非表示、非表示、非表示などになっていることに注意してください。

非表示の非表示行の各セットを加算および減算するスクリプトのセットを作成しました。非表示の行が5または6を超えて加算され始めると、メールで通知されます。上記の行を実行して、結果のチェーンのリストを週に2回確認するのがどれほど問題があるかはわかりませんが、3秒間見ると、すぐに2段階の(良い)チェーンと単独のチェーンが表示されます。 「悪い」チェーンのインデントされた行。 (2台のマシンのプールで約35 vmsを実行するため、大きな操作ではありません。)

「不良」チェーンから戻って、どのサーバーがそれに属しているかを確認する方法:簡単な手動の方法は、「不良」チェーンをコピーして、それらに対してスクリプトを実行することです。私はこれを実行します:

#!/bin/bash
TODAY=`date +"%m.%d.%y"`
IFS='
' 
filearray=(`cat $1`)
hidcnt=0

for lin in ${filearray[@]}
do
  echo $lin|grep "hidden=0" >NULL
  if [ ${PIPESTATUS[1]} == "0" ];
then
   matchstr=$(echo $lin|awk '{print $1}'|awk -F"-" '{print $6}')
echo "vhd search string=" $matchstr
/var/log/namefromchain.sh $matchstr
fi
done

これはnamefromchain.shを呼び出します。これは次のとおりです。

xe vbd-list|grep -B1 $1|grep vm-name-label|awk -F"RO): " '{print $2}'

なぜそれらが2つの別々のスクリプトであるのか思い出せませんが、私はこのようなことについてはあまり経験がありません。疣贅を取り除き、状況に適応する必要がありますが、概念はそこにあります。

1
user238047

合体プロセスがすでに完了していることを確認する必要があります。すべてがうまくいったかどうかを確認する方法はたくさんあります。

まず、XenServerメインノードにsshを入力し、次の手順を実行します。

xe sr-list

作業中のVMのストレージリポジトリのUUIDを取得します。その後、vhd-utilのチェーンVHDファイルがあるかどうかを確認します。

vhd-util scan -f -m "VHD-*" -l "VG_XenStorage-${UUID-Of-Your-SR}" -p

${UUID-Of-Your-SR}を最初のコマンドのSRUUIDに置き換えます。

SR内のすべてのVHDを出力し、VHDチェーンを持つVHDはツリーとして表示されます。ツリーがまだ存在する場合は、xeがまだVHDを処理しているかどうかを確認できます。これを行うには、次のように入力します。

xe task-list

そして、出力を観察します。出力が空の場合は、vhd-utilprocessが実行されているかどうか、プールのすべてのサーバーをチェックインする必要があります。はいの場合、XeToolstackでは問題として扱う必要があります。

問題を解決する別の方法は、問題のあるVMディスクをコピーし、このディスクで新しいVMを開始しようとすることです。コピーされるため、XenServerはVHDチェーンを調べて、すべてのVHDが1つのイメージに統合された1つのVHDイメージを作成します。

これが大きな問題であることはわかっていますが、XenServerで期待どおりに機能しないのはVHDだけです。

1