Use volumes NFS como arquivos de dados do vSphere no VMware Engine

Este documento descreve como usar volumes NFS como arquivos de dados do vSphere no VMware Engine através da criação e gestão de arquivos de dados NFS suportados por instâncias do Filestore, volumes do Google Cloud NetApp Volumes ou partilhas NFS de terceiros através da API VMware Engine ou da CLI Google Cloud. O ponto final da API é vmwareengine.googleapis.com. As operações da API e da CLI gcloud para criar, atualizar, eliminar, montar e desmontar arquivos de dados são assíncronas. Quando inicia uma destas operações, o VMware Engine devolve um objeto de operação que pode usar para acompanhar o estado do seu pedido.

Consultar uma operação

Para acompanhar o estado de uma operação, use um pedido GET ou a CLI gcloud.

API

curl -X GET \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID

Substitua o seguinte:

  • PROJECT_ID: o ID do seu Google Cloud projeto.
  • LOCATION: a localização da operação.
  • OPERATION_ID: o ID da operação que está a ser acompanhada.

gcloud

gcloud vmware operations describe OPERATION_ID --location=LOCATION --project=PROJECT_ID

Substitua o seguinte:

  • PROJECT_ID: o ID do seu Google Cloud projeto.
  • LOCATION: a localização da operação.
  • OPERATION_ID: o ID da operação que está a ser acompanhada.

Crie um repositório de dados NFS

Para criar um Datastore suportado por uma instância do Filestore, um volume do Google Cloud NetApp Volumes ou uma partilha NFS de terceiros, use a CLI gcloud ou faça o seguinte pedido POST:

POST https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datastores?datastoreId=DATASTORE_ID

Substitua o seguinte:

  • PROJECT_ID: o ID do seu Google Cloud projeto.
  • LOCATION: a localização do Datastore.
  • DATASTORE_ID: o nome do seu armazenamento de dados.

O corpo do pedido tem de ser um objeto JSON com os detalhes do volume NFS que vai suportar o Datastore.

  • description: (Opcional) Uma breve descrição do seu Datastore.
  • nfs_datastore: (Obrigatório) Um contentor para a configuração do armazenamento de dados NFS.

Filestore

As secções seguintes descrevem como criar um Datastore suportado pelo Filestore através da API ou da CLI gcloud.

API

Para um Datastore suportado pelo Filestore, indique o seguinte em google_file_service:

  • filestore_instance: (Obrigatório) O nome completo do recurso da instância do Filestore no formato projects/{project}/locations/{location}/instances/{instance}.

Exemplo de corpo do pedido:

{
  "description": "Filestore Datastore example",
  "nfs_datastore": {
    "google_file_service": {
      "filestore_instance": "projects/FILESTORE_PROJECT_ID/locations/LOCATION/instances/INSTANCE_NAME"
    }
  }
}

Substitua o seguinte:

  • FILESTORE_PROJECT_ID: o ID do projeto onde reside a sua instância do Filestore.
  • LOCATION: a localização da instância do Filestore. Tem de ser igual à localização da base de dados especificada no URL do pedido.
  • INSTANCE_NAME: o nome da sua instância do Filestore.

gcloud

gcloud vmware datastores create DATASTORE_ID \
--location=LOCATION --project=PROJECT_ID \
--filestore=projects/FILESTORE_PROJECT_ID/locations/LOCATION/instances/INSTANCE_NAME

Substitua o seguinte:

  • DATASTORE_ID: o nome do seu armazenamento de dados.
  • LOCATION: a localização da instância do Datastore e do Filestore.
  • PROJECT_ID: o ID do seu Google Cloud projeto.
  • FILESTORE_PROJECT_ID: o ID do projeto onde reside a sua instância do Filestore.
  • INSTANCE_NAME: o nome da sua instância do Filestore.

Google Cloud NetApp Volumes

As secções seguintes descrevem como criar um Datastore com base nos volumes do Google Cloud NetApp através da API ou da CLI gcloud.

API

