Soluciona problemas de transferencias del sistema de archivos

En este documento, se describe cómo solucionar y resolver problemas de transferencia y de agentes, y dónde encontrar los registros de agente para ayudarte a solucionar problemas.

Errors

En la siguiente tabla, se describen los mensajes de error de las transferencias y cómo resolverlos:

Mensaje de error Tipo de error Qué significa el error Cómo resolver el error
Modificado durante la transferencia FILE_MODIFIED_FAILURE El archivo de origen se modificó durante la transferencia cada vez que el Servicio de transferencia de almacenamiento intentó copiar el archivo de origen. Evita escrituras en el archivo especificado durante la siguiente operación de Servicio de transferencia de almacenamiento.
No se pudo transferir PRECONDITION_FAILURE El objeto de Cloud Storage asociado con el archivo de origen se modificó cada vez que el Servicio de transferencia de almacenamiento intentó subir el archivo. Evita que varios trabajos de transferencia escriban el mismo archivo en el mismo bucket de Cloud Storage mediante el uso de prefijos únicos de objetos de Cloud Storage cuando crees trabajos de transferencia.
No se encontró el directorio de origen SOURCE_DIR_NOT_FOUND La ruta de acceso de origen especificada es incorrecta, o la ruta es correcta, pero no todos los agentes tienen acceso a la ruta. Verifica la configuración del trabajo de transferencia y verifica lo siguiente:
No se pudo encontrar el directorio de destino o fuente del trabajo ROOT_DIR_NOT_FOUND La ruta de acceso de origen o destino especificada es incorrecta, o la ruta es correcta, pero no todos los agentes tienen acceso a ella. Verifica la configuración del trabajo de transferencia y verifica lo siguiente:
No se encontró el archivo FILE_NOT_FOUND_FAILURE Se encontró el archivo fuente, pero se borró antes de transferirlo a Cloud Storage. Si el archivo se borró por error, restablécelo para que el próximo trabajo de transferencia pueda subirlo.
No se encontró el bucket de destino BUCKET_NOT_FOUND El bucket de destino no existe en Cloud Storage. Verifica que la ortografía del bucket de destino sea correcta y que este exista.
No se pudo encontrar un objeto de metadatos interno METADATA_OBJECT_
NOT_FOUND_FAILURE
El Servicio de transferencia de almacenamiento almacena metadatos en el bucket de destino con el prefijo storage-transfer. Si se borran los archivos de metadatos antes de que se completen las operaciones de transferencia correspondientes, se muestra este error. Evita borrar objetos con el prefijo storage-transfer/ en el bucket de destino hasta que se completen todos los trabajos de transferencia.
Error por un nombre de archivo no válido INVALID_FILE_NAME La ruta de acceso de un archivo de origen no es válida. Verifica y repara la ruta del archivo especificado. Verifica que la ruta use caracteres compatibles con Cloud Storage.
Falló debido a una clase de almacenamiento no válida INVALID_FILE_STORAGE_CLASS La clase de almacenamiento de la fuente determinada no permite operaciones de lectura. Busca la documentación de tu proveedor de servicios en la nube para determinar cómo obtener los datos en una clase de almacenamiento que permita copiarlos.
Falló debido a que el URI de la sesión de carga reanudable no es válido SESSION_URI_INVALID El ID de carga reanudable o el URI de la sesión venció o se canceló. La falla se reintenta de forma incorrecta. Comunícate con el equipo de asistencia.
Se produjo un error debido a una extensión de archivo no válida INVALID_FILE_SIZE El tamaño del archivo no es válido. Verifica que el tamaño del archivo sea >= 0 y <= 5 TiB (tamaño máximo de objeto de Cloud Storage) para las transferencias a Cloud Storage.
No se pudo completar la operación debido a los permisos PERMISSION_FAILURE y UNAUTHENTICATED Un agente de transferencia no tenía los permisos suficientes para realizar una una sola operación. Hay dos causas posibles para este error:
  • Un agente no tenía los permisos suficientes de Google Cloud.
  • Un agente no pudo leer un archivo o un directorio debido a permisos insuficientes en el sistema de archivos de origen.

Verifica lo siguiente:

