Compute Engine에서 연결

이 가이드에서는 단일 Compute Engine 클라이언트를 만들고 Parallelstore 인스턴스에 연결하는 방법을 설명합니다.

여러 Compute Engine 클라이언트에서 만들고 연결하려면 Compute Engine에서 연결: 여러 클라이언트의 안내를 따르세요.

성능을 개선하려면 클라이언트 Compute Engine VM을 Parallelstore 인스턴스와 동일한 영역에 만들어야 합니다.

필수 권한

Compute Engine VM을 만들려면 다음 IAM 역할이 있어야 합니다.

  • Compute 인스턴스 관리자 (v1) (roles/compute.instanceAdmin.v1). 자세한 내용은 Compute Engine 문서를 참고하세요.

Compute Engine VM 만들기

다음 이미지 중 하나를 사용하여 Compute Engine VM을 만들려면 안내를 따르세요.

원하는 머신 유형과 부팅 디스크를 선택할 수 있습니다. c2-standard-4 머신 유형 이상을 사용하는 것이 좋습니다. 클라이언트 성능을 높이려면 vCPU 수를 늘려 네트워크 처리량을 늘리세요. 예를 들어 Tier 1 네트워킹이 적용된 c3-standard-176는 200Gbps의 이그레스 대역폭을 제공합니다.

Google Cloud 콘솔

  1. Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스로 이동

  2. 프로젝트를 선택하고 계속을 클릭합니다.

  3. 인스턴스 만들기를 클릭합니다.

  4. 이름에 VM의 이름을 입력합니다. 자세한 내용은 리소스 이름 지정 규칙을 참조하세요.

  5. 이 VM의 드롭다운 메뉴에서 리전영역을 선택합니다. VM은 Parallelstore 인스턴스와 동일한 영역에 있어야 합니다.

  6. 목록에서 VM의 머신 구성을 선택합니다.

  7. 부팅 디스크 섹션에서 변경을 클릭합니다.

  8. 공개 이미지 탭을 선택합니다.

  9. 운영체제 드롭다운에서 HPC VM 이미지, Ubuntu 또는 Debian 중 하나를 선택합니다.

  10. 버전 드롭다운에서 HPC Rocky Linux 8, Ubuntu 22.04 LTS, Debian GNU/Linux 12 (bookworm) 중 하나를 선택합니다. 머신 유형에 맞게 x86/64 버전 또는 Arm64 버전을 선택합니다.

  11. 부팅 디스크 옵션을 확인하려면 선택을 클릭합니다.

  12. 고급 옵션 섹션을 펼친 후 네트워킹을 펼칩니다.

  13. 네트워크 인터페이스에서 VPC 네트워크 구성에서 만든 VPC 네트워크를 선택합니다.

  14. 만들기를 클릭하여 VM을 만들고 시작합니다.

gcloud

gcloud 명령줄 도구를 사용하여 VM을 만듭니다.

HPC Rocky Linux 8

gcloud compute instances create VM_NAME \
  --project=PROJECT_ID \
  --zone=LOCATION \
  --machine-type=c2d-standard-112 \
  --network-interface=stack-type=IPV4_ONLY,subnet=NETWORK_NAME,nic-type=GVNIC \
  --network-performance-configs=total-egress-bandwidth-tier=TIER_1 \
  --create-disk=auto-delete=yes,boot=yes,device-name=VM_NAME,\
image=projects/cloud-hpc-image-public/global/images/hpc-rocky-linux-8-v20240126,\
mode=rw,size=100,type=pd-balanced

Rocky Linux 9 최적화

gcloud compute instances create VM_NAME \
  --project=PROJECT_ID \
  --zone=LOCATION \
  --machine-type=c2d-standard-112 \
  --network-interface=stack-type=IPV4_ONLY,subnet=NETWORK_NAME,nic-type=GVNIC \
  --network-performance-configs=total-egress-bandwidth-tier=TIER_1 \
  --create-disk=auto-delete=yes,boot=yes,device-name=VM_NAME,\
image=projects/rocky-linux-cloud/global/images/rocky-linux-9-optimized-gcp-v20241112,\
mode=rw,size=100,type=pd-balanced

RHEL 9

gcloud compute instances create VM_NAME \
  --project=PROJECT_ID \
  --zone=LOCATION \
  --machine-type=c2d-standard-112 \
  --network-interface=stack-type=IPV4_ONLY,subnet=NETWORK_NAME,nic-type=GVNIC \
  --network-performance-configs=total-egress-bandwidth-tier=TIER_1 \
  --create-disk=auto-delete=yes,boot=yes,device-name=VM_NAME,\
image=projects/rhel-cloud/global/images/rhel-9-v20241112,\
mode=rw,size=100,type=pd-balanced