Para um Armazenamento de dados suportado por Google Cloud NetApp Volumes, forneça o seguinte em google_file_service:

  • netapp_volume: (Obrigatório) O nome completo do recurso do volume do Google Cloud NetApp Volumes no formato projects/{project}/locations/{location}/volumes/{volume}.

Exemplo de corpo do pedido:

{
  "description": "NetApp Volumes Datastore example",
  "nfs_datastore": {
    "google_file_service": {
      "netapp_volume": "projects/NETAPP_PROJECT_ID/locations/LOCATION/volumes/VOLUME_NAME"
    }
  }
}

Substitua o seguinte:

  • NETAPP_PROJECT_ID: o ID do projeto onde reside o seu volume do Google Cloud NetApp Volumes.
  • LOCATION: A localização do volume do Google Cloud NetApp Volumes. Tem de ser igual à localização da base de dados especificada no URL do pedido.
  • VOLUME_NAME: O nome do volume do Google Cloud NetApp Volumes.

gcloud

gcloud vmware datastores create DATASTORE_ID \
--location=LOCATION --project=PROJECT_ID \
--netapp=projects/NETAPP_PROJECT_ID/locations/LOCATION/volumes/VOLUME_NAME

Substitua o seguinte:

  • DATASTORE_ID: o nome do seu armazenamento de dados.
  • LOCATION: a localização do Datastore e do volume do Google Cloud NetApp Volumes.
  • PROJECT_ID: o ID do seu Google Cloud projeto.
  • NETAPP_PROJECT_ID: o ID do projeto onde reside o seu volume do Google Cloud NetApp Volumes.
  • VOLUME_NAME: o nome do volume do Google Cloud NetApp Volumes.

NFS de terceiros

As secções seguintes descrevem como criar um Datastore suportado por uma partilha NFS de terceiros através da API ou da CLI gcloud.

API

Para um Datastore suportado por uma partilha NFS de terceiros, forneça o seguinte em nfs_datastore:

  • third_party_nfs: (Obrigatório) Contém a configuração para o NFS de terceiros.
    • network: o nome da rede VPC no formato projects/{project}/global/networks/{network}.
    • file_share: o nome da partilha de ficheiros.
    • servers: uma lista de endereços IP do servidor.

O corpo do pedido é semelhante ao seguinte:

{
  "description": "Third-party NFS Datastore example",
  "nfs_datastore": {
    "third_party_nfs": {
      "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME",
      "file_share": "FILE_SHARE_NAME",
      "servers": ["SERVER_ADDRESS_1"]
    }
  }
}

Substitua o seguinte:

  • PROJECT_ID: o ID do seu Google Cloud projeto.
  • NETWORK_NAME: o nome da rede VPC para o arquivo de dados NFS de terceiros.
  • FILE_SHARE_NAME: o nome da partilha de ficheiros para o armazenamento de dados NFS de terceiros.
  • SERVER_ADDRESS_1: Um endereço IP do servidor para o armazenamento de dados NFS de terceiros. Se necessário, adicione mais moradas à lista.

gcloud

gcloud vmware datastores create DATASTORE_ID \
--third-party-nfs-network=NETWORK_NAME \
--third-party-nfs-file-share=FILE_SHARE_NAME \
--third-party-nfs-servers=SERVER_ADDRESSES \
--location=LOCATION --project=PROJECT_ID

Substitua o seguinte:

  • DATASTORE_ID: o nome do seu armazenamento de dados.
  • NETWORK_NAME: o nome da rede VPC para o armazenamento de dados NFS de terceiros.
  • FILE_SHARE_NAME: o nome da partilha de ficheiros para o armazenamento de dados NFS de terceiros.
  • SERVER_ADDRESSES: uma lista separada por vírgulas de endereços IP do servidor para o arquivo de dados NFS de terceiros.
  • LOCATION: a localização do Datastore.
  • PROJECT_ID: o ID do seu Google Cloud projeto.

Liste ou obtenha armazéns de dados

Para listar todos os Datastores de um determinado projeto e localização, use a CLI gcloud ou faça um pedido GET:

API

Para listar todos os Datastores de um determinado projeto e localização, faça um pedido GET:

