创建主机
要使服务器或应用程序能够映射和访问块存储卷,可以使用用户界面、CLI、API 或 Terraform 创建主机。
主机指通过 NVMe-oF 协议连接到存储卷的系统,例如服务器或虚拟机( VM )。 创建主机并将卷映射到主机后,工作负载就可以通过安全、受管理的连接读写这些卷上的数据。
在创建主机之前,必须先配置 NVME-oF 启动器。 此 NVME-oF 初始化程序是将卷映射到主机所必需的。 请参阅“配置 NVMe-oF 发起器”。 配置好 NVME-oF 发起程序后,请记下 host nqn。
在用户界面中创建主机
使用 IBM Cloud 控制台创建部署主机。
-
在 IBM Cloud 控制台
中,点击部署 > 名称链接。
-
点击 Block Storage > 主持人。
-
点击创建主机。
-
输入唯一的 Host名称,并输入主机标识符 Host NQN。
主机名在整个部署中必须是唯一的。 例如,如果创建的两个主机位于同一部署中,且名称相同,则会显示错误 "Host name already exists"(主机名已存在)。
-
单击下一步。
-
选择一个或多个卷,将其映射到主机。
-
单击创建。 主机页面刷新后,新的主机将出现在主机列表的开头。
通过命令行界面(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_id 和 host name。volume_id 和 host 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 启动 程序。
-
使用
ibm_sds_host资源参数在main.tf文件中创建主机实例。 下面示例中的主机实例分别命名为sds_host_instance。resource "ibm_sds_host" "sds_host_instance" { name = "demo-host" nqn = "<hostNQN>" } -
完成构建配置文件后,初始化 Terraform CLI。 更多信息,请参阅 初始化工作目录。
terraform init -
从
main.tf文件调配资源。 如需了解更多信息,请参阅 使用 Terraform 配置基础架构。- 运行
terraform plan生成 Terraform 执行计划,以预览建议的操作。
terraform plan- 运行
terraform apply,创建计划中定义的资源。
terraform apply - 运行
-
在“您是否要执行这些操作?”中回复“是”,以继续创建加密卷。
详见输出示例。
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。
后续步骤
-
继续创建更多主机资源,然后将它们连接到 NVME-oF 启动器。