创建主机

要使服务器或应用程序能够映射和访问块存储卷,可以使用用户界面、CLI、API 或 Terraform 创建主机。

主机指通过 NVMe-oF 协议连接到存储卷的系统,例如服务器或虚拟机( VM )。 创建主机并将卷映射到主机后,工作负载就可以通过安全、受管理的连接读写这些卷上的数据。

在创建主机之前,必须先配置 NVME-oF 启动器。 此 NVME-oF 初始化程序是将卷映射到主机所必需的。 请参阅“配置 NVMe-oF 发起器”。 配置好 NVME-oF 发起程序后,请记下 host nqn

在用户界面中创建主机

使用 IBM Cloud 控制台创建部署主机。

  1. 在 IBM Cloud 控制台外部链接图标中,点击部署 > 名称链接。

  2. 点击 Block Storage > 主持人

  3. 点击创建主机

  4. 输入唯一的 Host名称,并输入主机标识符 Host NQN

    主机名在整个部署中必须是唯一的。 例如,如果创建的两个主机位于同一部署中,且名称相同,则会显示错误 "Host name already exists"(主机名已存在)。

  5. 单击下一步

  6. 选择一个或多个卷,将其映射到主机。

  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 个字符。 主机名必须以小写字母开头。 连字符不能用于名字的开头或结尾。 主机名在整个基础设施中必须是唯一的。 例如,如果您在同一部署中创建了两个同名主机,则会显示错误 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操作中,您也可以使用别名 sds 来代替 software-defined-storage,使用别名 hstc 来代替 host-create

使用 API 创建主机

您可以通过直接调用主机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 的指南,请参阅 配置命令

有效的主机名可以由小写字母、数字(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

后续步骤