GET https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datastores

Para obter detalhes sobre um Datastore específico, faça um pedido GET:

GET https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datastores/DATASTORE_ID

Substitua o seguinte:

  • PROJECT_ID: o ID do seu Google Cloud projeto.
  • LOCATION: a localização do Datastore.
  • DATASTORE_ID: o nome do armazenamento de dados.

gcloud

Para listar todos os Datastores de um determinado projeto e localização, use o comando gcloud vmware datastores list:

gcloud vmware datastores list \
--location=LOCATION --project=PROJECT_ID

Para obter detalhes sobre um arquivo de dados específico, use o comando gcloud vmware datastores describe:

gcloud vmware datastores describe DATASTORE_ID \
--location=LOCATION --project=PROJECT_ID

Substitua o seguinte:

  • LOCATION: a localização do Datastore.
  • PROJECT_ID: o ID do seu Google Cloud projeto.
  • DATASTORE_ID: o nome do armazenamento de dados.

Monte um armazenamento de dados

Depois de criar um recurso do Datastore, tem de montá-lo num cluster do vSphere para o disponibilizar aos anfitriões ESXi. Para montar um arquivo de dados NFS, use a CLI gcloud ou faça um pedido POST ao cluster de destino:

API

POST https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/privateClouds/PRIVATE_CLOUD_ID/clusters/CLUSTER_ID:mountDatastore

Exemplo de corpo do pedido:

{
  "datastore_mount_config": {
    "datastore": "projects/PROJECT_ID/locations/LOCATION/datastores/DATASTORE_ID",
    "datastore_network": {
      "subnet": "projects/PROJECT_ID/locations/LOCATION/privateClouds/PRIVATE_CLOUD_ID/subnets/SERVICE_SUBNET_NAME",
      "connection_count": 4
    },
    "access_mode": "READ_WRITE",
    "nfs_version": "NFS_V3"
  }
}
  • datastore: o nome do recurso do Datastore a montar.
  • subnet: o nome do recurso da sub-rede de serviço a usar para tráfego NFS.
  • connection_count: (Opcional) O número de associações. A predefinição é 4.
  • access_mode: (Opcional) O modo de acesso, READ_WRITE ou READ_ONLY. A predefinição é READ_WRITE.
  • nfs_version: (Opcional) A versão do NFS. A predefinição é NFS_V3.

Substitua o seguinte:

  • PROJECT_ID: o ID do seu Google Cloud projeto.
  • LOCATION: a localização dos recursos.
  • PRIVATE_CLOUD_ID: o nome da nuvem privada.
  • CLUSTER_ID: o nome do cluster.
  • DATASTORE_ID: o nome do Datastore a montar.
  • SERVICE_SUBNET_NAME: o nome da sub-rede de serviço a usar para o tráfego NFS.

gcloud

gcloud vmware private-clouds clusters mount-datastore CLUSTER_ID \
--location=LOCATION --project=PROJECT_ID \
--private-cloud=PRIVATE_CLOUD_ID \
--datastore=projects/PROJECT_ID/locations/LOCATION/datastores/DATASTORE_ID \
--subnet=SERVICE_SUBNET_NAME

Em alternativa, pode fornecer detalhes da configuração de rede através de um ficheiro JSON com a flag --datastore-network:

gcloud vmware private-clouds clusters mount-datastore CLUSTER_ID \
--location=LOCATION --project=PROJECT_ID \
--private-cloud=PRIVATE_CLOUD_ID \
--datastore=projects/PROJECT_ID/locations/LOCATION/datastores/DATASTORE_ID \
--datastore-network=network-config.json

Em que network-config.json contém:

{
    "subnet": "SERVICE_SUBNET_NAME",
    "mtu": 1500,
    "connection-count": 4
}

Substitua o seguinte:

  • CLUSTER_ID: o nome do cluster.
  • LOCATION: a localização dos recursos.
  • PROJECT_ID: o ID do seu Google Cloud projeto.
  • PRIVATE_CLOUD_ID: o nome da nuvem privada.
  • DATASTORE_ID: o nome do Datastore a montar.
  • SERVICE_SUBNET_NAME: o nome da sub-rede de serviço a usar para o tráfego NFS.

