Cuotas del sistema de archivos

Los sistemas de archivos Lustre administrados de Google Cloud admiten cuotas de usuarios, grupos y proyectos, lo que permite a los administradores administrar el consumo de almacenamiento y garantizar una asignación justa de recursos. En este documento, se explica cómo configurar, ver y administrar estas cuotas.

¿Qué son las cuotas del sistema de archivos?

Las cuotas en Lustre administrado te permiten establecer límites en la cantidad de espacio en disco y la cantidad de archivos que los usuarios, los grupos o los proyectos pueden consumir dentro de tu sistema de archivos.

Las cuotas se aplican a diferentes entidades:

  • Las cuotas de usuarios limitan el almacenamiento que consume un usuario individual no raíz.
  • Las cuotas de grupo limitan el almacenamiento que consumen todos los miembros que no son raíz de un grupo específico.
  • Las cuotas de proyectos limitan el almacenamiento que consumen los archivos y directorios asociados a un ID del proyecto en particular. Este ID del proyecto es un identificador del sistema de archivos Lustre, que se define con lfs project y no es tu ID de proyecto deGoogle Cloud . Consulta Cómo establecer una cuota de proyecto para obtener más información.

Las cuotas se configuran para dos tipos de recursos:

  • Los límites de bloques son un límite en la cantidad de espacio en el disco que se puede usar.
  • Los límites de nodos I son un límite en la cantidad de archivos y directorios que se pueden crear.

Cada tipo de recurso puede tener dos niveles de límites:

  • Un límite flexible es un umbral de cuota que activa un período de gracia configurable cuando se supera. Durante este período de gracia, los usuarios, los grupos o los proyectos pueden exceder temporalmente el límite flexible, hasta el límite fijo si existe, lo que les da tiempo para reducir el uso antes de que se bloqueen. Una vez que vence el período de gracia, si el uso sigue por encima del límite flexible, este se aplicará como límite estricto, lo que bloqueará todas las escrituras nuevas hasta que el espacio en disco o el recuento de nodos i se encuentre por debajo del límite flexible.

    De forma predeterminada, el período de gracia es de una semana.

  • Un límite estricto define el máximo absoluto. Si se alcanza este límite, fallarán las operaciones de escritura posteriores y se mostrará un error de "Cuota de disco excedida".

Administración de usuarios y grupos

Lustre depende de los atributos POSIX del cliente para los nombres y los IDs de usuarios y grupos.

Cuando un cliente realiza una solicitud del sistema de archivos, envía el UID y el GID locales a los servidores de Lustre. Los servidores usan estos atributos POSIX para aplicar permisos de archivo estándar y hacer un seguimiento del uso de la cuota.

Para un comportamiento coherente en un entorno multiusuario, todos los clientes que monten el sistema de archivos Lustre deben tener asignaciones de UID y GID sincronizadas, que suelen administrarse a través de un servicio centralizado como LDAP o NIS.

Los usuarios raíz no están sujetos a cuotas. Los comandos que se ejecutan con sudo también omiten las verificaciones de cuota.

Antes de comenzar

Para administrar las cuotas de Lustre, necesitas lo siguiente:

  • Acceso del cliente a un sistema de archivos Lustre administrado de Google Cloud activo
  • Privilegios de sudo o de raíz en el sistema cliente para ejecutar comandos de lfs

Cómo establecer cuotas

Usa el comando lfs setquota para configurar los límites de bloques y de nodos i. Puedes especificar solo límites de bloques, solo límites de nodos i o ambos. Del mismo modo, puedes especificar límites estrictos, límites flexibles o ambos.

sudo lfs setquota -u | g | p | U | G | P UGP_VALUE \
      -b SOFT_BLOCK_LIMIT -B HARD_BLOCK_LIMIT \
      -i SOFT_INODE_LIMIT -I HARD_INODE_LIMIT \
      MOUNT_DIR

Aquí:

  • -u especifica un usuario por nombre de usuario o UID.
  • -g especifica un grupo por nombre o GID.
  • -p especifica un proyecto por ID del proyecto.
  • U, G y P establecen la cuota predeterminada para los usuarios, grupos o proyectos que no tienen una cuota específica establecida.
  • UGP_VALUE es el nombre de usuario, el nombre del grupo, el UID, el GID o el ID del proyecto. Omite este valor si especificas cuotas predeterminadas para el usuario, el grupo o el proyecto.
  • -b y -B son límites flexibles y rígidos para el uso de bloques. Los límites flexibles deben ser menores que los límites estrictos. Los valores se pueden especificar en bytes (B), kilobytes (K), megabytes (M), gigabytes (G) o terabytes (T). La unidad predeterminada es kilobytes.
  • -i y -I son límites flexibles y rígidos para el uso de nodos I. Los límites flexibles deben ser menores que los límites estrictos.
  • MOUNT_DIR es el punto de activación del sistema de archivos Lustre administrado.

