BLOGTIMES
2012/12/29

ghettoVCB がハングするのでスクリプトをちょっと手直ししてみた

  esxi 
このエントリーをはてなブックマークに追加

ESXi 上の VM のバックアップを取るときには以前から ghettoVCB を使っているのですが、いくつかのマシンで途中でスクリプトがだんまりになってしまって、うまくバックアップがとれないという症状が発生していました。

これまでいろいろと試行錯誤してみて分かったことは、
 ・ESXi のバージョンに依存した問題で、該当のマシンであれば 100% ハングする。
 ・ハングはスナップショットの削除待ちの部分。手動でスナップショットを削除してやれば、スクリプトは何事もなかったように動き出す。
という2点でした。

さすがにちょっと手動で vmdk のバックアップを取るのも面倒になってきたので本格的に対策をしようと思って調べてみたところ、同じような問題にぶち当たって解決しているエントリ*1*2を見つけたので、これを参考に対策をしてみることにしました。

スクリプトの改造点

以前作った qmail 向けのパッチと合わせたのが下記のパッチです。
僕のところではこれで正常にバックアップが取れることを確認しました。

diff -u ghettoVCB.sh.org ghettoVCB.sh

--- ghettoVCB.sh.org 2012-12-28 23:28:15.844038192 +0900 +++ ghettoVCB.sh 2012-12-28 23:36:57.009311583 +0900 @@ -932,7 +932,7 @@ SNAPSHOT_ID=$(${VMWARE_CMD} vmsvc/snapshot.get ${VM_ID} | grep -E '(Snapshot Name|Snapshot Id)' | grep -A1 ${SNAPSHOT_NAME} | grep "Snapshot Id" | awk -F ":" '{print $2}' | sed -e 's/^[[:blank:]]*//;s/[[:blank:]]*$//') ${VMWARE_CMD} vmsvc/snapshot.remove ${VM_ID} ${SNAPSHOT_ID} > /dev/null 2>&1 else - ${VMWARE_CMD} vmsvc/snapshot.remove ${VM_ID} > /dev/null 2>&1 + ${VMWARE_CMD} vmsvc/snapshot.removeall ${VM_ID} > /dev/null 2>&1 fi #do not continue until all snapshots have been committed @@ -1119,7 +1119,8 @@ for i in ${EMAIL_TO}; do buildHeaders ${i} - "${NC_BIN}" -i "${EMAIL_DELAY_INTERVAL}" "${EMAIL_SERVER}" "${EMAIL_SERVER_PORT}" < "${EMAIL_LOG_CONTENT}" > /dev/null 2>&1 +# "${NC_BIN}" "${EMAIL_SERVER}" "${EMAIL_SERVER_PORT}" < "${EMAIL_LOG_CONTENT}" > /dev/null 2>&1 + awk '{gsub(/\r/,""); gsub(/$/,"\r"); print $0;}' "${EMAIL_LOG_CONTENT}" | "${NC_BIN}" -v -C -i 1 "${EMAIL_SERVER}" "${EMAIL_SERVER_PORT}" > /dev/null 2>&1 if [ $? -eq 1 ]; then logger "info" "ERROR: Failed to email log output to ${EMAIL_SERVER}:${EMAIL_SERVER_PORT} to ${EMAIL_TO}\n" fi @@ -1127,7 +1128,8 @@ unset IFS else buildHeaders ${EMAIL_TO} - "${NC_BIN}" -i "${EMAIL_DELAY_INTERVAL}" "${EMAIL_SERVER}" "${EMAIL_SERVER_PORT}" < "${EMAIL_LOG_CONTENT}" > /dev/null 2>&1 +# "${NC_BIN}" "${EMAIL_SERVER}" "${EMAIL_SERVER_PORT}" < "${EMAIL_LOG_CONTENT}" > /dev/null 2>&1 + awk '{gsub(/\r/,""); gsub(/$/,"\r"); print $0;}' "${EMAIL_LOG_CONTENT}" | "${NC_BIN}" -C -v -i 1 "${EMAIL_SERVER}" "${EMAIL_SERVER_PORT}" > /dev/null 2>&1 if [ $? -eq 1 ]; then logger "info" "ERROR: Failed to email log output to ${EMAIL_SERVER}:${EMAIL_SERVER_PORT} to ${EMAIL_TO}\n" fi

トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/5474
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form

コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。

OpenID を使ってログインすることができます。

Identity URL: Yahoo! JAPAN IDでログイン