호스트 만들기

서버나 애플리케이션에서 블록 스토리지 볼륨을 매핑하고 액세스할 수 있도록 하려면 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을 입력합니다.

    호스트 이름은 전체 배포에서 고유해야 합니다. 예를 들어 동일한 배포에 있고 이름이 같은 두 개의 호스트를 만들면 "호스트 이름이 이미 존재합니다."라는 오류가 표시됩니다.

  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(사전 공유 키)로 호스트 만들기

NVMe-oF 연결에 대해 TLS 를 활성화하려면 PSK 암호화를 사용하는 호스트를 생성하십시오. 이는 보안 강화가 필요한 운영 환경에 권장됩니다. 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 작업의 경우, software-defined-storage 대신 sds 를, host-create 대신 hstc 를 사용할 수도 있습니다.

API를 사용하여 호스트 생성하기

호스트 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 를 설정하는 방법에 대한 지침은 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을 사용하여 호스트 만들기

테라폼을 사용하여 호스트를 생성하려면 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 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입니다.

다음 단계