Ten en cuenta que no puedes configurar el período de gracia al mismo tiempo que creas una cuota. El período de gracia predeterminado para los límites flexibles es de una semana. Para actualizar el período de gracia, consulta Configura períodos de gracia.

Ejemplos

Cómo establecer una cuota de usuario

Establece un límite flexible de bloqueo de 100 GB, un límite estricto de bloqueo de 120 GB, un límite flexible de nodos i de 10,000 y un límite estricto de nodos i de 12,000 para user1 en /mnt/lustre:

sudo lfs setquota -u user1 -b 100G -B 120G -i 10000 -I 12000 /mnt/lustre

Cómo establecer una cuota de grupo

Establece un límite de bloqueo estricto de 50 TB para groupA en /mnt/lustre:

sudo lfs setquota -g groupA -B 50T /mnt/lustre

Cómo establecer una cuota de proyecto

Las cuotas de proyectos requieren un paso adicional para asociar directorios y archivos con un ID del proyecto:

  1. Usa el comando lfs project para asignar un ID del proyecto. Este ID es un número entero arbitrario que identifica el proyecto.

    sudo lfs project -spr LFS_PROJECT_ID PATH/TO/DIR/OR/FILE
    

    Aquí:

    • -s establece la herencia, de modo que los archivos y directorios nuevos que se creen en el directorio especificado hereden el ID del proyecto.
    • -r aplica el ID del proyecto de forma recursiva a todos los directorios y archivos secundarios.
    • -p le indica al comando que establezca el ID del proyecto determinado en el archivo o directorio especificado.
    • PATH/TO/DIR/OR/FILE es la ruta de acceso a un directorio o archivo en el que se establecerá el ID del proyecto. Solo se puede especificar una ruta de acceso o un archivo.

    Para obtener indicadores e información adicionales, ejecuta man lfs project desde tu cliente.

    Por ejemplo, para asignar el proyecto 101 a /mnt/lustre/my-project y a todos los proyectos secundarios nuevos y existentes, haz lo siguiente:

    sudo lfs project -spr 101 /mnt/lustre/my-project
    
  2. Establece la cuota con lfs setquota:

    sudo lfs setquota -p LFS_PROJECT_ID \
      -b SOFT_BLOCK_LIMIT -B HARD_BLOCK_LIMIT \
      -i SOFT_INODE_LIMIT -I HARD_INODE_LIMIT \
      MOUNT_DIR
    

Cómo establecer una cuota predeterminada

Establece un límite de bloqueo fijo de 50 TB para todos los usuarios que no tengan un parámetro de configuración de cuota específico:

sudo lfs setquota -U -B 50T /mnt/lustre

Modificar cuotas

Para modificar una cuota existente, vuelve a ejecutar lfs setquota con los valores nuevos. El comando reemplaza la configuración anterior del usuario, el grupo o el proyecto especificados.

Cómo configurar períodos de gracia

Los períodos de gracia definen cuánto tiempo un usuario, un grupo o un proyecto pueden exceder un límite flexible antes de que este actúe como un límite estricto. De forma predeterminada, este valor es de una semana. Los períodos de gracia se establecen para todos los usuarios, grupos o proyectos, y no se pueden establecer para IDs específicos.

Para actualizar un período de gracia, usa el comando lfs setquota -t:

sudo lfs setquota -t -u | g | p \
  -b BLOCK_GRACE_PERIOD -i INODE_GRACE_PERIOD \
  MOUNT_DIR

Aquí:

  • -u aplica el período de gracia a las cuotas de usuarios.
  • -g aplica el período de gracia a las cuotas de grupo.
  • -p aplica el período de gracia a las cuotas del proyecto.
  • -b y -i especifican los períodos de gracia del bloque y del inode, respectivamente. La unidad predeterminada son los segundos. Puedes usar otras unidades con el formato: XwXdXhXmXs (semanas, días, horas, minutos, segundos). Puedes establecer límites para uno o ambos tipos de cuota.

    Especifica 'notify' en lugar de un valor de tiempo para marcar el resultado de lfs quota con un asterisco cuando se haya superado el límite flexible. Las escrituras nuevas no se bloquean cuando se especifica 'notify' hasta que se alcanza el límite fijo.

