ホストの作成

ブロックストレージボリュームをマッピングし、サーバーやアプリケーションからアクセスできるようにするには、UI、CLI、API、Terraformを使ってホストを作成します。

ホストとは、 NVMe-oF プロトコルを使用してストレージボリュームに接続する、サーバーや仮想マシン( VM )などのシステムを指します。 ホストを作成し、そこにボリュームをマッピングすることで、ワークロードが安全な管理された接続を通じてボリューム上のデータを読み書きできるようになります。

ホストを作成する前に、 NVME-oF イニシエーターを設定する必要があります。 この NVME-oF イニシエーターは、ボリュームをホストにマッピングするために必要です。 「 NVMe-oF イニシエーターの設定 」を参照してください。 NVME-oF イニシエーターの設定が完了したら、 host nqn をメモしておいてください。

UIでのホストの作成

IBM Cloud コンソールを使用して、デプロイ用のホストを作成します。

  1. IBM Cloud コンソールの外部リンクアイコン[デプロイメント] > [名前リンク] をクリックします。

  2. Block Storage > [ホスト] をクリックします。

  3. **「ホストの作成」**をクリックします。

  4. 固有のホスト名を入力し、ホスト識別子として 「Host NQN」 を入力します。

    ホスト名は、デプロイ全体で一意である必要があります。 たとえば、同じ配置に同じ名前のホストを 2 つ作成すると、「ホスト名はすでに存在します」というエラーが表示されます。

  5. 次へ をクリックします。

  6. 1つまたは複数のボリュームを選択して、それらをホストにマッピングします。

  7. 「作成」 をクリックします。 ホストページが更新され、新しいホストがホストのリストの最初に表示されます。

CLI からのホストの作成

ホストテンプレートオブジェクトからコマンドラインインターフェース(CLI)を使用してホストを作成するには、次のコマンドを実行します。

PSK(事前共有鍵)なしでホストを作成する

ネットワークレベルのセキュリティがすでに導入されている場合は、PSK暗号化を使用しないホストを作成します。 これは、トランスポート層での暗号化を行わない標準の NVMe-oF プロトコルを使用しています。 ホスト名とNQNのみを指定してください:

ic sds host-create --name host-1 --nqn nqn.2014-06.org:9345 --url $sds_endpoint
HOST_ONE=$(ibmcloud sds hosts --output json | jq -r '.Hosts[] | select(.Host_Name=="host-1").Host_ID')
ic sds host --host-id $HOST_ONE

PSK(事前共有鍵)でホストを作成する

PSK暗号化を使用したホストを作成し、 NVMe-oF 接続で TLS を有効にします。 これは、セキュリティの強化が求められる本番環境での利用が推奨されます。 PSK形式は NVMeTLSkey-1:01:<base64-encoded-key>: であり、ここでキーは32バイトの base64-encoded 値です:

ic sds host-create --name host-2 --nqn nqn.2014-06.org:9345 --psk "NVMeTLSkey-1:01:YzrPElk4OYy1uUERriPwiiyEJE/+J5ckYpLB+5NHMsR2iBuT:" --url $sds_endpoint
HOST_TWO=$(ibmcloud sds hosts --output json | jq -r '.Hosts[] | select(.Host_Name=="host-2").Host_ID')

有効なホスト名には、小文字の英数字(a~z、0~9)とハイフン(-)を組み合わせて、最大63文字まで使用できます。 ホスト名は小文字で始まる必要があります。 ハイフンは名前の最初または最後に使用することはできません。 ホスト名は、インフラストラクチャ全体を通じて一意でなければなりません。 例えば、同じデプロイメントで同じ名前のホストを2つ作成すると、エラー Host name already exists が表示されます。

以下の例を参照してください。

ibmcloud software-defined-storage host-create \
  --nqn "nqn.2014-08.org.nvmexpress:uuid:29181642-300c-a1e2-497a-172017002122" \
  --name "dummy-host" \
  --volume-mappings '[{"volume": {"id": "r134-2ca809e8-3e63-44bc-916e-1eae49302aae"}}]'
  --url $sds_endpoint
