Ligue a partir do Compute Engine

Este guia dá instruções sobre como criar um único cliente do Compute Engine e associá-lo à sua instância do Parallelstore.

Para criar e estabelecer ligação a partir de vários clientes do Compute Engine, pode seguir as instruções em Estabelecer ligação a partir do Compute Engine: vários clientes.

Para um melhor desempenho, as VMs do Compute Engine do cliente devem ser criadas na mesma zona que a instância do Parallelstore.

Autorizações necessárias

Tem de ter a seguinte função do IAM para criar uma VM do Compute Engine:

Crie uma VM do Compute Engine

Siga as instruções para criar uma VM do Compute Engine com uma das seguintes imagens:

Pode escolher qualquer tipo de máquina e disco de arranque. Recomendamos, pelo menos, um tipo de máquina c2-standard-4. Para um desempenho do cliente mais elevado, aumente o número de vCPUs para aumentar a taxa de transferência da rede. Por exemplo, uma c3-standard-176 com rede de nível 1 oferece 200 Gbps de largura de banda de saída.

Google Cloud consola

  1. Na Google Cloud consola, aceda à página Instâncias de VM.

    Aceder às instâncias de VM

  2. Selecione o projeto e clique em Continuar.

  3. Clique em Criar instância.

  4. Introduza um nome para a VM em Nome. Para mais informações, consulte o artigo Convenção de nomenclatura de recursos.

  5. Selecione a Região e a Zona nos menus pendentes desta VM. A VM deve estar na mesma zona que a instância do Parallelstore.

  6. Selecione uma Configuração da máquina para a sua VM na lista.

  7. Na secção Disco de arranque, clique em Alterar.

  8. Selecione o separador Imagens públicas.

  9. No menu pendente Sistema operativo, selecione uma das seguintes opções: Imagem de VM de HPC, Ubuntu ou Debian.

  10. No menu pendente Versão, selecione uma das seguintes opções: HPC Rocky Linux 8, Ubuntu 22.04 LTS ou Debian GNU/Linux 12 (bookworm). Selecione a versão x86/64 ou a versão Arm64 para corresponder ao tipo de máquina.

  11. Para confirmar as opções do disco de arranque, clique em Selecionar.

  12. Expanda a secção Opções avançadas e, de seguida, expanda Redes.

  13. Em Interfaces de rede, selecione a rede de VPC que criou em Configure uma rede de VPC.

  14. Para criar e iniciar a VM, clique em Criar.

gcloud

Use a ferramenta de linha de comandos gcloud para criar uma 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 otimizado

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

Para mais informações sobre as opções disponíveis, consulte a documentação do Compute Engine.

SSH para a VM cliente

Google Cloud consola

Para estabelecer uma ligação SSH à sua VM do Compute Engine, primeiro tem de criar uma regra de firewall que permita o SSH.

  1. Na Google Cloud consola, aceda à página Políticas de firewall.

    Aceder a Políticas de firewall

  2. Clique em Criar regra de firewall.

  3. Introduza um Nome para a regra.

  4. Para Rede, selecione a rede VPC que criou anteriormente.

  5. Selecione Entrada como a Direção do tráfego e Permitir como a Ação na correspondência.

  6. No menu pendente Alvos, selecione Todas as instâncias na rede.

  7. No campo Intervalos IPv4 de origem, introduza 0.0.0.0/0.

  8. Em Protocolos e portas, selecione Protocolos e portas especificados.

  9. Selecione TCP e introduza 22 no campo Portas.

  10. Clique em Criar.

Em seguida, faça SSH para a sua VM:

  1. Na Google Cloud consola, aceda à página Instâncias de VM.

    Aceder às instâncias de VM

  2. Na tabela de instâncias, localize a linha da sua instância e clique em SSH na coluna intitulada Ligar.

  3. Se lhe for pedido, clique em Autorizar para permitir a ligação.

gcloud

Para estabelecer uma ligação SSH à sua VM do Compute Engine, primeiro tem de criar uma regra de firewall que permita o 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

Em seguida, ligue-se através da app gcloud compute ssh:

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

Instale a biblioteca cliente DAOS

A biblioteca cliente DAOS fornece uma interface semelhante à POSIX para a camada de dados Parallelstore. O software é executado como um agente nos seus computadores cliente e tem de ser instalado e executado antes de poder aceder aos seus dados.

HPC Rocky Linux 8

Os seguintes comandos têm de ser executados em cada VM do Compute Engine.

  1. Adicione o repositório de pacotes 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. Atualize a cache de metadados local:

    sudo dnf makecache
    
  3. Instale daos-client:

    sudo dnf install -y epel-release && \
    sudo dnf install -y daos-client
    
  4. Atualize o libfabric:

    sudo dnf upgrade -y libfabric
    

Rocky Linux 9 otimizado

Os seguintes comandos têm de ser executados em cada VM do Compute Engine.

  1. Adicione o repositório de pacotes 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. Atualize a cache de metadados local:

    sudo dnf makecache
    
  3. Instale daos-client:

    sudo dnf install -y epel-release && \
    sudo dnf install -y daos-client
    
  4. Atualize o libfabric:

    sudo dnf upgrade -y libfabric
    