Por ejemplo, para establecer un período de gracia de bloqueo de 7 días para todas las cuotas de usuarios, haz lo siguiente:

sudo lfs setquota -t -u -b 7d /mnt/lustre

Para establecer un período de gracia de 24 horas para los nodos i de las cuotas del proyecto, haz lo siguiente:

sudo lfs setquota -t -p -i 24h /mnt/lustre

Para recibir una notificación cuando se supere un límite de bloqueo de notificación, sigue estos pasos:

sudo lfs setquota -t -u -b 'notify' /mnt/lustre

Cómo ver las cuotas existentes

El comando lfs quota muestra el uso y los límites del usuario actual:

lfs quota MOUNT_DIR

Para obtener una lista completa de las opciones, ejecuta man lfs quota desde tu cliente.

Por ejemplo, para ver la cuota de user1 en /mnt/lustre, haz lo siguiente:

sudo lfs quota -u user1 /mnt/lustre

Ten en cuenta que, para ver la cuota y el uso de otro usuario, debes ejecutar el comando con sudo.

El resultado muestra lo siguiente:

  • Filesystem: Es el punto de activación de Lustre.
  • kbytes: Es el uso actual del disco en kilobytes.
  • bquota: Límite de bloqueo temporal en kilobytes.
  • blimit: Límite de bloqueo fijo en kilobytes.
  • bgrace: Es el período de gracia restante si se supera el límite flexible de bloqueo. Un asterisco (*) indica que se superó el límite flexible.
  • files: Es la cantidad de nodos i que se usaron.
  • iquota: Límite flexible de nodos I.
  • ilimit: Límite de inode estricto.
  • igrace: Período de gracia restante si se supera el límite flexible de nodos i. Un asterisco (*) indica que se superó el límite flexible.

Para ver los períodos de gracia configurados para todas las cuotas de usuario, haz lo siguiente:

lfs quota -t -u /mnt/lustre

Cómo quitar cuotas

Para quitar una cuota, establece sus límites flexibles y rígidos en 0.

sudo lfs setquota -u | g | p | U | G | P UGP_VALUE -b 0 -B 0 -i 0 -I 0 MOUNT_DIR

Por ejemplo, para quitar las cuotas de bloque y de inode de user1, haz lo siguiente:

sudo lfs setquota -u user1 -b 0 -B 0 -i 0 -I 0 /mnt/lustre

Para quitar el límite de bloqueo del proyecto predeterminado, haz lo siguiente:

sudo lfs setquota -P -b 0 -B 0 /mnt/lustre

Problemas comunes

Cuando trabajes con cuotas de Lustre, ten en cuenta los siguientes problemas habituales:

  • Caché otorgada: La caché otorgada es una función de Lustre que permite a los clientes recibir un bloque de almacenamiento como una "concesión" del destino de almacenamiento de objetos (OST) para escribir datos. Cuando un cliente tiene esta caché otorgada, puede devolver de inmediato un mensaje de éxito al usuario para una operación de escritura, incluso mientras los datos aún están en la caché local del cliente y antes de que los datos se escriban físicamente en el disco. Esta es una optimización del rendimiento que minimiza la latencia.

    La caché otorgada introduce la posibilidad de exceder la cuota. Dado que la caché otorgada permite que los clientes sigan escribiendo datos en su caché incluso si, mientras tanto, se agotó su cuota del servidor, es posible que un usuario supere su límite fijo.

  • Asignación incorrecta del ID del proyecto: Para que las cuotas del proyecto funcionen, se debe asignar correctamente un ID del proyecto a los directorios y archivos con lfs project -spr. Si se omite -r, el ID del proyecto no se aplica a los archivos y subdirectorios existentes. Si se omite -s, los archivos y directorios nuevos que se creen más adelante no heredarán el ID del proyecto.

  • Varias cuotas y "gana la más restrictiva": Un usuario puede estar sujeto a una cuota de usuario, una o más cuotas de grupo y una o más cuotas de proyecto de forma simultánea. Lustre aplica el más restrictivo de estos límites. Esto significa que un usuario podría tener una cuota personal grande, pero estar restringido por una cuota de proyecto más pequeña para los archivos dentro del directorio de ese proyecto.

  • Omisión de la cuota de usuario raíz: Las escrituras de un usuario root omiten la aplicación de la cuota. Esto puede hacer que el sistema de archivos se llene con tareas administrativas, incluso cuando se aplican cuotas para otros usuarios.

  • fallocate no respeta las cuotas: Los usuarios pueden usar fallocate para reservar espacio en el sistema de archivos que supere el límite fijo.