Após uma operação de montagem bem-sucedida, pode ver a configuração do Datastore montado no recurso do cluster. O recurso de cluster inclui uma entrada DatastoreMountConfig que corresponde à montagem. Por exemplo:

...
datastoreMountConfig:
- accessMode: READ_WRITE
  datastore: projects/PROJECT_ID/locations/LOCATION/datastores/DATASTORE_ID
  datastoreNetwork:
    connectionCount: 4
    mtu: 1500
    networkPeering: projects/PROJECT_ID/locations/global/networkPeerings/PEERING_NAME
    subnet: projects/PROJECT_ID/locations/LOCATION/privateClouds/PRIVATE_CLOUD_ID/subnets/SUBNET_NAME
  fileShare: FILE_SHARE_NAME
  nfsVersion: NFS_V3
  servers:
  - SERVER_IP
...

Após uma operação de montagem bem-sucedida, a lista clusters do recurso Datastore é atualizada. Pode descrever um Datastore para ver em que clusters está montado.

API

GET https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datastores/DATASTORE_ID

gcloud

gcloud vmware datastores describe DATASTORE_ID --location=LOCATION --project=PROJECT_ID

Depois de descrever um Datastore, procure o campo clusters na resposta para ver em que clusters o Datastore está montado. O exemplo de saída seguinte mostra um Datastore montado num cluster:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datastores/DATASTORE_ID",
  ...
  "clusters": [
    "projects/PROJECT_ID/locations/LOCATION/privateClouds/PRIVATE_CLOUD_ID/clusters/CLUSTER_ID"
  ],
  ...
}

Atualize um armazenamento de dados

Só é possível atualizar o campo description de um Datastore. Para atualizar um Datastore, use a CLI gcloud ou faça um pedido PATCH:

API

PATCH https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datastores/DATASTORE_ID

Exemplo de corpo do pedido:

{
  "description": "New datastore description"
}

Substitua o seguinte:

  • PROJECT_ID: o ID do seu Google Cloud projeto.
  • LOCATION: a localização do Datastore.
  • DATASTORE_ID: o ID do armazenamento de dados.

gcloud

gcloud vmware datastores update DATASTORE_ID \
--location=LOCATION --project=PROJECT_ID \
--description="DESCRIPTION"

Substitua o seguinte:

  • DATASTORE_ID: o nome do armazenamento de dados.
  • LOCATION: a localização do Datastore.
  • PROJECT_ID: o ID do seu Google Cloud projeto.
  • DESCRIPTION: uma descrição do armazenamento de dados.

Desmonte um armazenamento de dados

Para desmontar um arquivo de dados NFS de um cluster, use a CLI gcloud ou faça um pedido POST:

API

POST https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/privateClouds/PRIVATE_CLOUD_ID/clusters/CLUSTER_ID:unmountDatastore

Exemplo de corpo do pedido:

{
  "datastore": "projects/PROJECT_ID/locations/LOCATION/datastores/DATASTORE_ID"
}

Substitua o seguinte:

  • PROJECT_ID: o ID do seu Google Cloud projeto.
  • LOCATION: a localização dos recursos.
  • PRIVATE_CLOUD_ID: o nome da nuvem privada.
  • CLUSTER_ID: o nome do cluster.
  • DATASTORE_ID: o nome do Datastore a desmontar.

gcloud

gcloud vmware private-clouds clusters unmount-datastore CLUSTER_ID \
--location=LOCATION --project=PROJECT_ID \
--private-cloud=PRIVATE_CLOUD_ID \
--datastore=projects/PROJECT_ID/locations/LOCATION/datastores/DATASTORE_ID

Substitua o seguinte:

  • CLUSTER_ID: o nome do cluster.
  • LOCATION: a localização dos recursos.
  • PROJECT_ID: o ID do seu Google Cloud projeto.
  • PRIVATE_CLOUD_ID: o nome da nuvem privada.
  • DATASTORE_ID: o nome do Datastore a desmontar.