El objeto está sujeto a la política de retención del bucket y no se puede borrar, reemplazar ni archivar. PERMISSION_FAILURE El bucket tiene una política de retención vigente y el objeto ya existe en él. El Servicio de transferencia de almacenamiento no puede reemplazar los objetos existentes en el bucket. Este error se puede mostrar si el archivo cambió en el origen o si el Servicio de transferencia de almacenamiento intenta realizar la carga dos veces debido a las condiciones de la red y si la primera carga se realizó correctamente. Verifica que los datos en tu bucket de Cloud Storage coincidan con tus expectativas. Puedes confirmar que el tamaño y el tiempo modificado (mtime) de los archivos de origen coinciden con sus contrapartes de objetos de Cloud Storage. Para ello, vuelve a ejecutar el trabajo y confirma que no haya errores.
El servicio carecía de los permisos suficientes SERVICE_PERMISSION_FAILURE El Servicio de transferencia de almacenamiento no tenía los permisos suficientes para realizar una operación. El Servicio de transferencia de almacenamiento usa una cuenta de servicio administrada por Google, por lo general, en el formato project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com, para acceder a los recursos. Para determinar tu PROJECT_NUMBER específico, usa la llamada a la API googleserviceaccounts.get. Verifica que la cuenta de servicio tenga los siguientes roles:
  • roles/storagetransfer.serviceAgent para el proyecto
  • roles/storage.admin para todos los depósitos de destino
El agente no es compatible AGENT_UNSUPPORTED_VERSION La versión del agente ya no es compatible con el Servicio de transferencia de almacenamiento. Este es un error temporal, relacionado con una actualización incorrecta del agente. Si ocurre, haz lo siguiente:
  1. Detén todos los agentes.
  2. Extrae la última imagen de Docker mediante la ejecución de sudo docker pull gcr.io/cloud-ingest/tsop-agent.
  3. Envía el comando run de Docker para iniciar todos los contenedores de agentes.
Si el problema persiste, comunícate con tu equipo de asistencia.
Falló debido a una falla de coincidencia de hash HASH_MISMATCH_FAILURE Cada vez que el Servicio de transferencia de almacenamiento intentó subir este archivo, los bytes subidos se dañaron. Esto provocó que el hash del archivo local no coincidiera con el hash del objeto de Cloud Storage resultante. Este error puede deberse a una serie de problemas. Si ves un pequeño porcentaje de fallas de coincidencia de hash (menos del 1%) en una transferencia grande, vuelve a intentar los archivos fallidos. Si ves un gran porcentaje de fallas de coincidencia de hash (del 1% o más), recomendamos investigar posibles fallas de memoria, CPU u otras fallas de hardware en la máquina del agente.
Falló debido a un modo de archivo no compatible UNSUPPORTED_FILE_MODE El Servicio de transferencia de almacenamiento encontró un archivo con un modo no compatible, como un dispositivo, un socket, una canalización con nombre o un archivo irregular. Quita estos tipos de archivos especiales del directorio de origen.
Falló debido a un error en el sistema de archivos FILESYSTEM_ERROR Un agente encontró un error de sistema de archivos o de sistema operativo cuando realizó una operación del sistema de archivos, como lectura, búsqueda o estadística. Lee la descripción del error para comprender qué operación del sistema de archivos falló. Asegúrate de que el agente local pueda acceder al sistema de archivos y que el sistema de archivos responda a las operaciones de archivo básicas.
Falló debido a una falla desconocida UNKNOWN_FAILURE Se produjo un error inesperado. Lee la descripción de la falla. Si la descripción de la falla no contiene información suficiente para resolver el problema, comunícate con el equipo de asistencia.
Falló debido a que se recibió una especificación que no es válida INVALID_SPEC El agente recibió una especificación interna que está dañada. Verifica que no se hayan dañado los datos en los hosts de los agentes y comunícate con el equipo de asistencia si no encuentras daños.
Se produjo un error debido a un archivo de manifiesto vacío o no válido CONFORMANCE_FAILURE El agente no puede leer ni obtener bytes CSV válidos debido a un formato no válido o a entradas CSV. Asegúrate de que las entradas del manifiesto sean rutas de archivos válidas. Si la descripción de la falla no contiene información suficiente para resolver el problema, comunícate con el equipo de asistencia.
Recurrencia a cargas reanudables en lugar de cargas multiparte debido a un error de permiso denegado PERMISSION_FAILURE Se habilitaron las cargas divididas en varias partes para esta transferencia, pero no se establecieron los permisos correctos en el bucket. Consulta la sección Subidas de varias partes de Permisos del sistema de archivos para conocer los permisos necesarios.

