Um espelho do Cloud Storage fornece um serviço de sincronização automatizado e orientado por eventos que espelha continuamente os arquivos de um bucket do Cloud Storage para um diretório do Managed Lustre. O espelhamento é compatível apenas em uma direção, do Cloud Storage para o Managed Lustre.
Os espelhos do Cloud Storage estão disponíveis apenas mediante solicitação. Para indicar seu interesse, envie o formulário de solicitação de espelhamento do Cloud Storage.
Para receber suporte com espelhos ativos do Cloud Storage, entre em contato com google-cloud-managed-lustre-support@google.com.
Espelhamentos do Cloud Storage em comparação com transferências de dados sob demanda
O Managed Lustre é compatível com dois mecanismos para mover dados com o Cloud Storage:
| Recurso | Espelhos do Cloud Storage | Transferências de dados on demand |
|---|---|---|
| Direção | Cloud Storage para Managed Lustre | Cloud Storage para Managed Lustre Managed Lustre para Cloud Storage |
| Gatilho | Orientado por eventos; sincroniza automaticamente na criação, atualização e exclusão de objetos | Manual |
| Namespace hierárquico | Sem suporte | Compatível e recomendado para velocidades de transferência aceleradas |
| Buckets do Rapid Storage | Sem suporte | Sem suporte |
Para informações sobre transferências sob demanda, consulte Transferir dados de ou para o Cloud Storage.
Como funciona um espelho do Cloud Storage
Um espelho do Cloud Storage executa transferências baseadas em eventos entre uma origem do Cloud Storage e um diretório de destino do Managed Lustre. A origem do Cloud Storage pode ser um bucket ou um prefixo de objeto específico dentro de um bucket. O espelhamento é realizado em duas fases: uma sincronização inicial quando você cria o espelho, seguida pela replicação contínua das mudanças subsequentes.
Sincronização inicial
Quando você cria um espelho do Cloud Storage, o serviço realiza uma sincronização inicial para copiar todos os objetos do caminho de origem do Cloud Storage para o diretório de destino do Managed Lustre.
Replicação contínua orientada por eventos
Após a sincronização inicial, o serviço de espelhamento detecta notificações de bucket e replica as mudanças.
A maioria dos objetos pode ser replicada em minutos. Quando um objeto é criado ou modificado, o arquivo inteiro é copiado.
A criação de um novo objeto no Cloud Storage cria automaticamente o arquivo correspondente no Managed Lustre.
Modificar um objeto atual no Cloud Storage substitui o arquivo no Managed Lustre, descartando todas as modificações locais feitas no sistema de arquivos.
As alterações nos atributos de metadados POSIX personalizados em objetos do Cloud Storage, como UID, GID, modo ou
mtime, são atualizadas no arquivo do Managed Lustre correspondente.A exclusão de um objeto no Cloud Storage exclui o arquivo espelhado no Managed Lustre por padrão. É possível mudar esse comportamento usando a flag
--deleted-files-retained. Os diretórios pai vazios permanecem no sistema de arquivos depois que o último arquivo abaixo deles é excluído.As modificações feitas no Managed Lustre em arquivos espelhados não são copiadas de volta para o bucket de origem. Se o objeto de origem for atualizado posteriormente, o arquivo do Managed Lustre será substituído pelo conteúdo do objeto de origem, descartando todas as modificações locais.
A exclusão de um arquivo espelhado no Managed Lustre não exclui o objeto correspondente no Cloud Storage.
Velocidades de transferência
As seguintes velocidades de transferência se aplicam aos espelhos do Cloud Storage com buckets e instâncias na mesma região do Google Cloud :
A sincronização inicial copia os dados atuais em até 100 GBps para arquivos com mais de 32 MB e até 10.000 objetos por segundo para arquivos pequenos.
A replicação contínua sincroniza automaticamente as mudanças em andamento, com o desempenho da transferência variando de acordo com o tamanho do arquivo:
- Arquivos grandes de 10 MB ou mais são transferidos com uma capacidade de pico de até 3,5 GBps.
- Arquivos pequenos de 4 KB ou menos são transferidos a até 4.900 objetos por segundo.
Se os dados forem gravados no Cloud Storage mais rápido do que o espelho pode copiá-los, os eventos serão colocados em uma lista de pendências, aumentando o tempo necessário para que as mudanças apareçam no Managed Lustre. O espelho é atualizado automaticamente quando a taxa de alteração diminui.
A velocidade de transferência é limitada por:
A capacidade de processamento máxima de uma instância, que é a capacidade da instância multiplicada pelo nível de desempenho.
Largura de banda de saída do Cloud Storage, que é limitada a 200 Gbps ou 25 GBps por região e por projeto. Para aumentar a largura de banda de saída, solicite um aumento de cota.
Latência de rede para transferências entre regiões. Coloque o bucket de origem e a instância na mesma região para ter o melhor desempenho.
Preços
Um espelho do Cloud Storage gera cobranças padrão do Cloud Storage, que são faturadas para o projeto que contém o bucket de origem:
- A sincronização inicial realiza operações de lista de classe A e de leitura de classe B no bucket de origem, e a replicação contínua realiza operações de leitura de classe B, que geram cobranças de operação do Cloud Storage.
- O espelhamento de dados de um bucket de origem em uma região diferente da instância do Managed Lustre gera cobranças de transferência de dados entre regiões.
Antes de começar
Para criar um espelho do Cloud Storage, é necessário:
- Uma instância do Managed Lustre no estado
ACTIVE. - Um bucket do Cloud Storage para usar como origem do espelho. Não há suporte para buckets com namespace hierárquico ativado, buckets do Rapid Storage e buckets com Pagamentos do solicitante ativados.
Permissões, papéis e recursos necessários
As seguintes permissões, papéis e recursos do IAM são necessários para criar e gerenciar espelhos do Cloud Storage.
Permissões do usuário
Para criar e gerenciar espelhos, sua conta de usuário ou de serviço precisa do
papel de administrador do Managed Lustre, roles/lustre.admin.
Se você usar um papel personalizado, ele vai exigir as seguintes permissões:
lustre.mirrors.createpara criar um espelho.lustre.mirrors.getpara descrever um espelho.lustre.mirrors.listpara listar espelhos.lustre.mirrors.updatepara atualizar um espelho.lustre.mirrors.deletepara excluir um espelho.
Inicialização do agente de serviço do Cloud Storage
O agente de serviço do Cloud Storage precisa existir no projeto para que possa publicar eventos de notificação de bucket:
gcloud storage service-agent --project=PROJECT_ID
Substitua PROJECT_ID pelo ID do projeto Google Cloud .
Permissões do agente de serviço do Managed Lustre
O agente de serviço do Managed Lustre gerenciado pelo Google precisa de acesso ao bucket do Cloud Storage de origem. Para instruções sobre como encontrar ou inicializar a identidade do agente de serviço, consulte Agente de serviço do Managed Lustre.
O agente de serviço requer as seguintes permissões no bucket de origem do Cloud Storage:
storage.buckets.getstorage.buckets.updatestorage.objects.getstorage.objects.list
Crie um papel personalizado com estas permissões:
gcloud iam roles create lustreMirrorUser \
--project=PROJECT_ID \
--title="Lustre mirror user" \
--permissions=storage.buckets.get,storage.buckets.update,storage.objects.get,storage.objects.list
Conceda o papel personalizado ao agente de serviço do Managed Lustre no bucket de origem:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
--member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-lustre.iam.gserviceaccount.com" \
--role="projects/PROJECT_ID/roles/lustreMirrorUser"
Substitua:
- PROJECT_ID: o ID do projeto do Google Cloud .
- BUCKET_NAME: o nome do bucket do Cloud Storage de origem.
- PROJECT_NUMBER: o número do projeto do Google Cloud .
Criar um espelho do Cloud Storage
É possível criar um espelho do Cloud Storage por instância do Managed Lustre.
Não é possível criar um espelho do Cloud Storage enquanto uma operação de importação ou exportação está em andamento na instância.
gcloud
Execute o comando mirrors create:
gcloud lustre instances mirrors create MIRROR_NAME \
--instance=INSTANCE_ID \
--location=LOCATION \
--direction=from-cloud-storage \
--gcs-path-uri="gs://BUCKET_NAME/PREFIX/" \
--lustre-path="/LUSTRE_DIRECTORY"
Em que:
- MIRROR_NAME é o nome desse recurso de espelhamento. Precisa ter de 1 a 63 caracteres, conter apenas letras minúsculas, números e hifens, começar com uma letra e terminar com uma letra ou um número.
- INSTANCE_ID é o ID da instância do Managed Lustre.
- LOCATION é a zona da instância. Por exemplo,
us-central1-a. --directionespecifica a direção do espelhamento. Precisa serfrom-cloud-storage.--gcs-path-urié o bucket de origem do Cloud Storage e o prefixo de objeto opcional. Se você especificar um prefixo de objeto, o caminho precisará terminar com uma barra:gs://<var>BUCKET_NAME</var>/<var>PREFIX</var>/.--lustre-pathé o diretório de destino no sistema de arquivos do Managed Lustre. Precisa ser um caminho absoluto começando com/, por exemplo,/dataou/data/subdir. O padrão é o diretório raiz,/. Se o diretório especificado não existir, ele será criado.
Os seguintes parâmetros opcionais estão disponíveis:
--deleted-files-retainedou--no-deleted-files-retained: controla se os arquivos excluídos no Cloud Storage são retidos no Managed Lustre. O padrão é--no-deleted-files-retained.--description=DESCRIPTION_TEXT: uma descrição opcional para o espelho.
REST
Envie uma solicitação POST para o método instances.mirrors.create:
POST https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID/mirrors?mirrorId=MIRROR_NAME
Authorization: Bearer YOUR_ACCESS_TOKEN
Content-Type: application/json
{
"gcsPath": {
"uri": "gs://BUCKET_NAME/PREFIX/"
},
"lustrePath": {
"path": "/LUSTRE_DIRECTORY"
},
"direction": "FROM_CLOUD_STORAGE"
}
Em que:
- PROJECT_ID é o ID do projeto do Google Cloud .
- LOCATION é a zona da instância do Managed Lustre. Por exemplo,
us-central1-a. - INSTANCE_ID é o ID da instância.
- MIRROR_NAME é o nome desse recurso de espelhamento. Precisa ter de 1 a 63 caracteres, conter apenas letras minúsculas, números e hifens, começar com uma letra e terminar com uma letra ou um número.
gcsPathcontém um campouricom o bucket de origem do Cloud Storage e o prefixo de objeto opcional. Se você especificar um prefixo de objeto, o caminho precisará terminar com uma barra:gs://<var>BUCKET_NAME</var>/<var>PREFIX</var>/.lustrePathé o diretório de destino no sistema de arquivos do Managed Lustre. Precisa ser um caminho absoluto começando com/, por exemplo,/dataou/data/subdir. O padrão é o diretório raiz,/. Se o diretório especificado não existir, ele será criado.directionespecifica a direção do espelhamento. Precisa serFROM_CLOUD_STORAGE.
O corpo da solicitação também aceita os seguintes campos opcionais:
deletedFilesRetained: defina comotruepara reter arquivos no Managed Lustre depois que os arquivos correspondentes forem excluídos do Cloud Storage. O padrão éfalse.description: uma descrição opcional para o espelho.
Atributos de arquivo
Quando um arquivo é copiado de um bucket do Cloud Storage para uma instância do Managed Lustre, os atributos do arquivo na instância do Managed Lustre são definidos de uma das duas maneiras:
- Se o objeto do Cloud Storage tiver metadados personalizados, conforme descrito para
exportar dados:
- O UID, o GID, o modo e o
mtimedo arquivo são definidos com base nos metadados personalizados do objeto. - O
atimedo arquivo é definido com o mesmo valor que omtime.
- O UID, o GID, o modo e o
- Se o objeto do Cloud Storage não tiver os metadados personalizados:
- O UID e o GID do arquivo são definidos como 0 (
root). - O modo do arquivo está definido como
rwxr-xr-x(755). - O
atimee omtimedo arquivo são definidos como o horário de criação do objeto do Cloud Storage.
- O UID e o GID do arquivo são definidos como 0 (
Em ambos os casos:
- O
ctimede um arquivo é definido como o horário em que o arquivo foi gravado na instância. - Os valores de
atime,ctimeemtimede um diretório são definidos como o horário em que o diretório foi criado na instância.
Gerenciar espelhos do Cloud Storage
É possível listar, descrever, atualizar e excluir espelhos do Cloud Storage usando a ferramenta Google Cloud CLI ou a API REST. Para alterar o caminho de origem ou de destino de um espelhamento, exclua o espelhamento atual e crie um novo.
Listar um espelho
Para ver um espelho configurado em uma instância:
gcloud
gcloud lustre instances mirrors list \
--instance=INSTANCE_ID \
--location=LOCATION
REST
Envie uma solicitação GET para o método instances.mirrors.list:
GET https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID/mirrors
Authorization: Bearer YOUR_ACCESS_TOKEN
Descreva um espelho
Para conferir a configuração e o status de funcionamento de um espelho:
gcloud
gcloud lustre instances mirrors describe MIRROR_NAME \
--instance=INSTANCE_ID \
--location=LOCATION
REST
Envie uma solicitação GET para o método instances.mirrors.get:
GET https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID/mirrors/MIRROR_NAME
Authorization: Bearer YOUR_ACCESS_TOKEN
Estados do espelho
O campo state retornado pelos comandos list e describe informa onde
o espelho está no ciclo de vida:
| Estado | Descrição |
|---|---|
CREATING |
O recurso de espelho está sendo criado. |
INITIAL_SYNC |
A sincronização inicial está copiando objetos do Cloud Storage. |
ACTIVE |
O espelho está sincronizando as mudanças conforme elas ocorrem. |
DELETING |
O espelho está sendo excluído. |
Atualizar um espelho
É possível atualizar a descrição, os rótulos e se os arquivos excluídos devem ser mantidos.
Não é possível mudar os caminhos do Cloud Storage e do Managed Lustre. Para apontar um espelho para um caminho diferente, exclua o espelho e crie um novo.
A atualização de um espelho não executa novamente a sincronização inicial.
gcloud
gcloud lustre instances mirrors update MIRROR_NAME \
--instance=INSTANCE_ID \
--location=LOCATION \
--description="DESCRIPTION_TEXT"
REST
Envie uma solicitação PATCH ao método instances.mirrors.patch com um parâmetro de consulta updateMask:
PATCH https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID/mirrors/MIRROR_NAME?updateMask=description
Authorization: Bearer YOUR_ACCESS_TOKEN
Content-Type: application/json
{
"description": "DESCRIPTION_TEXT"
}
Excluir um espelho
Para excluir um espelho:
gcloud
gcloud lustre instances mirrors delete MIRROR_NAME \
--instance=INSTANCE_ID \
--location=LOCATION
REST
Envie uma solicitação DELETE para o método instances.mirrors.delete:
DELETE https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID/mirrors/MIRROR_NAME
Authorization: Bearer YOUR_ACCESS_TOKEN
A exclusão de um espelho interrompe a sincronização futura entre o Cloud Storage e o Managed Lustre. Os arquivos que já foram copiados para o Managed Lustre não são excluídos quando o espelho é removido.
As transferências de arquivos em andamento quando um espelho é excluído são canceladas.
As transferências incompletas podem deixar arquivos temporários com o formato de nome
FILENAME.cloud_transfer.UUID.NUMBER.tmp no diretório de espelhamento após a
exclusão do espelhamento. Você pode excluir esses arquivos.
Como visualizar registros
Os registros de espelhamento identificam arquivos individuais que não foram sincronizados.
Os registros são roteados para o Cloud Logging no recurso lustre.googleapis.com/Instance, com o nome de registro mirror.
Para ver os registros de operações de espelhamento:
- Acesse a Análise de registros.
Digite a seguinte consulta:
resource.type="lustre.googleapis.com/Instance" logName="projects/PROJECT_ID/logs/lustre.googleapis.com%2Fmirror" resource.labels.instance_id="INSTANCE_ID"
Solução de problemas
Erros de PERMISSION_DENIED no bucket de origem
Se a criação do espelho falhar com um erro PERMISSION_DENIED, os arquivos não estiverem sendo sincronizados ou houver registros mostrando erros "PERMISSION_DENIED":
Verifique se o agente de serviço do Cloud Storage foi inicializado:
gcloud storage service-agent --project=PROJECT_IDConfirme se o agente de serviço do Managed Lustre recebeu as permissões necessárias no bucket de origem. Consulte Conceder permissões de agente de serviço para mais detalhes.
As mudanças no Cloud Storage não estão sendo replicadas para o Managed Lustre
Se o estado do espelho for ACTIVE, mas os objetos novos ou modificados no Cloud Storage
não estiverem aparecendo no Managed Lustre, confirme se a configuração de notificação
do bucket existe no bucket de origem.
Liste as notificações do bucket:
gcloud storage buckets notifications list --bucket=BUCKET_NAMESe a saída estiver vazia, exclua o espelho atual e crie um novo:
gcloud lustre instances mirrors delete MIRROR_NAME \ --instance=INSTANCE_ID \ --location=LOCATIONDepois que a exclusão for concluída, crie um novo espelho.
Erros de conflito entre nomes
Se você notar que há arquivos faltando no Managed Lustre depois de adicioná-los ao Cloud Storage, verifique se há erros de conflito de nomenclatura no Cloud Logging:
- Se um objeto criado no Cloud Storage tiver o mesmo nome de um diretório
no Managed Lustre, a transferência vai falhar com um
erro
file exists, e o diretório não será substituído. A transferência com falha deixa um arquivo temporário com o formato de nomeFILENAME.cloud_transfer.UUID.NUMBER.tmpno diretório pai. - Se um objeto criado no Cloud Storage tiver um prefixo de caminho que corresponda
a um arquivo regular no Managed Lustre, a transferência vai falhar
com um erro
not a directory, e o arquivo atual não será substituído. Por exemplo, semodelsfor um arquivo atual no Managed Lustre, a transferência de um objeto chamadomodels/weights.bindo Cloud Storage vai falhar porque o diretóriomodels/não pode ser criado.
Para resolver esses conflitos, renomeie ou exclua o diretório ou arquivo conflitante
no Managed Lustre, remova todos os arquivos .tmp restantes e
faça upload do objeto novamente no Cloud Storage para acionar a sincronização.
ABORTED: unable to queue the operation
Se você receber um erro ABORTED: unable to queue the operation ao criar um espelho ou iniciar um job de transferência sob demanda:
- Verifique se não há operações
import-dataouexport-dataem execução na instância antes de criar um espelho. - Aguarde a conclusão da criação do espelho e da sincronização inicial antes de tentar outras operações de dados administrativos na instância.
FILESYSTEM_NO_SPACE_ON_DEVICE
Se o espelhamento for interrompido e os registros indicarem erros de espaço, talvez o sistema de arquivos do Managed Lustre esteja sem inodes ou capacidade de disco. Você pode excluir arquivos desnecessários para liberar espaço ou aumentar a capacidade de armazenamento para expandir o sistema de arquivos.