VMwareな日々

Blog移管しました 新URLはこちら https://lab8010.com/

Ruby vSphere Consoleの使い方(vsan.vm_object_info編)

(本検証実行時のvCenter Serverのバージョンは6.5.0、ビルドは4602587です)

vsan.vm_object_infoの出力情報についての紹介です。

今回は3台のホストでの、同コマンドの出力差も見てみます。

esx-02a.corp.localでのコマンド実行結果

f:id:instructor8010:20170626000708p:plain

esx-03a.corp.localでのコマンド実行結果

f:id:instructor8010:20170626000829p:plain

いずれも、VMがこのホスト上に存在しないため表示する情報が無いという出力結果で終わっています。

esx-01a.corp.localでのコマンド実行結果

f:id:instructor8010:20170626001225p:plain

ホストesx-01a.corp.local上には"Test-VM"という名称のVMが存在するため、それに関するネームスペースオブジェクト(青)とVMDKオブジェクト(赤)の次の情報が表示されています。

  • オブジェクト識別子
  • ディスクフォーマット
  • DOM Ownerホスト
  • ストレージポリシーID
  • ストレージポリシー名
  • 各種ストレージポリシーの個別設定値
    - forceProvisioning(0は無効、1は有効)
    - chacheReservation(0は0%、100は100%)
    - CSN(確認中)
    - SCSN(確認中)
    - hostFailuresToTolerate(1はFTT=1)
    - spbmProfileGenerationNumber(確認中)
    - stripeWidth(1はオブジェクトのコンポーネントを1つ配置する)
    - proportionalCapacity(0はシンプロビジョニング、1~100で、vmdkサイズに対して何%の容量を予め容量を確保するか)
  • オブジェクトを構成するコンポーネントの情報
    - コンポーネントのオブジェクトID
    - ステータス情報
    - 保存先のホスト、キャッシュデバイス、キャパシティデバイスの識別子
    - 投票権
    - 占有容量

vSphere Web Client上からでも、次のように近い情報を閲覧することは出来ます

f:id:instructor8010:20170626002500p:plain

幾つかの細かな情報は、RVCからの閲覧であり、これらの情報をテキストベースでエクスポートすることが趣旨のコマンドが、"vsan.vm_object_info"として理解を頂ければ良いと言えます。

ちなみにですが、以下の図では、Test-VMに対しスナップショットを取得した後のコマンドの出力結果です。

スナップショット用のデルタディスクも、オブジェクトであり、ポリシーによって保護されるため、先程の図と比べ、オブジェクトが一つ増えていることが分かります。

f:id:instructor8010:20170626003350p:plain

以上です。

 

Ruby vSphere Consoleの使い方(vsan.disks_stats編)

(本検証実行時のvCenter Serverのバージョンは6.5.0、ビルドは4602587です)

vsan.disks_statsの出力情報についての紹介です。前回のコマンドでは、vsan.disks_infoでしたので、やや近い内容が出力されることが予想出来ます。

違いを意識しながら出力結果を参照していきたいと思います。

今回は、1つの出力に対し、複数のノードの結果が次のように表示されました。

f:id:instructor8010:20170626215259p:plain

 

結論から言えば、"vSANDatastoreに属するディスクの、利用状況確認”用のコマンドだと言えます。(赤はVMが保存されていないときの出力、緑は単一のVMがFTT=1で保護されています。)

前回のコマンドとの違いは、容量の利用状況がキャッチアップ出来る点ですね。

逆に言えば、今回のこのコマンドではvSANに関連するもの(つまりディスクグループに参加済みのもの)のみがその表示対象となっています。

 

ちなみに、左から4番目の項目に”Num Comp”とありますが、これは各ディスクが保存するオブジェクトのコンポーネントです。それぞれ2となっているのは次の構成のためです。

Test-VM

VM Home スペース(2*ミラー, 1*Witness)

Lvmdk スペース(2*ミラー, 1*Witness)

つまり、全部で6つのコンポーネントが存在しますので、それらが分散されて配置されているため、各キャパシティディスクの”Num Comp”が2ずつになっています。

f:id:instructor8010:20170626215812p:plain

 以上です。

Ruby vSphere Consoleの使い方(vsan.disks_info編)

(本検証実行時のvCenter Serverのバージョンは6.5.0、ビルドは4602587です)

vsan.disks_infoの出力情報についての紹介です。

今回は3台とも同じ出力でしたので、そのうちの1台の出力のみをキャプチャしました。

 

esx-03a.corp.localでのコマンド実行結果

f:id:instructor8010:20170626213031p:plain

コマンド出力からは、3つのディスクがvmkernelによって認識されていることが伺えます。各ディスクをランタイム名で見た場合は次の通りです。

mpx.vmhba0:C0:T1:L0 - SSD/2GB/vSANに不参加/複数のパーティションが存在する状況

