Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

27.4. libStorageMgmt の使用

libStorageMgmt を対話的に使用するには、lsmcli ツールを使用します。
lsmcli ツールを実行するには、2 つの項目を実行する必要があります。
  • アレイに接続するプラグインやアレイで必要な設定可能なオプションを識別するために使用される Uniform Resource Identifier(URI)
  • アレイで有効なユーザー名およびパスワード。
URI の形式は以下のとおりです。
plugin+optional-transport://user-name@host:port/?query-string-parameters
各プラグインには、必要な要件が異なります。

例27.1 プラグインによって要件が異なる例

ユーザー名またはパスワードを必要とするサニュレータープラグイン

sim://

ユーザー名の root が指定された SSL 経由で NetApp プラグイン

ontap+ssl://root@filer.company.com/

EMC Array 用 SSL 経由の SMI-S プラグイン

smis+ssl://admin@provider.com:5989/?namespace=root/emc

URI を使用する方法は 3 つあります。
  1. コマンドの一部として URI を渡します。
    $ lsmcli -u sim://
  2. URI を環境変数に保存します。
    $ export LSMCLI_URI=sim://
  3. URI を、=" で区切った名前と値のペアを含む ~/.lsmcli ファイルに配置します。現在サポートされている唯一の構成は「uri」です。
この順序で実行する必要のある URI を決定します。3 つすべてを指定すると、コマンドラインで最初のもののみが使用されます。
コマンドラインで -P オプションを指定するか、環境変数 LSMCLI_PASSWORD に配置してパスワードを指定します。

例27.2 lsmcli の例

以下の例は、コマンドラインを使用して新規ボリュームを作成し、これをイニシエーターに表示する方法を示します。
この接続によりサービスを提供しているアレイを一覧表示します。
$ lsmcli list --type SYSTEMS
ID     | Name                          | Status
-------+-------------------------------+--------
sim-01 | LSM simulated storage plug-in | OK
ストレージプールを一覧表示します。
$ lsmcli list --type POOLS -H
ID   | Name          | Total space          | Free space           | System ID
-----+---------------+----------------------+----------------------+-----------
POO2 | Pool 2        | 18446744073709551616 | 18446744073709551616 | sim-01
POO3 | Pool 3        | 18446744073709551616 | 18446744073709551616 | sim-01
POO1 | Pool 1        | 18446744073709551616 | 18446744073709551616 | sim-01
POO4 | lsm_test_aggr | 18446744073709551616 | 18446744073709551616 | sim-01
ボリュームを作成します。
$ lsmcli volume-create --name volume_name --size 20G --pool POO1 -H
ID   | Name        | vpd83                            | bs  | #blocks  | status | ...
-----+-------------+----------------------------------+-----+----------+--------+----
Vol1 | volume_name | F7DDF7CA945C66238F593BC38137BD2F | 512 | 41943040 | OK     | ...
iSCSI イニシエーターを使用してアクセスグループを作成します。
$ lsmcli --create-access-group example_ag --id iqn.1994-05.com.domain:01.89bd01 --type ISCSI --system sim-01
ID                               | Name       | Initiator ID                     |SystemID
---------------------------------+------------+----------------------------------+--------
782d00c8ac63819d6cca7069282e03a0 | example_ag | iqn.1994-05.com.domain:01.89bd01 |sim-01
iSCSI インターミネーターを使用してアクセスグループを作成します。
$ lsmcli access-group-create --name example_ag --init iqn.1994-05.com.domain:01.89bd01 --init-type ISCSI --sys sim-01
ID                               | Name       | Initiator IDs                    | System ID
---------------------------------+------------+----------------------------------+-----------
782d00c8ac63819d6cca7069282e03a0 | example_ag | iqn.1994-05.com.domain:01.89bd01 | sim-01
新しく作成されたボリュームにアクセスグループの表示を許可します。
$ lsmcli access-group-grant --ag 782d00c8ac63819d6cca7069282e03a0 --vol Vol1 --access RW
ライブラリーの設計は、IPC (inter-process communication )で、クライアントとプラグイン間のプロセスの分離を可能にします。これにより、プラグインのバグがクライアントアプリケーションをクラッシュできなくなります。また、プラグイン作成者が独自のライセンスでプラグインを書き込む手段を提供します。クライアントが URI を渡すライブラリーを開くと、クライアントライブラリーは URI を確認して、使用するプラグインを特定します。
プラグインは技術的にスタンドアロンのアプリケーションですが、コマンドラインでファイル記述子をそれらに渡すように設計されています。次にクライアントライブラリーは適切な Unix ドメインソケットを開きます。これにより、デーモンがフォークされ、プラグインを実行します。これにより、クライアントライブラリーがプラグインとの通信チャネルを参照できるようになります。デーモンは、既存クライアントに影響を与えずに再起動できます。クライアントにはそのプラグインのライブラリーが開いている間は、プラグインプロセスが実行中です。1 つ以上のコマンドが送信され、プラグインを閉じると、プラグインプロセスがクリーンアップされ、その後終了します。
lsmcli のデフォルトの動作は、操作が完了するまで待ちます。要求された操作によっては、数時間かかる可能性があります。通常の使用に戻るようにするには、コマンドラインで -b オプションを使用します。終了コードが 0 の場合、コマンドは完了します。終了コードが 7 の場合は、コマンドは進行中で、ジョブ識別子が標準出力に書き込まれます。次に、ユーザーまたはスクリプトはジョブ ID を取り、lsmcli --jobstatus JobID を使用して、必要に応じてコマンドのステータスをクエリーします。ジョブが完了すると、終了値は 0 になり、結果は標準出力に出力されます。コマンドが進行中の場合には、戻り値は 7 で、パーセンテージ全体が標準出力に出力されます。

