建立主機

若要讓您的伺服器或應用程式可以對應及存取區塊儲存卷冊,您可以使用使用者介面、CLI、API 或 Terraform 建立主機。

主機代表一個系統(例如伺服器或虛擬機器( VM )),該系統透過 NVMe-oF 協定連線至儲存卷。 透過建立主機並將磁碟區對應到主機,您就可以讓工作負載透過安全、受管理的連線讀取和寫入這些磁碟區上的資料。

在建立主機之前,您必須先設定「NVME-oF」啟動程式。 此 NVME-oF 啟動程式是將卷映射至主機所必需的。 請參閱「設定 NVMe-oF 啟動器」。 完成 NVME-oF 啟動器的設定後,請記下 host nqn

在使用者介面中建立主機

使用 IBM Cloud 主控台為部署建立主機。

  1. IBM Cloud 主控台外部連結圖示,按一下部署 > 名稱連結。

  2. 按一下 Block Storage > 主機

  3. 按一下建立主機

  4. 輸入唯一的主機名稱,並輸入主機識別碼 Host NQN

    主機名稱在整個部署中必須是唯一的。 例如,如果您建立的兩個主機位於同一部署中,且名稱相同,則會顯示「主機名稱已存在」錯誤。

  5. 下一步

  6. 選取一個或多個磁碟區,將其對應到主機。

  7. 按一下建立。 主機」頁面會重新整理,新主機會出現在主機清單的開頭。

透過命令列介面建立主機

若要使用命令列介面 (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 加密的主機,以啟用 TLS 功能,供 NVMe-oF 連線使用。 建議在需要加強安全性的生產環境中採用此方案。 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 個字元。 主機名稱必須以小寫字母開頭。 連字符不能用來開始或結束名稱。 主機名稱在整個基礎架構中必須是唯一的。 例如,如果在同一部署中創建兩個具有相同名稱的主機,則會顯示錯誤 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 的指引,請參閱 Config 命令

您也可以在 CLI 動作中使用別名 sds 作為 software-defined-storage 的替代,以及 hstc 作為 host-create 的替代。

使用 API 建立主機

您可以直接呼叫 Host REST API 來建立主機。 如需詳細資訊,請參閱 IBM Storage Ceph as a Service API 參考資料

確保您已為 IAM 令牌和 API 端點定義變數。 此外,請確保您手邊有主機 nqn。 如「關於磁碟區主機映射」一節所述,主機 nqn 可從 NVMe 啟動器取得。

提出 POST /hosts 請求以建立主機。 指定一個必須的 nqn,一個可選的 volume_idhost namevolume_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 的指引,請參閱 Config 命令

有效的主機名稱可以包含小寫字母、數字(a-z、0-9)以及連字號(-)的組合,長度最多為 63 個字元。 主機名稱必須以小寫字母開頭。 連字符不能用來開始或結束名稱。 主機名稱在整個基礎架構中必須是唯一的。 例如,如果在同一部署中創建兩個具有相同名稱的主機,則會顯示錯誤 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 nqn。 如需尋找 host 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. 對「您是否要執行這些動作?」回覆「是」,以繼續建立磁碟區。

    詳情請參閱範例輸出。

    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

下一步