mpx.vmhba1:C0:T0:L0 - SSD/5GB/vSANに参加済み/ディスクフォーマットはv3

mpx.vmhba1:C0:T1:L0 - SSD/40GB/vSANに参加済み/ディスクフォーマットはv3

 

これをvSphere Web Clientで見た場合は次の通りです。

f:id:instructor8010:20170626213710p:plain

つまり、このコマンドでは、単体のホストにマウントされているストレージデバイスの中でも、”disk”に該当するデバイスのみを表示し、vSANの要素として組み込まれているか否かを見るというコマンドだと理解出来ます。

実際に各ディスクの利用状況やステータスまでは表示がないため、ホストが物理的なレベルで、認識しているデバイスを確認する趣旨で使えるコマンドだと言えます。

 

以上です。

Ruby vSphere Consoleの使い方(vsan.host_info編)

(本検証実行時のvCenter Serverのバージョンは6.5.0、ビルドは4602587です)

vSAN.vsan.host_infoの出力情報についての紹介です。

このコマンドを実行してみた図がこちらです。

今回はesx-03a.corp.localというホストの情報を取得しています。

f:id:instructor8010:20170625235614p:plain

お気づきでしょうか。

vsan.cluster_infoで取得されている情報と全く同じようです。

ということで、前回のリンクを貼っておきます。

instructor8010.hatenablog.jp

 

今後のバージョンアップなどでコマンドの差別化などがされてくれば恐らく使い分けシナリオが生まれる可能性がありますね。

現時点で言えば、特定の単一ホストについての情報のみを拾いたいという場合に使えば、表示情報が過度になりすぎずに、ミスなく情報のピックアップができそうと言えます。

 

Ruby vSphere Consoleの使い方(vsan.cluster_info編)

(本検証実行時のvCenter Serverのバージョンは6.5.0、ビルドは4602587です)

vSAN.Cluster_Infoの出力情報についての紹介です。

まずコマンドを実行すると、次のようにクラスターに参加しているホストに対し情報取得が実行されました。

f:id:instructor8010:20170625233823p:plain

以上の出力から、3ノードのクラスター環境であることが想像出来ます。

続いて、こちらが出力の画像キャプチャです。

f:id:instructor8010:20170625234304p:plain

この出力からは次のことが分かります。

  • ホスト名
  • インストールされているvSphere ESXiのバージョン情報
  • vSANが有効であるか否か(yesなら有効、Noなら無効)
  • クラスター内での役割、クラスターのUUID、自分自身のノードUUID、他のメンバーのノードUUID
  • ノードの退避状態(Noが正常、Yesではクラスターに対しキャパシティを提供しない)
  • ディスクグループのモード(オートクレームモードまたはマニュアルモード)
  • ディスクグループの構成情報
  • フォールトドメインの構成情報
  • vSAN IO用のvmkernelポートの名称とIPアドレス

上記の内容で補足をするとすれば"ノードの退避状態"です。

これは正常時はNoと表示され、Yesの場合はvSANクラスターに対し容量を提供しません。

試しにメンテナンスモードを設定してみた際に、項目がYesに変化しました。

f:id:instructor8010:20170625234708p:plain

以上です。今回は単一ホストの情報のみを掲載していますが、実際にはクラスターに参加をしている全ノード分の情報が連なって表示されます。

Ruby vSphere Consoleの使い方(vsan.support_information編)

(本検証実行時のvCenter Serverのバージョンは6.5.0、ビルドは4602587です)

さて、前回のRVCから続き、第2弾です。

RVCはその性質上、込み入ったトラブルシュートを行うためのツールという要素が強いです。

そこで今回は、テクニカルサポートや管理者の方にとって重要なサポート情報収集コマンドを試しに実行してみました。

まず最初にSSHでvCenter Serverアプライアンスへ接続し、既にRVCは起動済みです。
かつ、cdコマンドによりデータセンターディレクトリまで移動済みであり、直下にはクラスターオブジェクトが”0”として存在する状況です。

ここで次のコマンドを実行しました"vsan.support_information 0"

f:id:instructor8010:20170625232532p:plain

すると、2分ほどの時間で、多くのコマンドが自動実行されました。

Puttyを見てみると、次のコマンドが実行されていることがわかりました。

以上です。

各コマンドについての詳細は個別ページでまとめていきたいと思います。

(記事自体が長くなることを避け、今後の更新をしやすくするためです)

Ruby vSphere Consoleの使い方(起動/ログイン/基本操作編)

今回はRVCというツールについて紹介をする記事を書いてみました。

RVCとは"Ruby vSphere Console"の略称であり、vSAN環境のサポートやトラブルシュートに使うハイレベルなサポートツールです。このツールはCLIであり、vSphere Web ClientなどのGUIでは出来ない操作が出来るという点が特徴と言えます。

