Resolva problemas de transferências do sistema de ficheiros

Este documento descreve como resolver problemas de transferência e de agente, e onde encontrar registos de agentes para ajudar a resolver problemas.

Erros

A tabela seguinte descreve as mensagens de erro de transferência e como as resolver:

Mensagem de erro Tipo de erro O que significa o erro Como resolver o erro
Modificado durante a transferência FILE_MODIFIED_FAILURE O ficheiro de origem foi modificado durante a transferência sempre que o Serviço de transferência de armazenamento tentou copiar o ficheiro de origem. Impedir escritas no ficheiro especificado durante a próxima operação do serviço de transferência de armazenamento.
Falha ao transferir PRECONDITION_FAILURE O objeto do Cloud Storage associado ao ficheiro de origem foi modificado sempre que o serviço de transferência de armazenamento tentou carregar o ficheiro. Impeça que várias tarefas de transferência escrevam o mesmo ficheiro no mesmo contentor do Cloud Storage usando prefixos de objetos do Cloud Storage únicos quando criar tarefas de transferência.
Diretório de origem não encontrado SOURCE_DIR_NOT_FOUND O caminho de origem especificado está incorreto ou o caminho está correto, mas nem todos os agentes têm acesso ao mesmo. Verifique a configuração da tarefa de transferência e confirme o seguinte:
Não foi possível encontrar o diretório de origem ou de destino da tarefa ROOT_DIR_NOT_FOUND O caminho de origem/destino especificado está incorreto ou o caminho está correto, mas nem todos os agentes têm acesso ao caminho. Verifique a configuração da tarefa de transferência e confirme o seguinte:
Ficheiro não encontrado FILE_NOT_FOUND_FAILURE O ficheiro de origem foi encontrado, mas foi eliminado antes de ser transferido para o Cloud Storage. Se o ficheiro foi eliminado por engano, restaure-o para que a próxima tarefa de transferência o possa carregar.
Não foi possível encontrar o contentor de destino BUCKET_NOT_FOUND O contentor de destino não existe no Cloud Storage. Verifique se a ortografia do contentor de destino está correta e se este existe.
Não foi possível encontrar um objeto de metadados interno METADATA_OBJECT_
NOT_FOUND_FAILURE
O serviço de transferência de armazenamento armazena metadados no contentor de destino com o prefixo storage-transfer. Se os ficheiros de metadados forem eliminados antes de as respetivas operações de transferência serem concluídas, é apresentado este erro. Evite eliminar objetos com o prefixo storage-transfer/ no contentor de destino até que todas as tarefas de transferência estejam concluídas.
Falhou devido a um nome de ficheiro inválido INVALID_FILE_NAME O caminho de um ficheiro de origem não é válido. Valide e corrija o caminho do ficheiro especificado. Verifique se o caminho usa caracteres suportados pelo Cloud Storage.
Falha devido à classe de armazenamento inválida INVALID_FILE_STORAGE_CLASS A classe de armazenamento da origem especificada não permite leituras. Encontre a documentação do seu fornecedor de nuvem para determinar como transferir os dados para uma classe de armazenamento que permita copiar os dados para fora.
Falhou devido ao URI da sessão de carregamento retomável inválido SESSION_URI_INVALID O ID de carregamento retomável ou o URI da sessão expirou ou foi cancelado. A falha está a ser repetida incorretamente. Contacte o apoio técnico.
Falha devido ao tamanho do ficheiro inválido INVALID_FILE_SIZE O tamanho do ficheiro é inválido. Verifique se o tamanho do ficheiro é >= 0 e <= 5 TiB (tamanho máximo do objeto do Cloud Storage) para transferências para o Cloud Storage.
Falha devido a autorizações PERMISSION_FAILURE e UNAUTHENTICATED Um agente de transferência não tinha autorizações suficientes para realizar uma operação. Existem duas possibilidades para este erro:
  • Um agente tinha autorizações Google Cloud insuficientes.
  • Um agente não conseguiu ler um ficheiro ou um diretório devido a autorizações insuficientes no sistema de ficheiros de origem.

Verifique o seguinte:

O objeto está sujeito à política de retenção do contentor e não pode ser eliminado, substituído nem arquivado PERMISSION_FAILURE O contentor tem uma política de retenção em vigor e o objeto já existe no contentor. O Serviço de transferência de armazenamento não pode substituir objetos existentes no contentor. Este erro pode ser apresentado se o ficheiro tiver sido alterado na origem ou se o serviço de transferência de armazenamento tentar o carregamento duas vezes devido às condições da rede e o primeiro carregamento tiver sido bem-sucedido. Verifique se os dados no seu contentor do Cloud Storage correspondem às suas expectativas. Pode confirmar que o tamanho e a hora de modificação (mtime) dos ficheiros de origem correspondem aos respetivos objetos do Cloud Storage executando novamente a tarefa e confirmando que não existem erros.
O serviço não tinha autorizações suficientes SERVICE_PERMISSION_FAILURE O serviço de transferência de armazenamento não tinha autorizações suficientes para realizar uma operação. O serviço de transferência de armazenamento usa uma conta de serviço gerida pela Google, normalmente no formato de project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com, para aceder aos recursos. Para determinar o seu PROJECT_NUMBER específico, use a chamada API googleserviceaccounts.get. Verifique se a conta de serviço tem as seguintes funções:
  • roles/storagetransfer.serviceAgent para o projeto.
  • roles/storage.admin para todos os conjuntos de destinos.
