Aplicación de 32 bits detiene la lectura o la escritura en un sistema de archivos

Solucione fallos de lectura/escritura de aplicaciones de 32 bits en un sistema de archivos.

Síntoma: después de un período de funcionamiento correcto, una aplicación de 32 bits de repente deja de leer o escribir en un sistema de archivos. Las operaciones de lectura/escritura fallan con un error como, por ejemplo:

Applications fail to install on FSS mount point: "Value too large for defined data type" - OCI FSS/Mount Target Resources (Doc ID 2672465.1) 

Es posible que la aplicación tampoco se inicie y que se produzcan errores como el siguiente:

RCV: Value too large for defined data type

Causa: la aplicación de 32 bits no puede consumir identificadores de archivo más grandes. El servicio File Storage está diseñado para funcionar con aplicaciones de 64 bits, por lo que los identificadores de archivo generados por File Storage son demasiado grandes para que las aplicaciones heredadas los consuman. A continuación se proporciona más información sobre los valores máximos del identificador de archivo:

  • Si la aplicación utiliza un entero de 32 bits con signo para almacenar el identificador de archivo, el valor máximo que la aplicación puede manejar antes del desbordamiento es 2147483647 (2**(31-1)).
  • Si la aplicación utiliza un entero de 32 bits sin signo para almacenar el identificador de archivo, el valor máximo que la aplicación puede manejar antes del desbordamiento es 4294967295 (2**(32-1)).
  • Si la aplicación utiliza un entero de 64 bits con signo para almacenar el identificador de archivo, el valor máximo que la aplicación puede manejar antes del desbordamiento es 9223372036854775807 (2**(63-1))

Para comprobar el tamaño de los nuevos identificadores de archivo que se están generando, abra un terminal en una instancia conectada y ejecute el siguiente comando:

touch <File_Storage_mount_point>/test; ls -i <File_Storage_mount_point>/test 

Solución inmediata: defina el parámetro de núcleo enable_ino64=0.

La configuración nfs.enable_ino64=0 indica al cliente NFS que devuelva números de inode de 32 bits para las llamadas del sistema readdir() y stat() (en lugar de los números de inode de 64 bits completos).
Importante

Esta solución requiere un reinicio de la instancia.
  1. Abra una ventana de terminal en la instancia como usuario root y escriba el siguiente comando para verificar el valor actual nfs.enable_ino64=0.
    #  cat /sys/module/nfs/parameters/enable_ino64

    El sistema debe devolver Y, lo que indica que los inodes de 64 bits están activados.

  2. Ejecute el siguiente comando para definir nfs.enable_ino64=0.
    echo "options nfs enable_ino64=0"  > /etc/modprobe.d/nfs.conf
  3. Reinicie la instancia.
  4. Verifique que el valor está actualizado mediante el siguiente comando:

    #  cat /sys/module/nfs/parameters/enable_ino64

    El sistema debe devolver N, lo que indica que los inodes de 64 bits están desactivados y se devuelven a 32 bits.

  5. Verifique que el sistema de archivos esté montado en la instancia o monte el sistema de archivos. Consulte Montaje de sistemas de archivos.

Solución intermedia: cree un nuevo sistema de archivos para utilizarlo con la aplicación de 32 bits heredada. La eliminación de archivos del sistema de archivos original no restablece la generación de identificador de archivo a 0, por lo que debe crear un nuevo sistema de archivos para volver a empezar con identificadores de archivo pequeños. Recuerde que después de un cierto tiempo, los identificadores de archivo serán demasiado grandes para la aplicación de 32 bits.

Nota

Esta solución no se aplica en todos los casos, dependiendo de la naturaleza de la aplicación y los archivos que esta produce. Por ejemplo, si realiza un refrescamiento de datos que copie archivos de un sistema de archivos de producción a un sistema de archivos que no sea de producción, esta opción funcionaría. Sin embargo, para las aplicaciones con sistemas de archivos en crecimiento orgánico, es posible que esta opción no funcione.

Solución a largo plazo: actualice la aplicación a una versión de 64 bits.