Ubuntu 22.04

gcloud compute instances create VM_NAME \
  --project=PROJECT_ID \
  --zone=LOCATION \
  --machine-type=c2d-standard-112 \
  --network-interface=stack-type=IPV4_ONLY,subnet=NETWORK_NAME,nic-type=GVNIC \
  --network-performance-configs=total-egress-bandwidth-tier=TIER_1 \
  --create-disk=auto-delete=yes,boot=yes,device-name=VM_NAME,\
image=projects/ubuntu-os-cloud/global/images/ubuntu-2204-jammy-v20240927,\
mode=rw,size=100,type=pd-balanced

Debian 12

gcloud compute instances create VM_NAME \
  --project=PROJECT_ID \
  --zone=LOCATION \
  --machine-type=c2d-standard-112 \
  --network-interface=stack-type=IPV4_ONLY,subnet=NETWORK_NAME,nic-type=GVNIC \
  --network-performance-configs=total-egress-bandwidth-tier=TIER_1 \
  --create-disk=auto-delete=yes,boot=yes,device-name=VM_NAME,\
image=projects/debian-cloud/global/images/debian-12-bookworm-v20240415,\
mode=rw,size=100,type=pd-balanced

사용 가능한 옵션에 관한 자세한 내용은 Compute Engine 문서를 참고하세요.

클라이언트 VM에 SSH로 연결

Google Cloud 콘솔

Compute Engine VM에 SSH를 통해 연결하려면 먼저 SSH를 허용하는 방화벽 규칙을 만들어야 합니다.

  1. Google Cloud 콘솔에서 방화벽 정책 페이지로 이동합니다.

    방화벽 정책으로 이동

  2. 방화벽 규칙 만들기를 클릭합니다.

  3. 규칙의 이름을 입력합니다.

  4. 네트워크에서 이전에 만든 VPC 네트워크를 선택합니다.

  5. 트래픽 방향으로 인그레스를 선택하고 일치 시 작업으로 허용을 선택합니다.

  6. 대상 드롭다운에서 네트워크의 모든 인스턴스를 선택합니다.

  7. 소스 IPv4 범위 필드에 0.0.0.0/0를 입력합니다.

  8. 프로토콜 및 포트에서 지정된 프로토콜 및 포트를 선택합니다.

  9. TCP를 선택하고 포트 필드에 22를 입력합니다.

  10. 만들기를 클릭합니다.

그런 다음 VM에 SSH로 연결합니다.

  1. Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스로 이동

  2. 인스턴스 표에서 인스턴스의 행을 찾고 연결 열에서 SSH를 클릭합니다.

  3. 메시지가 표시되면 승인을 클릭하여 연결을 허용합니다.

gcloud

Compute Engine VM에 SSH를 통해 연결하려면 먼저 SSH를 허용하는 방화벽 규칙을 만들어야 합니다.

gcloud compute firewall-rules create FIREWALL_RULE_NAME \
  --allow=tcp:22 \
  --network=NETWORK_NAME \
  --source-ranges=0.0.0.0/0 \
  --project=PROJECT_ID

그런 다음 gcloud compute ssh를 사용하여 연결합니다.

gcloud compute ssh VM_NAME --zone=ZONE --project=PROJECT_ID

DAOS 클라이언트 라이브러리 설치

DAOS 클라이언트 라이브러리는 Parallelstore 데이터 영역에 POSIX와 유사한 인터페이스를 제공합니다. 이 소프트웨어는 클라이언트 머신에서 에이전트로 실행되며 데이터에 액세스하려면 먼저 설치하고 실행해야 합니다.

HPC Rocky Linux 8

다음 명령어는 각 Compute Engine VM에서 실행해야 합니다.

  1. Parallelstore 패키지 저장소를 추가합니다.

    sudo tee /etc/yum.repos.d/parallelstore-v2-6-el8.repo << EOF
    [parallelstore-v2-6-el8]
    name=Parallelstore EL8 v2.6
    baseurl=https://us-central1-yum.pkg.dev/projects/parallelstore-packages/v2-6-el8
    enabled=1
    repo_gpgcheck=0
    gpgcheck=0
    EOF
    
  2. 로컬 메타데이터 캐시를 업데이트합니다.

    sudo dnf makecache
    
  3. daos-client을 설치합니다.

    sudo dnf install -y epel-release && \
    sudo dnf install -y daos-client
    
  4. libfabric 업그레이드:

    sudo dnf upgrade -y libfabric
    

Rocky Linux 9 최적화