Agente não suportado AGENT_UNSUPPORTED_VERSION A versão do agente já não é compatível com o serviço de transferência de armazenamento. Este é um erro temporário relacionado com uma atualização incorreta do agente. Se ocorrer, faça o seguinte:
  1. Pare todos os seus agentes.
  2. Extraia a imagem do Docker mais recente executando: sudo docker pull gcr.io/cloud-ingest/tsop-agent
  3. Execute o comando run do Docker para iniciar todos os contentores do agente.
Se o problema persistir, contacte a sua equipa de apoio técnico.
Falha devido a hash não correspondente HASH_MISMATCH_FAILURE Sempre que o serviço de transferência de armazenamento tentou carregar este ficheiro, os bytes carregados foram corrompidos. Este problema técnico fez com que o hash do ficheiro no local não correspondesse ao hash do objeto do Cloud Storage resultante. Este erro pode ser causado por vários problemas potenciais. Se vir uma pequena percentagem de falhas de incompatibilidade de hash (inferior a 1%) numa transferência grande, experimente novamente os ficheiros com falhas. Se vir uma grande percentagem de falhas de incompatibilidade de hash (1% ou mais), recomendamos que investigue potenciais falhas de memória, CPU ou outro hardware na máquina do agente.
Falha devido a um modo de ficheiro não suportado UNSUPPORTED_FILE_MODE O serviço de transferência de armazenamento encontrou um ficheiro com um modo não suportado, como um dispositivo, um soquete, um canal anónimo ou um ficheiro irregular. Remova estes tipos de ficheiros especiais do diretório de origem.
Falha devido a um erro no sistema de ficheiros FILESYSTEM_ERROR Um agente encontrou um erro do sistema de ficheiros ou do sistema operativo ao realizar uma operação do sistema de ficheiros, como leitura, procura ou estatísticas. Leia a descrição da falha para compreender que operação do sistema de ficheiros falhou. Certifique-se de que o sistema de ficheiros está acessível ao agente no local e responde às operações básicas de ficheiros.
Falha devido à falta de espaço no sistema de ficheiros FILESYSTEM_NO_SPACE_ON_DEVICE Um agente ficou sem espaço ao realizar uma operação do sistema de ficheiros, como abrir ou escrever. Leia a descrição da falha para compreender que operação do sistema de ficheiros falhou. Certifique-se de que o sistema de ficheiros tem espaço suficiente para realizar operações de ficheiros.
Falha devido a um erro desconhecido UNKNOWN_FAILURE Ocorreu um erro inesperado. Leia a descrição da falha. Se a descrição da falha não contiver informações suficientes para resolver o problema, contacte o apoio técnico.
Falha devido a uma especificação inválida INVALID_SPEC O agente recebeu uma especificação interna danificada. Verifique se existe corrupção de dados nos anfitriões dos agentes e contacte o apoio técnico se não conseguir encontrar nenhum.
Falha devido a um ficheiro de manifesto vazio ou inválido CONFORMANCE_FAILURE O agente não consegue ler nem obter bytes CSV válidos devido a formatação ou entradas CSV inválidas. Certifique-se de que as entradas do manifesto são caminhos de ficheiros válidos. Se a descrição da falha não contiver informações suficientes para resolver o problema, contacte o apoio técnico.
A voltar a carregamentos retomáveis em vez de carregamentos multipartes devido a um erro de autorização recusada PERMISSION_FAILURE Os carregamentos multipartes foram ativados para esta transferência, mas as autorizações corretas não foram definidas no contentor. Consulte a secção Carregamentos multipartes de Autorizações do sistema de ficheiros para ver as autorizações necessárias.
As entradas estão listadas fora de ordem INCOMPATIBLE_LIST_ORDER_FAILURE O sistema de ficheiros de origem devolveu uma lista de ficheiros numa ordem que é incompatível com o serviço de transferência de armazenamento. O serviço de transferência de armazenamento requer que o sistema de ficheiros de origem devolva ficheiros por ordem alfabética. Verifique se o sistema de ficheiros devolve ficheiros por ordem lexicográfica.

Ver registos do agente

Os registos de agentes contêm informações relevantes para os processos dos agentes e podem ajudar a resolver problemas de ligação de agentes. Se os seus agentes estiverem listados como ligados na consola do Google Cloud Google Cloud e estiver a ter falhas de transferência, consulte Ver erros para ver um exemplo de erros de transferência. Para ver registos que contêm um registo de todos os ficheiros que o serviço de transferência de armazenamento considerou durante uma transferência, consulte o artigo Ver registos de transferência.

