【NetApp】システムシェルを使ってディレクトリ構成を確認する方法

2022年1月30日

netapp-systemshell-ls

こんにちは、キクです。

先日NetAppをいじっているときにふと冒頭にあるような状態になったので、本記事ではその方法を記事にしようと思いました。
ディレクトリ構成を確認するケースはいろいろあるかとは思いますが、とりあえず確認方法は知っておいて損はないのではないかと思います。

というわけで今回は『システムシェルを使ったディレクトリ構成確認』をテーマに書いていきたいと思います!

それでは、よろしくお願いします。

動作環境

本記事の内容は、下記の環境で実施したものになります。
・ONTAP 9.1

注意事項

本記事は僕が経験した内容をもとに記載しておりますが、実行環境や設定内容によっては動作が異なる場合があります。
そのため『参考程度』にお読みいただけますと幸いです。

NetAppにおけるシェルの種類

今回の記事では「システムシェル」を利用しますが、そもそもNetAppにはどのようなシェルが存在しているのか?
僕も業務中に混乱することがあるので、この機会に整理したいと思います。

NetAppには次の3種類のシェルが存在しており、それぞれ役割が異なります。

NetAppにおけるシェルの種類

1. クラスタシェル
2. ノードシェル
3. システムシェル

クラスタシェル

クラスタシェルは、クラスタの設定や管理に必要なコマンドが含まれています。

本ブログでご紹介してきたコマンド達も、基本的にはこのクラスタシェルでの操作になります。
僕も含めてですが、おそらく一番利用する機会の多いシェルだと思います。
参考:【NetApp】Volume move機能を用いたアグリゲート間でのボリューム移動

業務中は決まったコマンドを実行することが多いのであまり使えていないのですが、コマンド入力中に「?」を入力すると、入力したコマンド以降に続く候補を表示してくれるので便利です。
Linuxで言えばtabを2回タップした動作に近いかもしれません。

ちなみに、クラスタシェル利用時のプロンプトは「クラスタ名::>」となるので覚えておきましょう。

■コマンド例

クラスタ名::> vserver show
クラスタ名::> network interface show
クラスタ名::> volume show

ノードシェル

ノードシェルでは、ノードレベルでのみ有効なコマンドを実行します。
しかし、よく使用されるノードシェルコマンドについてはクラスタシェル経由でも実行できるものも多いです。
そのため、僕自身はあまりノードシェルに繋いで操作することはない気がします。

クラスタシェルからノードシェルに切り替えたい場合には次のコマンドを実行します。

クラスタ名::> system node run -node ノード名

ノードシェルになるとプロンプトは「ノード名>」となります。

また、クラスタシェルからノードシェルのコマンドを実行したい場合には次のように実行します。

クラスタ名::> system node run -node ノード名 -command ノードシェルコマンド

ノードシェルコマンドにどんなものがあるかわからないときには、ノードシェルに切り替えた状態で「?」と入力すればクラスタシェルのときと同様に使用可能なコマンドが表示されます。

■コマンド例

クラスタシェルからの実行

クラスタ名::> system node run -node ノード名 -command sysconfig -a

システムシェル

そして最後のシステムシェルは診断やトラブルシューティングなどの用途で利用します。
そのため、普段の業務ではあまり使うことがないかなーと思います。

ちなみに、今回のディレクトリ構成確認はこのシステムシェルで行います。
システムシェルに切り替えるときにはdiagnostic権限と呼ばれる診断用の権限が必要になります。
diagnostic権限に切り替えた際には「*」がプロンプトに付与されます。
そしてシステムシェルに切り替えると「ノード名%」というプロンプトが表示されるので覚えておきましょう。

以下はクラスタシェルからシステムシェルに切り替える方法です。

クラスタ名::> set -privilege diagnostic
クラスタ名::*> system node systemshell -node ノード名
ノード名%

ディレクトリ構成の確認方法

続いて、本記事の本題である「ディレクトリ構成の確認方法」について見ていきましょう。
ここまでお読みいただいた方であれば、「システムシェルがどんなものか」「システムシェルにはどのように切り替えるのか」ということはなんとなくイメージできるようになっているかと思います。

以下は例として「/etc」配下のフォルダ構成を確認するコマンドを記載しています。

ノード名% ls /etc

これだけです。
そうなんです。ここまでくればLinuxのコマンドと同じですね。

僕もそうだったんですが、ここにたどり着くまでがイメージできなかったんですよね。
なので、少し長々とシェルの種類だったり切り替え方だったりを書かせていただきました。

【おまけ】システムコンソールとは

本記事の内容とは少しズレてしまうのですが、システムコンソールと呼ばれるものについても書いておこうと思います。
とは言ったものの、あまりシステムコンソールについて詳しいわけではありません。

というのも、システムコンソールは初期構築時などにたくさん触れる機会が多かったですが、ノードシェル同様に通常業務ではあまり触れることがないからです。
そのため、分かる範囲の内容を箇条書きで書いておこうと思います。

システムコンソールの主な特徴

・システムコンソールは別名「シリアルコンソール」とも呼ばれる
・プロンプトは「LOADER>」である
・コマンド「LOADER> boot_ontap」で表示されるブートメニューからONTAPの起動などが可能
・ノードが何らかの理由でハングした状態の時などにも利用される
・システムコンソールにアクセスする方法はいくつかある
・システムコンソールから「SP」または「クラスタシェル」に戻るには「Ctrl+D」をすればOK

こんなところですかね。

アクセス方法1:ノードのSPからシステムコンソールに切り替える

アクセス方法の1つ目としては、ノードのSPから「system console」コマンドを使って切り替える方法があります。

SP ノード名> system console
LOADER>

この方法では既に接続しているSPを持つノードのシステムコンソールにのみ切り替えが可能です。

アクセス方法2:クラスタシェルから切り替える

アクセス方法の2つ目としては、クラスタシェルから「system node run-console」コマンドを使って切り替える方法があります。

クラスタ名::> system node run-console -node ノード名
LOADER>

この方法では、クラスタ内のすべてのノードのシステムコンソールに切り替えることができます。

おわりに

いかがだったでしょうか。

今回はNetAppのシステムシェルを用いたディレクトリ構成の確認方法についてでした。
本題が非常にあっさりした内容となってしまいましたが、そこに至るまでの内容が結構大切かなと思います。
というのも、僕自身ベンダーさんとの会話の中で「〇〇シェルから□□シェルに切り替えて」みたいな内容が出てくることがあるのですが、今回の内容がわかってないとイメージしづらかったからです。
各シェルの存在だったり用途をザックリでも理解できていれば、作業をする上での助けになるかなと思います。

本記事を最後までお読みいただき、ありがとうございました。
ではでは!

-NetApp
-