...
Host_ID           r134-0dcd5d2d-07db-4457-ab0b-1fc3eef28c66
Host_Name         dummy-host
Host_NQN          nqn.2014-08.org.nvmexpress:uuid:29181642-300c-a1e2-497a-172017002122
PSK_Enabled       false
Created_At        2025-02-28T10:05:30.000Z
Volume_Mappings
                  Namespace_ID        -
                  Namespace_UUID      -
                  Status              pending
                  Subsystem_NQN       -
                  Volume_ID           r134-2ca809e8-3e63-44bc-916e-1eae49302aae
                  Volume_Mapping_ID   r134-95b99022-3cf7-42be-9c18-5b6e3fa30bfa
                  Volume_Name         dividend-abet-getting-presume

サポートされるNQNの最大長は223バイトである。

$sds_endpoint は環境変数で、 IBM Storage Ceph as a Service の設定時に提供されたエンドポイントを指す。 URL のフォームです。 例えば、https://sds-cephaas.<cephaas-instance-id>.software-defined-storage.appdomain.cloud:{port number}/v1 です。 URL は一度だけ設定できるので、コマンドごとに指定する必要はない。 URL の設定方法については 、「設定コマンド」 を参照してください。

また、CLIアクションでは、 software-defined-storage の代替として sdshost-create の代替として hstc を使用することもできます。

API を使用したホストの作成

ホストは、Host REST APIを直接呼び出すことで作成できます。 詳細は 、 IBM Storage Ceph as a Service のAPIリファレンスをご覧ください。

IAMトークンとAPIエンドポイントの変数を定義していることを確認してください。 また、ホストの nqn をすぐに利用できるようにしておいてください。 ホスト nqn は、 ボリュームホストマッピングについてで 説明されているように、NVMeイニシエータから取得できます。

POST /hosts リクエストを発行して、ホストを作成します。 必須の nqn、オプションの volume_idhost name を指定する。 volume_idhost name はオプション。

curl -X POST $sds_endpoint/hosts\
 -H "Authorization: $IAM_TOKEN" \
 -H "IBM-API-Version: 2025-02-01" \
 -d '{
 		"volume_mappings": [
 			{
 				"volume": {
 					"id": "r134-b05d91af-6393-4652-aada-13fd4fdbd065"
 					}
 			},
 			{
 				"volume": {
 					"id": "r134-601e431b-22ab-47a1-b0c1-411049b432a0"
 					}
 			}
 		],
 	"name": "host1",
  "psk": "NVMeTLSkey-1:01:5CBxDU8ejK+PrqIjTau0yDHnBV2CdfvP6hGmqnPdKhJ9tfi2:",
 	"nqn": "nqn.2014-08.org.nvmexpress:uuid:29181642-300c-a1e2-497a-172017002149"}'

$sds_endpoint は環境変数で、 IBM Storage Ceph as a Service の設定時に提供されたエンドポイントを指す。 URL のフォームです。 例えば、https://sds-cephaas.<cephaas-instance-id>.software-defined-storage.appdomain.cloud:{port number}/v1 です。 URL は一度だけ設定できるので、コマンドごとに指定する必要はない。 URL の設定方法については 、「設定コマンド」 を参照してください。

有効なホスト名には、小文字の英数字(a~z、0~9)とハイフン(-)を組み合わせて、最大63文字まで使用できます。 ホスト名は小文字で始まる必要があります。 ハイフンは名前の最初または最後に使用することはできません。 ホスト名は、インフラストラクチャ全体を通じて一意でなければなりません。 例えば、同じデプロイメントで同じ名前のホストを2つ作成すると、エラー Host name already exists が表示されます。

正常な応答は、以下のようになります。