Visualiza registros del agente

Los registros del agente contienen información relevante para los procesos del agente y pueden ayudarte a solucionar problemas de conexión del agente. Si tus agentes figuran como conectados en la consola de Google Cloud, y experimentas fallas de transferencia, consulta Visualiza errores para ver una muestra de errores de transferencia. Para ver los registros que contienen cada archivo que el Servicio de transferencia de almacenamiento consideró durante una transferencia, consulta Visualiza registros de transferencia.

De forma predeterminada, los registros del agente se almacenan en /tmp. Puedes cambiar la ubicación mediante la opción de línea de comandos de --log-dir=logs-directory.

Los registros se nombran de la siguiente manera:

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

En el ejemplo anterior, se ilustra lo siguiente:

  • hostname: El nombre de host en el que se ejecuta el agente.
  • username: El nombre de usuario que ejecuta el agente.
  • log-level es uno de los siguientes:
    • INFO: Mensajes informativos
    • ERROR: Errores detectados durante la transferencia, pero que no impiden que el trabajo de transferencia continúe
    • FATAL: Errores detectados que impiden que el trabajo de transferencia continúe
  • timestamp: Una marca de tiempo en formato YYYYMMDD-hhmmss.thread-id

El directorio de registros contiene symlinks a los registros más recientes para cada uno de los niveles de prioridad:

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

Velocidad de transferencia lenta

Si tus datos tardan mucho tiempo en transferirse, verifica lo siguiente:

  1. La capacidad de procesamiento de lectura del sistema de archivos debe ser aproximadamente 1.5 veces la velocidad de carga deseada. Puedes usar FIO para probar la capacidad de procesamiento de lectura de tu sistema de archivos.

    Instala fio:

     sudo apt install -y fio
     

    Crea un directorio fiotest nuevo:

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

    Prueba la capacidad de procesamiento de lectura:

     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
     

    Después de ejecutar los comandos anteriores, Fio genera un informe. La línea etiquetada como “bw” representa el ancho de banda agregado total de todos los subprocesos y se puede usar como proxy para la capacidad de procesamiento de lectura.

  2. Usa iPerf3 a fin de verificar el ancho de banda de Internet disponible para el Servicio de transferencia de almacenamiento.

  3. Asegúrate de que cada uno de tus agentes de transferencia tenga al menos 4 CPU virtuales y 8 GB de RAM.

Si verificaste las condiciones anteriores y aún tienes tiempos de transferencia largos, puedes agregar agentes adicionales para aumentar la cantidad de conexiones simultáneas al sistema de archivos de tus datos.

Para obtener más información sobre cómo maximizar el rendimiento de tus agentes de transferencia, consulta Prácticas recomendadas para agentes.

Soluciona problemas de errores de agentes

En las siguientes secciones, se describe cómo solucionar y resolver errores de agente de transferencia:

Los agentes no están conectados

Si los agentes de transferencia no se muestran como conectados en la consola de Google Cloud:

  1. Verifica que los agentes puedan conectarse a las APIs de Cloud Storage:

    1. Ejecuta el siguiente comando desde la misma máquina que se usó con el agente de transferencia para probar la conexión del agente a las API de Cloud Storage:

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

      Reemplaza lo siguiente:

      my-bucket por el nombre del bucket de Cloud Storage.

  2. Si tu proyecto usa los Controles del servicio de VPC, consulta los registros del agente para ver si hay errores. Si los Controles del servicio de VPC están mal configurados, los registros del agente INFO contendrán el siguiente error:

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

    En este resultado, se ilustra lo siguiente:

Los agentes están conectados, pero los trabajos fallan

Si los agentes se muestran como conectados, pero los trabajos de transferencia fallan, verifica los detalles de error de los trabajos fallidos.

El proxy rechaza las direcciones IP

Si ejecutas un proxy como Squid y usas una lista de entidades permitidas, es posible que veas que se rechazan las solicitudes porque se usan direcciones IP en lugar de nombres de host.

Para resolver este problema, usa el comando docker run para ejecutar los agentes y agrega la siguiente marca:

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

Si usas un extremo alternativo para llegar a googleapis.com (p. ej., para Private Service Connect), reemplaza googleapis.com por el extremo alternativo.