Elimine um Datastore

Para eliminar um recurso do Datastore, use a CLI gcloud ou faça um DELETE pedido. O Datastore não pode estar montado em nenhum cluster.

API

DELETE https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datastores/DATASTORE_ID

Substitua o seguinte:

  • PROJECT_ID: o ID do seu Google Cloud projeto.
  • LOCATION: a localização do Datastore.
  • DATASTORE_ID: o nome do Datastore a eliminar.

gcloud

gcloud vmware datastores delete DATASTORE_ID \
--location=LOCATION --project=PROJECT_ID

Substitua o seguinte:

  • DATASTORE_ID: o nome do Datastore a eliminar.
  • LOCATION: a localização do Datastore.
  • PROJECT_ID: o ID do seu Google Cloud projeto.

Resolução de problemas

As tabelas seguintes apresentam erros comuns durante a criação e a montagem do Datastore:

Erros de criação do Datastore

A tabela seguinte descreve os erros que pode encontrar ao criar repositórios de dados:

Mensagem de erro Causa Solução
A instância do servidor de ficheiros NFS do armazenamento de ficheiros não pode estar vazia. O campo filestore_instance no corpo do pedido está vazio. Indique o nome de recurso completo da sua instância do Filestore.
O volume do servidor de ficheiros NFS da NetApp não pode estar vazio. O campo netapp_volume no corpo do pedido está vazio. Indique o nome completo do recurso do seu volume do Google Cloud NetApp Volumes.
Formato de campo inválido para o tipo de campo filestore_instance O campo filestore_instance não segue o formato necessário. Certifique-se de que o nome do recurso está no formato projects/{project}/locations/{location}/instances/{instance}.
Formato de campo inválido para o tipo de campo netapp_volume… O campo netapp_volume não segue o formato necessário. Certifique-se de que o nome do recurso está no formato projects/{project}/locations/{location}/volumes/{volume}.
O Datastore e o volume NFS estão em localizações diferentes. A instância do Filestore ou o volume do Google Cloud NetApp Volumes está numa localização diferente da base de dados do Datastore que está a tentar criar. Certifique-se de que o volume NFS e o arquivo de dados estão na mesma localização.
O utilizador não tem as autorizações necessárias "file.instances.get" A conta de serviço não tem as autorizações do IAM necessárias para aceder à instância do Filestore. Conceda a função roles/file.viewer ao agente de serviço do VMware Engine.
Autorização "netapp.volumes.get" recusada no recurso… A conta de serviço não tem as autorizações da IAM necessárias para aceder ao volume do Google Cloud NetApp Volumes. Conceda a função roles/netapp.viewer ao agente de serviço do VMware Engine.
A instância do Filestore … não existe. Não foi possível encontrar a instância do Filestore especificada. Verifique se a instância do Filestore existe e se o nome do recurso está correto.
O volume Netapp … não existe. Não foi possível encontrar o volume do Google Cloud NetApp Volumes especificado. Verifique se o volume do Google Cloud NetApp Volumes existe e se o nome do recurso está correto.
A instância do Filestore tem um nível não suportado A instância do Filestore usa um nível que esta funcionalidade não suporta. Crie uma nova instância do Filestore com um nível suportado: zonal ou regional.
A instância do Filestore tem uma versão NFS não suportada A instância do Filestore usa uma versão NFS não suportada. Crie uma nova instância do Filestore com a versão 3 do NFS.
O volume Netapp … tem uma versão NFS não suportada … O volume do Google Cloud NetApp Volumes está a usar uma versão NFS não suportada. Crie um novo volume do Google Cloud NetApp Volumes com a versão 3 do NFS.
O volume do Netapp … tem a proteção contra eliminação desativada. O volume do Google Cloud NetApp Volumes tem a proteção contra eliminação desativada. Ative a proteção contra eliminação no volume do Google Cloud NetApp Volumes.
Não é possível criar o Datastore. Já existe o recurso … com a mesma configuração. Já existe um arquivo de dados com o mesmo nome e configuração. Escolha um nome diferente para o seu Datastore ou modifique a configuração.