{
  "id": "r134-63b6133f-cb3b-4d0b-a5e8-90821a40d64d",
  "name": "host1",
  "nqn": "nqn.2014-08.org.nvmexpress:uuid:29181642-300c-a1e2-497a-172017002149",
  "created_at": "2025-02-27T10:55:07Z",
  "href": "$sds_endpoint/hosts/r134-63b6133f-cb3b-4d0b-a5e8-90821a40d64d",
  "volume_mappings": [
    {
      "id": "r134-dfb2c915-4788-4cb3-b1d5-8e00ee09e780",
      "status": "pending",
      "href": "$sds_endpoint/hosts/r134-63b6133f-cb3b-4d0b-a5e8-90821a40d64d/volume_mappings/r134-dfb2c915-4788-4cb3-b1d5-8e00ee09e780",
      "volume": {
        "name": "seventy-banked-pry-punt",
        "id": "r134-b05d91af-6393-4652-aada-13fd4fdbd065"
      },
      "host": {
        "name": "host1",
        "nqn": "nqn.2014-08.org.nvmexpress:uuid:29181642-300c-a1e2-497a-172017002149",
        "id": "r134-63b6133f-cb3b-4d0b-a5e8-90821a40d64d"
      }
    },
    {
      "id": "r134-b557c11f-6c90-48e5-93b3-deac047e815c",
      "status": "pending",
      "href": "$sds_endpoint/hosts/r134-63b6133f-cb3b-4d0b-a5e8-90821a40d64d/volume_mappings/r134-b557c11f-6c90-48e5-93b3-deac047e815c",
      "volume": {
        "name": "new-vol",
        "id": "r134-601e431b-22ab-47a1-b0c1-411049b432a0"
      },
      "host": {
        "name": "host1",
        "nqn": "nqn.2014-08.org.nvmexpress:uuid:29181642-300c-a1e2-497a-172017002149",
        "id": "r134-63b6133f-cb3b-4d0b-a5e8-90821a40d64d"
        "psk_enabled": true
      }
    }
  ]
}

Terraformを使ってホストを作成する

Terraformを使ってホストを作成するには、 host nqnhost nqn の見つけ方については、 NVMe-oF イニシエータの設定 を参照。

  1. ibm_sds_host リソース引数を使用して、 main.tf ファイルにホスト・インスタンスを作成します。 次の例のホスト・インスタンスはそれぞれ sds_host_instance

     resource "ibm_sds_host" "sds_host_instance" {
       name = "demo-host"
       nqn = "<hostNQN>"
     }
    
  2. 設定ファイルのビルドが終わったら、Terraform CLIを初期化します。 詳しくは、 作業ディレクトリの初期化を参照のこと。

    terraform init
    
  3. main.tf ファイルからリソースをプロビジョニングする。 詳しくは Terraformによるインフラのプロビジョニングを参照してください。

    1. terraform plan を実行してTerraformの実行プランを生成し、提案されたアクションをプレビューする。
       terraform plan
    
    1. terraform apply を実行し、プランで定義されたリソースを作成する。
       terraform apply
    
  4. Do you want to perform these actions? "に "Yes "と答え、ボリュームの作成に進む。

    詳細は出力例を参照のこと。

    ibm_sds_host.sds_host_instance: Creating...
    ibm_sds_host.sds_host_instance: Creation complete after 1s [id=r134-e8b82dc5-e081-422e-9709-a44ec63f56af]
    Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
    Outputs:
    ibm_sds_host = {
      "created_at" = "2025-03-10T14:58:33.000Z"
      "href" = "$sds_endpoint/hosts/r134-e8b82dc5-e081-422e-9709-a44ec63f56af"
      "id" = "r134-e8b82dc5-e081-422e-9709-a44ec63f56af"
      "name" = "demo-host"
      "nqn" = "nqn.2014-06.org:9345"
      "sds_endpoint" = tostring(null)
      "volume_mappings" = tolist([])
    }
    

$sds_endpoint は環境変数で、 IBM Storage Ceph as a Service の設定時に提供されたエンドポイントを指す。 URL のフォームです。 例えば、https://sds-cephaas.<cephaas-instance-id>.software-defined-storage.appdomain.cloud:{port number}/v1 です。

次のステップ