다음 명령어는 각 Compute Engine VM에서 실행해야 합니다.

  1. Parallelstore 패키지 저장소를 추가합니다.

    sudo tee /etc/yum.repos.d/parallelstore-v2-6-el9.repo << EOF
    [parallelstore-v2-6-el9]
    name=Parallelstore EL9 v2.6
    baseurl=https://us-central1-yum.pkg.dev/projects/parallelstore-packages/v2-6-el9
    enabled=1
    repo_gpgcheck=0
    gpgcheck=0
    EOF
    
  2. 로컬 메타데이터 캐시를 업데이트합니다.

    sudo dnf makecache
    
  3. daos-client을 설치합니다.

    sudo dnf install -y epel-release && \
    sudo dnf install -y daos-client
    
  4. libfabric 업그레이드:

    sudo dnf upgrade -y libfabric
    

RHEL 9

다음 명령어는 각 Compute Engine VM에서 실행해야 합니다.

  1. Parallelstore 패키지 저장소를 추가합니다.

    sudo tee /etc/yum.repos.d/parallelstore-v2-6-el9.repo << EOF
    [parallelstore-v2-6-el9]
    name=Parallelstore EL9 v2.6
    baseurl=https://us-central1-yum.pkg.dev/projects/parallelstore-packages/v2-6-el9
    enabled=1
    repo_gpgcheck=0
    gpgcheck=0
    EOF
    
  2. 로컬 메타데이터 캐시를 업데이트합니다.

    sudo dnf makecache
    
  3. daos-client을 설치합니다.

    sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
    
    sudo dnf install -y epel-release && \
    sudo dnf install -y daos-client
    
  4. libfabric 업그레이드:

    sudo dnf upgrade -y libfabric
    

Ubuntu 22.04

다음 명령어는 각 Compute Engine VM에서 실행해야 합니다.

  1. Parallelstore 패키지 저장소를 추가합니다.

    curl https://us-central1-apt.pkg.dev/doc/repo-signing-key.gpg | sudo apt-key add -
    echo "deb https://us-central1-apt.pkg.dev/projects/parallelstore-packages v2-6-deb main" | sudo tee -a /etc/apt/sources.list.d/artifact-registry.list
    
  2. 패키지 색인을 업데이트합니다.

    sudo apt update
    
  3. daos-client을 설치합니다.

    sudo apt install -y daos-client
    

Debian 12

다음 명령어는 각 Compute Engine VM에서 실행해야 합니다.

  1. Parallelstore 패키지 저장소를 추가합니다.

    curl https://us-central1-apt.pkg.dev/doc/repo-signing-key.gpg | sudo apt-key add -
    echo "deb https://us-central1-apt.pkg.dev/projects/parallelstore-packages v2-6-deb main" | sudo tee -a /etc/apt/sources.list.d/artifact-registry.list
    
  2. 패키지 색인을 업데이트합니다.

    sudo apt update
    
  3. daos-client을 설치합니다.

    sudo apt install -y daos-client
    

열려 있는 파일 한도 늘리기 (Ubuntu만 해당)

Ubuntu 22.04를 실행하는 VM의 경우 dfuse 및 가로채기 라이브러리를 지원하려면 열린 파일 한도를 131072로 늘려야 합니다.

가로채기 라이브러리를 사용하지 않으려면 dfuse를 시작하기 직전에 ulimit -n 131072를 실행하면 됩니다.

열려 있는 파일 한도를 1, 024개에서 늘리려면 각 VM에서 다음 명령어를 실행합니다.

sudo tee -a /etc/security/limits.conf <<EOF
* soft nofile 131072
* hard nofile 131072
EOF

그런 다음 재부팅합니다.

sudo reboot

재부팅이 완료되면 클라이언트 VM에 다시 SSH로 연결합니다.

DAOS 에이전트 구성 업데이트

