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 formatoprojects/{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 formatoprojects/{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 formatoprojects/{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_WRITEouREAD_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. |