PowerStoreでだいぶエグいバグを引いてしまった。2022/6現在そのバグが改修されたOSはリリースされておらず、ドキドキしながら運用中。
発生したバグの状況
- NAS-ServerをNode1からNode2へ移動(瞬断レベルの切替)
- NAS-Serverに付与していたIPの応答が無くなる
- 2時間以上応答無し
- 放置してたら応答が返ってきた(実際はてんやわんやしてた)
たまらん。サービス影響時間が長すぎる。
調査内容
根本原因
- 過去に取得したスナップショットにおいてReady状態とならなかったものが存在した(要するに壊れたままのスナップショット)
発生理由
- Nodeの移動時は 一時的にユーザーのファイルシステムをアンマウントする内部処理を行うが、該当のスナップショットが有る事で、システムから切り離すのに時間を要した
対応方法
事象解決方法
- Ready状態にならないスナップショットを削除
根本解消方法
- PowerStoreOSv3.x (Foothill Prime) にて修正予定(※2022/6現在、リリース予定日も未確定)
暫定対策1
- Ready状態にならないスナップショットが存在するかを監視する術無し
- コマンドなどで簡単に確認する術無し→DELLのサポートへ解析依頼が必要
暫定対策2
- Ready状態にならないスナップショットはスケジュールされているものからは切り離される(スケジュールで削除ができないため、そのまま残るという理論らしい)
- 手動でスナップショットを取得する運用がなければ、スナップショットの個数は必ず定数のため、不要に増えていればReady状態にならないスナップショットができあがったと判定できる
- 監視用スクリプトは次のセクション
監視用スクリプト
現在のスナップショットの個数を取得するスクリプト
#!/bin/bash
set -eu
# 設定
# passwordはSSH用のserviceアカウントのもの
SERVER='10.0.0.1'
OPTION='-o StrictHostKeyChecking=no'
SSH_USER='service'
LOGIN_PW='Passw0rd'
# powerstoreのsnapshot一覧をワンライナーで取得するコマンド
# (-select は別にしてもしなくてもいい。取得する情報を限定しているだけ)
# passwordはadminアカウントのもの
cmd="pstcli \
-d localhost \
-u admin \
-p 'Passw0rd' \
-ssl accept \
file_system show\
-select name,filesystem_type"
# main
function exec_cmd_on_remote() {
# リモートでコマンドを実行
# SSHのログインを自動化するためにexpectを使用
expect -c "
set timeout 30
spawn env LANG=C /usr/bin/ssh ${OPTION} ${SSH_USER}@${SERVER} $cmd
expect \"password:\"
send \"${LOGIN_PW}\n\"
expect eof
exit 0
"
}
# 実行コマンド(snapshot一覧の保存)
exec_cmd_on_remote > /usr/local/tmp/results-powerstore-snap.txt
判定用スクリプト
- スナップショットの個数:10は環境によって異なる
- echoの部分を監視システムにAPIで投げるやメールプログラムに食わすなどをすればOK
#!/bin/bash
# snapshot count get
snapshot_total=`cat /usr/local/tmp/results-powerstore-snap.txt | grep Snapshot | wc -l`
# error check ( OK number 10 )
if [ $snapshot_total -eq 10 ]; then
echo "snapshot_count OK."
else
echo "snapshot_count NG!!"
fi
あとがき
リリース日は2022/6/28ということが確定したが、3系のメジャーバージョンは初公開。サクっと本番をアップデートするってわけにはいかなさそうだ。。。悩ましい。
コメント