例27.3 非同期の例

コマンドが即座に返すように、-b オプションを渡すボリュームを作成します。
$ lsmcli volume-create --name async_created --size 20G --pool POO1 -b JOB_3
終了値を確認します。
$ echo $?
7
7 は、ジョブがまだ進行中であることを示します。
ジョブが完了したかどうかを確認します。
$ lsmcli job-status --job JOB_3
33
終了値を確認します。7 はジョブがまだ進行中であることを示します。
$ echo $?
7
しばらく待ち、終了値を再度確認します。
$ lsmcli job-status --job JOB_3
ID   | Name          | vpd83                            | Block Size  | ...
-----+---------------+----------------------------------+-------------+-----
Vol2 | async_created | 855C9BA51991B0CC122A3791996F6B15 | 512         | ...
0 は、成功し、標準出力に新規ボリュームを表示することを意味します。
スクリプト スクリプトには、-tSeparatorCharacters オプションを渡します。これにより、出力を解析することが容易になります。

例27.4 スクリプトの例

$ lsmcli list --type volumes -t#
Vol1#volume_name#049167B5D09EC0A173E92A63F6C3EA2A#512#41943040#21474836480#OK#sim-01#POO1
Vol2#async_created#3E771A2E807F68A32FA5E15C235B60CC#512#41943040#21474836480#OK#sim-01#POO1
$ lsmcli list --type volumes -t " | "
Vol1 | volume_name | 049167B5D09EC0A173E92A63F6C3EA2A | 512 | 41943040 | 21474836480 | OK | 21474836480 | sim-01 | POO1
Vol2 | async_created | 3E771A2E807F68A32FA5E15C235B60CC | 512 | 41943040 | 21474836480 | OK | sim-01 | POO1
$ lsmcli list --type volumes -s
---------------------------------------------
ID         | Vol1
Name       | volume_name
VPD83      | 049167B5D09EC0A173E92A63F6C3EA2A
Block Size | 512
#blocks    | 41943040
Size       | 21474836480
Status     | OK
System ID  | sim-01
Pool ID    | POO1
---------------------------------------------
ID         | Vol2
Name       | async_created
VPD83      | 3E771A2E807F68A32FA5E15C235B60CC
Block Size | 512
#blocks    | 41943040
Size       | 21474836480
Status     | OK
System ID  | sim-01
Pool ID    | POO1
---------------------------------------------
非簡単なスクリプトには Python ライブラリーを使用することが推奨されます。
lsmcli の詳細は、lsmcli の man ページまたは lsmcli --help を参照してください。

このページには機械翻訳が使用されている場合があります (詳細はこちら)。