Por predefinição, os registos de agentes são armazenados em /tmp. Pode alterar a localização com a --log-dir=logs-directory opção de linha de comandos.

Os registos têm os seguintes nomes:

agent.hostname.username.log.log-level.timestamp

Onde:

  • hostname: o nome do anfitrião no qual o agente está a ser executado.
  • username: nome de utilizador que executa o agente.
  • log-level é um dos seguintes:
    • INFO – Mensagens informativas
    • ERROR: erros encontrados durante a transferência, mas que não impedem a continuação da tarefa de transferência.
    • FATAL - erros encontrados que impedem a continuação da tarefa de transferência.
  • timestamp: indicação de tempo no formato YYYYMMDD-hhmmss.thread-id.

O diretório de registos contém links simbólicos para os registos mais recentes de cada um dos níveis de prioridade:

  • agent.ERROR
  • agent.FATAL
  • agent.INFO

Velocidade de transferência lenta

Se a transferência de dados estiver a demorar muito tempo, verifique o seguinte:

  1. A taxa de transferência de leitura do seu sistema de ficheiros deve ser aproximadamente 1,5 vezes a velocidade de carregamento pretendida. Pode usar o FIO para testar a taxa de transferência de leitura do seu sistema de ficheiros.

    Instalar fio:

     sudo apt install -y fio
     

    Crie um novo diretório fiotest:

     TEST_DIR=/mnt/mnt_dir/fiotest
     sudo mkdir -p $TEST_DIR
     

    Testar débito de leitura:

     sudo fio --directory=$TEST_DIR --direct=1
        --rw=randread --randrepeat=0 --ioengine=libaio --bs=1M --iodepth=8
        --time_based=1 --runtime=180 --name=read_test --size=1G
     

    Depois de executar os comandos acima, o Fio gera um relatório. A linha etiquetada como "bw" representa a largura de banda agregada total de todas as linhas de execução e pode ser usada como um proxy para a taxa de transferência de leitura.

  2. Use o iPerf3 para verificar a largura de banda da Internet disponível para o serviço de transferência de armazenamento.

  3. Certifique-se de que cada um dos seus agentes de transferência tem, pelo menos, 4 vCPU e 8 GB de RAM.

Se verificou as condições acima e ainda está a ter tempos de transferência longos, pode adicionar agentes adicionais para aumentar o número de ligações simultâneas ao sistema de ficheiros dos seus dados.

Para mais informações sobre como maximizar o desempenho dos seus agentes de transferência, consulte as práticas recomendadas para agentes.

Resolução de problemas de erros do agente

As secções seguintes descrevem como resolver problemas e erros de agentes de transferência:

Os agentes não estão ligados

Se os agentes de transferência não forem apresentados como associados na Google Cloud consola:

  1. Verifique se os agentes conseguem estabelecer ligação às APIs Cloud Storage:

    1. Execute o seguinte comando a partir da mesma máquina que o agente de transferência para testar a ligação do agente às APIs Cloud Storage:

      gcloud storage cp test.txt gs://my-bucket

      Substituição:

      my-bucket com o nome do seu contentor do Cloud Storage.

  2. Se o seu projeto usar os VPC Service Controls, veja os registos do agente para verificar se existem erros. Se o VPC Service Controls estiver configurado incorretamente, os registos do agente INFO vão conter o seguinte erro:

    Request is prohibited by organization's policy. vpcServiceControlsUniqueIdentifier: id

    Neste resultado:

Os agentes estão ligados, mas as tarefas falham

Se os agentes forem apresentados como ligados, mas as tarefas de transferência falharem, verifique os detalhes do erro das tarefas com falhas.

O proxy rejeita endereços IP

Se estiver a usar um proxy como o Squid e usar uma lista de autorizações, pode ver pedidos recusados devido a endereços IP usados em vez de nomes de anfitriões.

Para resolver este problema, use o comando docker run para executar os agentes e adicione a seguinte flag:

--transfer-service-endpoint=storagetransfer.googleapis.com:443

Se usar um ponto final alternativo para aceder a googleapis.com (por exemplo, para o Private Service Connect), substitua googleapis.com pelo ponto final alternativo.

O agente não consegue estabelecer ligação a um ponto final HTTPS através de um certificado autoassinado

Se o seu agente não conseguir estabelecer ligação a um ponto final HTTPS através de um certificado autossinado, use uma opção -v adicional para montar o pacote de certificados personalizado na localização predefinida do contentor (/etc/ssl/certs).

Para o fazer, modifique o comando docker run adicionando a seguinte flag:

-v PATH_TO_LOCAL_CERT:/etc/ssl/certs/ca-certificates.crt

Substituição:

  • PATH_TO_LOCAL_CERT com o caminho para o ficheiro de certificado personalizado.