
ネットワールドストレージ担当です。今回は弊社に検証機が届いたこともありPowerFlexの停止手順をお伝えします。
起動/停止なんて手順通りにやればいいので簡単だと思っていたのですが、やってみたらこれが意外と難しく、躓くこともしばしばあったのでご紹介することにしました。
内部の構造や用語を理解していなければ今なにをやるべきか、どのコンポーネントを操作するべきか分からなくなってしまいますので、そういった構造含めてお伝えしていきます。
ドキュメントリンク
ドキュメントは以下のリンクから探してもらうのが簡単です。
この中のAdministration Guideを使用し作業を行っていきます。
Dell PowerFlex Software: Technical Documentation | Dell US
バージョン
弊社でテストをしたバージョンは以下になります。

用語
まずは停止手順を実施するにあたり覚えておいた方がよい用語についてです。

PowerFlexに関わっていれば知っている用語がほとんどですが、手順の中ではPFMPと書かれてあればMVMが操作対象、PFMCと書かれていればSVMが操作対象と連想できないと混乱しやすいので注意が必要です。
SVM,MDM,PFMCと同じ作業対象を指す用語が3つもあるのは初見には厳しいですね。
内部構造
続いて、PowerFlexの構造についてです。弊社環境がvSphere版の管理クラスタであるためその前提で記載していますが、KVM環境でも構造は同じです。
PowerFlexはストレージとしての機能を提供するクラスタと管理系の機能を提供するクラスタに分かれています。
SDS側はシンプルな構造ですが、管理系の方は少し複雑です。
ハイパーバイザ上で稼働する仮想マシンはMVMとSVMの主に2つがあり、MVM上ではKubernetesクラスタが構成され、その上でコンテナが稼働することによって
PowerFlex Manager(GUI)機能が提供されます。

SVMは管理クラスタ上で稼働するSDSになります。
といってもただの仮想マシンではなくPCIパススルーを使用しSASコントローラを直接仮想マシンが認識する構成になっています。


結果、SASコントローラ配下にあるSSDを直接SVMが認識する構成になっています。
このSSDをPowerFlexのSDS機能で束ねてハイパーバイザにデータストアを提供しています。
OS上からはこのように見えています。1つ目のディスクからroot領域を確保し残りの領域をSDSとして使用しています。


この構造により管理クラスタ上で稼働する仮想マシンは(SVMを除き)SVMが提供するデータストア上で稼働しています。
停止に関係する依存関係の整理
ここまでのことから停止の順序は以下のようになります。
- SDC停止...SDS停止の前にI/Oを停止する必要があるため
- SDS停止...冗長化停止にGUIを使用するためMVM停止の前に実施
- MVM停止...SDS停止後かつSVMやESXi停止前に実施が必要
- その他仮想マシンの停止...ESXi停止前に実施が必要
- ESXi/SVM停止...PCIパススルーとデータストアの提供と相互依存関係があるため同時に実施
用語の理解と構造の理解ができていないとなにを操作するべきか混乱してしまいますのでしっかり覚えておきましょう。
停止手順のフローは以下のようになります。
停止フロー

先ほどお伝えした通りESXiとSVMは相互に依存関係があるため途中でSVMの自動起動の設定が入っています。
停止手順の実施
では具体的な手順を実施していきましょう。
SDCアクセス停止
まずはSDCの停止です。これは各OSの手順に沿って実施します。
SDS 保護ドメインの非アクティブ化
続いてSDSの保護ドメインの非アクティブ化です。
PowerFlex Managerへアクセスし実施します。Block>Protection Domainsへ移動し対象のProtection Domainをインアクティブにします。



SDSシャットダウン
ここまで完了したらSSHやiDRACからSDSへログインしSDSをシャットダウンします。
シャットダウンコマンドはrootでの実施が必要です。
#sudo su -
#shutdown -h now
MVM DB停止
続いて、MVM内部で稼働しているCMOデータベースを停止させます。本環境はversion 4.6の環境のためそれに沿った手順となります。マニュアル上ではPFMPと書かれていますのでMVMが操作対象です。

まずはkubectlコマンドを使用し下準備をします。マニュアルのコマンドをそのまま実行すれば問題ありません。
このコマンドもrootユーザでの操作が必要です。
# echo alias k="kubectl -n $(kubectl get pods -A | grep -m 1 -E 'platform|pgo|helmrepo' | cut -d' ' -f1)"
# kubectl config set-context default --namespace=$(kubectl get pods -A | grep -m 1 -E 'platform|pgo|helmrepo|docker' | cut -d' ' -f1)
# echo $(kubectl get pods -l="postgres-operator.crunchydata.com/control-plane=pgo" --no-headers -o name && kubectl get pods -l="postgres-operator.crunchydata.com/instance" --no-headers -o name) | xargs kubectl get -o wide
最後のコマンドを実行後、Context "default" modified.と出力されていれば成功です。
ここで状態確認を行うコマンドを実行することも可能です。停止前はpostgres-xxの行が3つあります。
シャットダウン後はこの3つのpodが停止します。
確認コマンドは以下のとおりです。
# echo $(kubectl get pods -l="postgres-operator.crunchydata.com/control-plane=pgo" --no-headers -o name && kubectl get pods -l="postggres-operator.crunchydata.com/instance" --no-headers -o name) | xargs kubectl get -o wide

シャットダウンコマンドは以下になります。
# kubectl -n powerflex patch $(kubectl -n powerflex get postgrescluster -o name) --type merge --patch '{"spec":{"shutdown":true}}'
postgrescluster.postgres-operator.crunchydata.com/postgres-ha patchedと表示されれば成功です。
ESXi HA設定変更
次はHA設定の無効化です。vCenterへログイン後、画面の通り遷移していきスライドバーをOFFにします。

SVM 自動起動設定
次はSVMの自動起動設定です。この手順はSVMの台数=ESXiの台数分繰り返し実行します。仮想マシンの起動およびシャットダウンの編集画面まで遷移します。

SVMの設定を編集し「システムの影響」のチェックボックスを選択し、「シャットダウンアクション」をシャットダウンへ変更し、「自動」のグループへSVMを移動させます。

VM停止
ここまでの手順でvCenterを使用する手順は完了しましたので、仮想マシンを停止していきます。
まずはvCenter上からSVMとvCenterを除いた仮想マシンを停止していきます。

vCenter停止
続いてvCenterが稼働するESXiのホストクライアントへ接続しvCenterを停止します。

ESXi/SVM停止
最後にESXIを停止します。iDRACやコンソール画面にてF12を押し、ユーザ/パスワードを入力しシャットダウンを行います。

ESXiが全台停止できればシャットダウンは完了です。
いかがでしたでしょうか。
文字だけのマニュアルとにらめっこしながらですと意外と難しいですが、それよりは分かりやすい内容になっているのではないでしょうか。
いざという時に間違えないように構造と用語の理解のお役に立てば幸いです。
次回はPowerFlexの起動手順をお伝えしますので、お楽しみに!
Networld Techのブログ一覧はこちら!