다음과 같이 /etc/daos/daos_agent.yml를 업데이트합니다.

  1. Parallelstore 인스턴스 속성의 accessPoints IP 주소로 access_points의 주석을 해제하고 업데이트합니다. 예를 들면 access_points: ['172.21.95.2', '172.21.95.4', '172.21.95.5']입니다.

    복사하여 붙여넣을 수 있도록 올바른 형식으로 액세스 포인트를 출력하려면 다음 명령어를 실행합니다.

    echo access_points\: $(gcloud beta parallelstore instances describe \
      INSTANCE_ID --location LOCATION --project PROJECT_ID \
      --format "value[delimiter=', '](format("{0}", accessPoints))")
    
  2. 다음 두 줄의 주석 처리를 삭제합니다. 들여쓰기가 중요하므로 allow_insecure 앞에 공백을 유지해야 합니다.

    # transport_config:
    #   allow_insecure: false
    
  3. 인증서가 지원되지 않으므로 allow_insecure 값을 true로 변경합니다.

     transport_config:
       allow_insecure: true
    
  4. Parallelstore 인스턴스에 연결을 제공하는 네트워크 인터페이스를 지정합니다. 인터페이스는 eth0, ens4 또는 enp0s3인 경우가 많지만 네트워크 구성에 따라 다를 수 있습니다. route 명령어를 사용하여 VM의 기본 게이트웨이를 표시할 수 있습니다. 지정할 인터페이스는 일반적으로 게이트웨이와 서브넷을 공유하는 인터페이스입니다.

    먼저 사용 가능한 모든 네트워크 인터페이스를 나열합니다.

    ip a
    

    출력은 다음과 비슷합니다.

    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
    2: eth0@if7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc noqueue state UP group default
        link/ether e4:9x:3f:x7:dx:f7 brd ff:ff:ff:ff:ff:ff link-netnsid 0
        inet 10.88.0.3/16 brd 10.88.255.255 scope global eth0
           valid_lft forever preferred_lft forever
    3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1460 qdisc noqueue state DOWN group default
        link/ether 02:4x:6y:1z:84:45 brd ff:ff:ff:ff:ff:ff
        inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
           valid_lft forever preferred_lft forever
    

    route를 실행하여 라우팅 테이블을 표시합니다.

    route
    

    출력은 다음과 비슷합니다.

    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    default         10.88.0.1       0.0.0.0         UG    0      0        0 eth0
    10.88.0.0       0.0.0.0         255.255.0.0     U     0      0        0 eth0
    172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
    

    이 예에서 기본 게이트웨이는 10.88.0.1이며 eth0에서 공유하므로 사용할 인터페이스로 eth0을 지정합니다.

    /etc/daos/daos_agent.yml을 수정합니다. include_fabric_ifaces의 주석 처리를 삭제하고 값을 업데이트합니다.

    include_fabric_ifaces: ["eth0"]
    

    저장하고 파일을 닫습니다.

DAOS 에이전트 시작

HPC Rocky Linux 8

sudo systemctl start daos_agent.service

상태를 확인하여 에이전트가 실행 중인지 확인할 수 있습니다.

systemctl status daos_agent.service

Rocky Linux 9 최적화

sudo systemctl start daos_agent.service

상태를 확인하여 에이전트가 실행 중인지 확인할 수 있습니다.

systemctl status daos_agent.service

RHEL 9

sudo systemctl start daos_agent.service

상태를 확인하여 에이전트가 실행 중인지 확인할 수 있습니다.

systemctl status daos_agent.service

Ubuntu 22.04

sudo mkdir /var/run/daos_agent && \
sudo daos_agent -o /etc/daos/daos_agent.yml &

Debian 12

sudo mkdir /var/run/daos_agent && \
sudo daos_agent -o /etc/daos/daos_agent.yml &

로깅 설정

필요한 경우 클라이언트 측 디버깅에 도움이 되도록 로컬 로깅을 설정합니다.

export D_LOG_MASK=INFO
export D_LOG_FILE_APPEND_PID=1
rm -f /tmp/client.log.*
export D_LOG_FILE=/tmp/client.log

dfuse를 사용하여 인스턴스 마운트

dfuse(DAOS FUSE)를 사용하여 Parallelstore 인스턴스를 마운트합니다.

  1. /etc/fuse.conf을 수정하여 user_allow_other을 추가합니다.

  2. dfuse--multi-user 옵션을 지정합니다.

    mkdir -p /tmp/parallelstore
    dfuse -m /tmp/parallelstore \
      --pool default-pool \
      --container default-container \
      --disable-wb-cache \
      --thread-count=20 \
      --eq-count=10 \
      --multi-user
    

--thread-count--eq-count 값을 최적화하는 데 도움이 필요한 경우 성능 고려사항 페이지의 스레드 수 및 이벤트 큐 수 섹션을 참고하세요.

Parallelstore 인스턴스에 액세스

이제 Parallelstore 인스턴스가 -m 플래그로 지정된 경로의 Compute Engine VM에 마운트되며 일부 예외를 제외하고 표준 POSIX 문법을 사용하여 읽기/쓰기가 가능합니다.

인스턴스에서 df를 실행하면 SIZE 값은 --capacity-gib로 지정된 값의 1.5배입니다. Parallelstore에서 사용하는 삭제 인코딩의 특성상 사용 가능한 공간은 여전히 --capacity-gib입니다. 쓰는 2바이트마다 df의 관점에서 3바이트를 사용합니다.

인스턴스 마운트 해제

다음 명령어를 사용하여 Parallelstore 인스턴스를 마운트 해제할 수 있습니다.

sudo umount /tmp/parallelstore/

다음 단계