Erros de montagem e desmontagem do Armazenamento de Dados

A tabela seguinte descreve os erros que pode encontrar ao montar ou desmontar arquivos de dados:

Mensagem de erro Causa Solução
Falha na validação de DatastoreFormat. O formato do arquivo de dados especificado não é suportado ou é inválido. Certifique-se de que o formato do arquivo de dados é compatível com o VMware Engine (por exemplo, NFSv3).
Intervalo de MTU inválido, deve ser entre 1300 e 9000 O valor da MTU (unidade de transmissão máxima) fornecido para a rede de armazenamento de dados está fora do intervalo aceitável de 1300 a 9000. Especifique um valor de MTU entre 1300 e 9000.
O projeto do Datastore não é igual ao projeto do cluster O Google Cloud ID do projeto do Datastore não corresponde ao Google Cloud ID do projeto do cluster do vSphere. Certifique-se de que o Datastore e o cluster pertencem ao mesmo Google Cloud projeto.
MTU inválida. A MTU deve ser consistente com a MTU do Datastore montado existente no cluster A MTU da nova rede do Datastore é inconsistente com a MTU de outros datastores NFS já montados no mesmo cluster. Alinhe a MTU do novo Datastore com a MTU dos Datastores montados existentes no cluster.
O arquivo de dados deve estar presente e no estado Pronto O recurso Datastore especificado não existe ou não se encontra no estado READY. Verifique se o Datastore foi criado com êxito e se o respetivo estado é READY através da API Get ou List Datastore.
Para a origem original, o armazenamento de ficheiros referenciado ou o NetApp deve estar presente e no estado pronto A instância do Filestore ou o volume do Google Cloud NetApp Volumes subjacente está em falta ou não se encontra no estado READY. Certifique-se de que o volume NFS referenciado existe e está no estado READY no respetivo projeto Google Cloud .
O intercâmbio de redes deve existir no estado ativo entre a VPC de partilha de ficheiros e a rede do VMware Engine da nuvem privada do cluster É necessária uma ligação de intercâmbio da rede da VPC entre a rede da VPC onde reside o volume NFS e a rede do VMware Engine da nuvem privada. Esta ligação está em falta ou não se encontra no estado ACTIVE. Confirme se existe uma ligação de intercâmbio da rede da VPC ativa entre a VPC da partilha de ficheiros e a rede do VMware Engine da sua nuvem privada.
A operação de montagem falha em redes antigas Para redes antigas, a ligação privada ao projeto de inquilino do volume NFS está em falta ou inativa. Certifique-se de que existe uma ligação privada ativa ao projeto de inquilino antes de tentar montar o Datastore. Não elimine uma ligação privada que um Datastore montado esteja a usar.
Para a origem, a opção de exportação deve ser adicionada para permitir a sub-rede do PC usada para a montagem A política de exportação no volume NFS não inclui a sub-rede de serviço da nuvem privada para acesso. Modifique a política de exportação do seu volume NFS para permitir o acesso a partir da sub-rede de serviço da nuvem privada que vai ser usada para a montagem.
A sub-rede deve estar presente com um CIDR de IP válido configurado A sub-rede de serviço especificada para a rede do Datastore está em falta ou não tem um intervalo CIDR de IP válido configurado. Certifique-se de que a sub-rede de serviço designada existe e tem um intervalo CIDR de IP configurado corretamente, suficiente para atribuir IPs a todos os anfitriões ESXi no cluster.
Formato de arquivo de dados inválido O nome do recurso do Datastore especificado não está num formato reconhecido ou correto, o que impede a operação de desmontagem. Verifique se o nome do recurso do Datastore fornecido no pedido de desmontagem é preciso e segue o formato projects/{project}/locations/{location}/datastores/{datastore_id}.
O armazenamento de dados não está montado no cluster O Datastore que está a tentar desmontar não está montado no cluster especificado. Antes de tentar desmontar, confirme que o Datastore está montado no cluster vSphere de destino.