RHEL 9

Os seguintes comandos têm de ser executados em cada VM do Compute Engine.

  1. Adicione o repositório de pacotes 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. Atualize a cache de metadados local:

    sudo dnf makecache
    
  3. Instale 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. Atualize o libfabric:

    sudo dnf upgrade -y libfabric
    

Ubuntu 22.04

Os seguintes comandos têm de ser executados em cada VM do Compute Engine.

  1. Adicione o repositório de pacotes 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. Atualize o índice de pacotes:

    sudo apt update
    
  3. Instale daos-client:

    sudo apt install -y daos-client
    

Debian 12

Os seguintes comandos têm de ser executados em cada VM do Compute Engine.

  1. Adicione o repositório de pacotes 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. Atualize o índice de pacotes:

    sudo apt update
    
  3. Instale daos-client:

    sudo apt install -y daos-client
    

Aumente o limite de ficheiros abertos (apenas no Ubuntu)

Para VMs com o Ubuntu 22.04, tem de aumentar o limite de ficheiros abertos para 131072 para suportar o dfuse e a biblioteca de interceção.

Se optar por não usar a biblioteca de interceção, pode executar ulimit -n 131072 imediatamente antes de iniciar o dfuse.

Para aumentar o limite de ficheiros abertos de 1024, execute os seguintes comandos em cada VM.

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

Em seguida, reinicie:

sudo reboot

Volte a estabelecer ligação SSH à VM do cliente assim que o reinício estiver concluído.

Atualize a configuração do agente DAOS

Atualize o /etc/daos/daos_agent.yml da seguinte forma:

  1. Descomente e atualize access_points com os endereços IP accessPoints das propriedades da instância do Parallelstore. Por exemplo: access_points: ['172.21.95.2', '172.21.95.4', '172.21.95.5'].

    Para imprimir os pontos de acesso no formato correto para copiar e colar, execute o seguinte comando:

    echo access_points\: $(gcloud beta parallelstore instances describe \
      INSTANCE_ID --location LOCATION --project PROJECT_ID \
      --format "value[delimiter=', '](format("{0}", accessPoints))")
    
  2. Descomente as duas linhas seguintes. A indentação é importante, por isso, certifique-se de que mantém os espaços antes de allow_insecure:

    # transport_config:
    #   allow_insecure: false
    
  3. Altere o valor de allow_insecure para true, uma vez que os certificados não são suportados.

     transport_config:
       allow_insecure: true
    
  4. Especifique a interface de rede que fornece conetividade à instância do Parallelstore. A interface é frequentemente eth0, ens4 ou enp0s3, mas pode ser diferente consoante a configuração da sua rede. Pode usar o comando route para mostrar o gateway predefinido da VM. Normalmente, a interface a especificar é a que partilha uma sub-rede com o gateway.

    Primeiro, liste todas as interfaces de rede disponíveis:

    ip a
    

    O resultado é semelhante ao seguinte:

    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
    

    Execute route para apresentar a tabela de encaminhamento:

    route
    

    O resultado é semelhante ao seguinte:

    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
    

    No exemplo, o gateway predefinido é 10.88.0.1 e é partilhado por eth0, por isso, especifique eth0 como a interface a usar.

    Edite o pacote /etc/daos/daos_agent.yml. Descomente include_fabric_ifaces e atualize o valor:

    include_fabric_ifaces: ["eth0"]
    

    Guarde e feche o ficheiro.

Inicie o agente DAOS

HPC Rocky Linux 8

sudo systemctl start daos_agent.service

Pode verificar o estado para se certificar de que o agente está em execução:

systemctl status daos_agent.service

Rocky Linux 9 otimizado

sudo systemctl start daos_agent.service

Pode verificar o estado para se certificar de que o agente está em execução:

systemctl status daos_agent.service

RHEL 9

sudo systemctl start daos_agent.service

Pode verificar o estado para se certificar de que o agente está em execução:

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 &

Configure o registo

Configure o registo local para ajudar na depuração por parte do cliente, se necessário:

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

Monte a instância com o dfuse

Monte a instância do Parallelstore com o dfuse (DAOS FUSE).

  1. Edite /etc/fuse.conf para adicionar user_allow_other.

  2. Especifique a opção --multi-user com dfuse:

    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
    

Para obter ajuda na otimização dos valores de --thread-count e --eq-count, consulte a secção Contagem de threads e contagem de filas de eventos da página Considerações sobre o desempenho.

Aceda à sua instância do Parallelstore

A sua instância do Parallelstore está agora montada na VM do Compute Engine no caminho especificado pela flag -m e é legível/gravável através da sintaxe POSIX padrão, com algumas exceções.

Se executar df na instância, o valor de SIZE é 1,5 vezes o valor especificado com --capacity-gib. A quantidade de espaço utilizável continua a ser --capacity-gib devido à natureza da codificação de apagamento usada pelo Parallelstore. Cada 2 bytes escritos usam 3 bytes na perspetiva do df.

Desmonte a instância

Pode desmontar a instância do Parallelstore com o seguinte comando:

sudo umount /tmp/parallelstore/

O que se segue?