ユースケースとしては、上記のようなケースであり、既に幾つかのKBなどでは、コンプレックスな症状に対して、RVCを利用するようにと記載されたものもあります。

 

コマンドラインファンレスも存在し、以下のようにPDFで提供があります。

VMware® Ruby vSphere Console Command Reference for Virtual SAN

 

さて、今回はまず肝心のツールの起動方法、ログイン方法の紹介です。

  • このツールは、vCenter Server上に存在する
  • Windows版vCenter Serverでも、アプライアンス版でも利用が可能
  • Windows版の場合は、既定ディレクトリ上にあるbatファイルを動作させ、RVCを起動します。bat動作後、vCenter ServerがインストールされたWindows Server上にてコマンドプロンプトを動作させ、vCenter Serverディレクトリへcdコマンドで移動します。
  • vSAN 6.x の場合: %PROGRAMFILES%\VMware\vCenter Server\rvc\rvc.bat
  • vSAN 5.5 の場合: %PROGRAMFILES%\VMware\Infrastructure\VirtualCenter Server\support\rvc\rvc.bat
  • アプライアンス版の場合は、SSHクライアントよりvCenter Serverにアクセスしツールを利用します。

今回は、アプライアンス版にて操作を行ってみます。以下の図では、既にPuttyにてvCenter Serverに対しSSH接続が確立している様子です。

f:id:instructor8010:20170625224317p:plain

SSHログイン後、次のコマンドを入力しています。

"rvc ユーザー名@ログイン先"

rvcによりツールを起動し、ログイン先のvCenter Serverの指定とそれに使うユーザーを引数として指定しています。その後、パスワードを入力し、rvcが利用出来るようになりました。

※上記ログインの手順の詳細については、コマンドラインリファレンスの6ページくらいにも記載があります。

f:id:instructor8010:20170625224540p:plain

一般的なCLIにあるような次の機能が利用可能です。

  • helpコマンドによるコマンド確認
  • Tabキーによるコマンド補完
  • Wildcardによる複数のVMやホストに対する命令
  • Markコマンドによる特定のVMやホストなどのエイリアス作成

さて、基本的には"ls"と"cd"を駆使し、階層構造となっているvSAN環境を確認する所がはじめのステップと言えます。

vSANコマンドを使う上では、コマンドを実行する対象のパスを指定するためには階層構造になっているこれらの単位の状況を、この2つのコマンドで確認する必要があります。

 

例えばこちらをご覧頂くと、”ls”で現在のディレクトリ内部を確認しています。

lsで確認した内容の先頭には番号がついており、これを用いて"cd"でより深い階層に移動しています。

f:id:instructor8010:20170625225243p:plain

ここでは、"RegionA01"というデータセンター内の”コンピュートリソース”を確認しており、4つのコンピュートリソースを確認出来ている状態です。(RegionA01-COMP01という名称のクラスタが1つ、それ以外はesx-から始まる名称の単体のホストが連番で3台あります)

vSphere Web ClientのGUIと対比するとわかりやすくなりますね:)

f:id:instructor8010:20170625225838p:plain

さて、現在はこの赤色の、データセンターレイヤーからコンピュートリソースを見下ろしているような状態です。

ここで、何か試しにホストの情報を取ってみたいと思います。

f:id:instructor8010:20170625230144p:plain

vsan.check_stateというコマンドを実施してみました。このコマンドではvSANクラスター上にあるオブジェクトの状況やVMの状態を表示させるという意味合いがあります。

赤はコマンドの失敗例です。
上記コマンドだけを入力しており、コマンド実行対象を入れていません。

緑はコマンドの成功例です。
上記コマンドに”0”を加えた事で、コマンド実行対象としてクラスターを指定しました。
しかし、残念ながら、このvSANクラスターにはVMを作成していなかったので、アクセスが出来ないオブジェクトは0であり、構成誤りのVMや同期が出来ていないVMなども見つからなかったという結果になっています。

 

最後に、VMを1台だけ作って、コマンドを実行してみました。

Test-VMという名称でテスト用VMを作成しました。

f:id:instructor8010:20170625230655p:plain

コマンドの性質上、vSAN環境上のVMのオブジェクトへのアクセスに問題が無いかの概要を確認するコマンドでしたので、正常なケースと障害ケースでコマンド出力を出してみました。

f:id:instructor8010:20170625231252p:plain

緑枠:正常なケース(VMはFTT=1で保護されており、オブジェクトのコンポーネントは全てアクセスが可能な状態)

赤枠:異常なケース(3ノードクラスターのうち、2ノードをメンテナンスモードにし、無理やりコンポーネントアクセスが出来ない状態を作成しました)

f:id:instructor8010:20170625231801p:plain

以上でした。今回はRVCの起動、ログイン、基本操作についての紹介でした。

今後は少しずついろいろなコマンドを試していきたいと思います。