Os sistemas de arquivos do Google Cloud Managed Lustre oferecem suporte a cotas de usuário, grupo e projeto, permitindo que os administradores gerenciem o consumo de armazenamento e garantam a alocação justa de recursos. Este documento explica como configurar, visualizar e gerenciar essas cotas.
O que são cotas de sistema de arquivos?
As cotas no Managed Lustre permitem definir limites para a quantidade de espaço em disco e o número de arquivos que usuários, grupos ou projetos podem consumir no sistema de arquivos.
As cotas são aplicadas a diferentes entidades:
- Cotas de usuário : limitam o armazenamento consumido por um usuário não raiz individual.
- Cotas de grupo : limitam o armazenamento consumido por todos os membros não raiz de um grupo específico.
- Cotas de projeto limitam o armazenamento consumido por arquivos e diretórios associados a um ID do projeto específico. Esse ID do projeto é um identificador do sistema de arquivos do Lustre, definido usando
lfs project, e não é o ID doGoogle Cloud projeto. Consulte Definir uma cota de projeto para mais informações.
As cotas são configuradas para dois tipos de recursos:
- Limites de blocos : um limite para a quantidade de espaço em disco que pode ser usada.
- Limites de inode : um limite para o número de arquivos e diretórios que podem ser criados.
Cada tipo de recurso pode ter dois níveis de limites:
Um limite flexível é um limite de cota que aciona um período de carência configurável quando excedido. Durante esse período, usuários, grupos ou projetos podem exceder temporariamente o limite flexível, até o limite absoluto, se houver um, tempo para reduzir o uso antes de serem bloqueados. Quando o período de carência expira, se o uso ainda estiver acima do limite flexível, ele será aplicado como um limite absoluto, bloqueando todas as novas gravações até que o espaço em disco ou a contagem de inode fique abaixo do limite flexível.
Por padrão, o período de carência é de uma semana.
Um limite absoluto define o máximo absoluto. Se esse limite for atingido, todas as operações de gravação adicionais falharão, retornando um erro "Cota de disco excedida".
Administrar usuários e grupos
O Lustre depende dos atributos POSIX do cliente para nomes e IDs de usuários e grupos.
Quando um cliente faz uma solicitação de sistema de arquivos, ele envia o UID e o GID locais para os servidores do Lustre. Os servidores usam esses atributos POSIX para aplicar permissões de arquivo padrão e acompanhar o uso da cota.
Para um comportamento consistente em um ambiente multiusuário, todos os clientes que ativam o sistema de arquivos do Lustre precisam ter mapeamentos de UID e GID sincronizados, normalmente gerenciados por um serviço centralizado, como LDAP ou NIS.
Os usuários raiz não estão sujeitos a cotas. Os comandos executados com sudo também ignoram as verificações de cota.
Antes de começar
Para gerenciar cotas do Lustre, você precisa de:
- Acesso do cliente a um sistema de arquivos ativo do Google Cloud Managed Lustre.
- Privilégios
sudoou raiz no sistema cliente para executar comandoslfs.
Definir cotas
Use o comando lfs setquota para configurar limites de blocos e inodes. É possível especificar apenas limites de blocos, apenas limites de inodes ou ambos. Da mesma forma, é possível especificar limites absolutos, limites flexíveis ou 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
Em que:
-uespecifica um usuário por nome de usuário ou UID. O Lustre resolve nomes de usuário usando os atributos POSIX do cliente.-gespecifica um grupo por nome de grupo ou GID. O Lustre resolve nomes de grupos usando os atributos POSIX do cliente.-pespecifica um projeto por nome ou ID do projeto. Se você especificar um nome de projeto, ele precisará ser mapeado para um ID do projeto usando um arquivo de mapeamento, como/etc/projidno cliente.U,GePdefinem a cota padrão para usuários, grupos ou projetos que não têm uma cota específica definida.- UGP_VALUE é o nome de usuário, nome do grupo, nome do projeto, UID, GID ou
ID do projeto. Os IDs precisam ser números inteiros entre
0e4294967295. Omita esse valor se estiver especificando cotas de usuário, grupo ou projeto padrão. -be-Bsão limites flexíveis e absolutos para uso de blocos, respectivamente. Os limites flexíveis precisam ser menores que os limites absolutos. Os valores podem ser especificados em bytes (B), kilobytes (K), megabytes (M), gigabytes (G) ou terabytes (T). A unidade padrão é kilobytes.-ie-Isão limites flexíveis e absolutos para uso de inode. Os limites flexíveis precisam ser menores que os limites absolutos.- MOUNT_DIR é o ponto de montagem do sistema de arquivos do Managed Lustre.
Observe que não é possível configurar o período de carência ao mesmo tempo em que cria uma cota. O período de carência padrão para limites flexíveis é de uma semana. Para atualizar o período de carência, consulte Configurar períodos de carência.
Exemplos
Definir uma cota de usuário
Defina um limite de bloco flexível de 100 GB, um limite de bloco absoluto de 120 GB, um limite de inode flexível de 10.000 e um limite de inode absoluto de 12.000 para user1 em /mnt/lustre:
sudo lfs setquota -u user1 -b 100G -B 120G -i 10000 -I 12000 /mnt/lustre
Definir uma cota de grupo
Defina um limite de bloco absoluto de 50 TB para groupA em /mnt/lustre:
sudo lfs setquota -g groupA -B 50T /mnt/lustre
Definir uma cota de projeto
As cotas de projeto exigem uma etapa adicional para associar diretórios e arquivos a um ID do projeto:
Use o comando
lfs projectpara atribuir um ID do projeto. Esse ID é um número inteiro arbitrário que identifica o projeto.sudo lfs project -spr LFS_PROJECT_ID PATH/TO/DIR/OR/FILEEm que:
-sdefine a herança, para que novos arquivos e diretórios criados no diretório especificado herdem o ID do projeto.-pinforma ao comando para definir o ID do projeto fornecido no arquivo ou diretório especificado.-raplica o ID do projeto de forma recursiva a todos os arquivos e diretórios filhos.- PATH/TO/DIR/OR/FILE é o caminho para um diretório ou arquivo em que o ID do projeto será definido. Só é possível especificar um caminho ou arquivo.
Para mais informações e flags, execute
man lfs projectno cliente.Por exemplo, para atribuir o projeto
101a/mnt/lustre/my-projecte todos os filhos novos e atuais:sudo lfs project -spr 101 /mnt/lustre/my-projectDefina a cota usando
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
Definir uma cota padrão
Defina um limite de bloco absoluto de 50 TB para todos os usuários sem uma configuração de cota específica:
sudo lfs setquota -U -B 50T /mnt/lustre
Modificar cotas
Para modificar uma cota, execute lfs setquota novamente com os novos valores. O comando substitui as configurações anteriores do usuário, grupo ou projeto especificado.
Configurar períodos de carência
Os períodos de carência definem por quanto tempo um usuário, grupo ou projeto pode exceder um limite flexível antes que ele atue como um limite absoluto. Por padrão, esse valor é de uma semana. Os períodos de carência são definidos para todos os usuários, grupos ou projetos. Eles não podem ser definidos em IDs específicos.
Para atualizar um período de carência, use o comando lfs setquota -t:
sudo lfs setquota -t -u | g | p \
-b BLOCK_GRACE_PERIOD -i INODE_GRACE_PERIOD \
MOUNT_DIR
Em que:
-uaplica o período de carência às cotas de usuário.-gaplica o período de carência às cotas de grupo.-paplica o período de carência às cotas de projeto.-be-iespecificam os períodos de carência de blocos e inodes, respectivamente. A unidade padrão é segundos. É possível usar outras unidades com o formato:XwXdXhXmXs(semanas, dias, horas, minutos, segundos). É possível definir limites para um ou ambos os tipos de cota.Especifique
'notify'em vez de um valor de tempo para marcar a saída delfs quotacom um asterisco quando o limite flexível for excedido. Novas gravações não são bloqueadas quando'notify'é especificado até que o limite absoluto seja atingido.
Por exemplo, para definir um período de carência de blocos de 7 dias para todas as cotas de usuário:
sudo lfs setquota -t -u -b 7d /mnt/lustre
Para definir um período de carência de inode de 24 horas para cotas de projeto:
sudo lfs setquota -t -p -i 24h /mnt/lustre
Para notificar quando um limite flexível de bloco for excedido:
sudo lfs setquota -t -u -b 'notify' /mnt/lustre
Conferir cotas
O comando lfs quota mostra o uso e os limites do usuário atual:
lfs quota MOUNT_DIR
Para uma lista completa de opções, execute man lfs quota no cliente.
Por exemplo, para conferir a cota de user1 em /mnt/lustre:
sudo lfs quota -u user1 /mnt/lustre
Para conferir a cota e o uso de outro usuário, execute o comando com sudo.
A saída mostra:
Filesystem: o ponto de montagem do Lustre.kbytes: uso atual do disco em kilobytes.bquota: limite de bloco flexível em kilobytes.blimit: limite de bloco absoluto em kilobytes.bgrace: período de carência restante se o limite flexível de bloco for excedido. Um asterisco (*) indica que o limite flexível foi excedido.files: número de inodes usados.iquota: limite de inode flexível.ilimit: limite de inode absoluto.igrace: período de carência restante se o limite flexível de inode for excedido. Um asterisco (*) indica que o limite flexível foi excedido.
Para conferir os períodos de carência configurados para todas as cotas de usuário:
lfs quota -t -u /mnt/lustre
Monitorar cotas no Cloud Monitoring
Além de usar o comando lfs quota em um cliente, é possível conferir o uso e os limites da cota do sistema de arquivos pelo Cloud Monitoring. Isso permite
monitorar o consumo de armazenamento por usuário, grupo ou projeto no
Google Cloud console.
As métricas de cota estão associadas ao recurso monitorado Entidade de cota do Lustre. Estas são algumas das métricas disponíveis:
- Bytes:bytes usados, limite flexível e limite absoluto.
- Inodes:inodes usados, limite flexível e limite absoluto.
Para visualizar essas métricas:
No Google Cloud console, acesse a página Monitoring > Metrics Explorer.
No campo Selecionar uma métrica, pesquise e selecione o recurso Entidade de cota do Lustre.
Selecione a métrica de cota específica que você quer conferir (por exemplo, Bytes usados da cota ou Inodes de limite absoluto da cota).
Opcionalmente, use as opções de Filtro para conferir entidades específicas filtrando pelo rótulo
accounting_type(por exemplo,user,group,project) ou pelo rótuloid(por exemplo, o UID, GID ou ID do projeto específico).
Remover cotas
Para remover uma cota, defina os limites flexíveis e absolutos como 0.
sudo lfs setquota -u | g | p | U | G | P UGP_VALUE -b 0 -B 0 -i 0 -I 0 MOUNT_DIR
Por exemplo, para remover as cotas de bloco e inode de user1:
sudo lfs setquota -u user1 -b 0 -B 0 -i 0 -I 0 /mnt/lustre
Para remover o limite de bloco do projeto padrão:
sudo lfs setquota -P -b 0 -B 0 /mnt/lustre
Problemas comuns
Ao trabalhar com cotas do Lustre, esteja ciente dos seguintes problemas comuns:
Cache concedido: o cache concedido é um recurso do Lustre que permite que os clientes recebam um bloco de armazenamento como uma "concessão" do destino de armazenamento de objetos (OST, na sigla em inglês) para gravar dados. Quando um cliente tem esse cache concedido, ele pode retornar imediatamente uma mensagem de sucesso ao usuário para uma operação de gravação, mesmo que os dados ainda estejam no cache local do cliente e antes que os dados sejam gravados fisicamente no disco. Essa é uma otimização de desempenho que minimiza a latência.
O cache concedido introduz o potencial de estouro de cota. Como o cache concedido permite que os clientes continuem gravando dados no cache, mesmo que a cota do lado do servidor tenha sido esgotada, é possível que um usuário exceda o limite absoluto.
Atribuição incorreta do ID do projeto: para que as cotas de projeto funcionem, os diretórios e arquivos precisam receber um ID de projeto correto usando
lfs project -spr. Omitir-rsignifica que o ID do projeto não é aplicado a arquivos e subdiretórios atuais. Omitir-ssignifica que novos arquivos e diretórios criados posteriormente não herdarão o ID do projeto.Várias cotas e "o mais restritivo vence": um usuário pode estar sujeito a uma cota de usuário, uma ou mais cotas de grupo e uma ou mais cotas de projeto simultaneamente. O Lustre aplica o mais restritivo desses limites. Isso significa que um usuário pode ter uma cota pessoal grande, mas ser restrito por uma cota de projeto menor para arquivos no diretório desse projeto.
Ignorar a cota do usuário raiz: as gravações de um usuário
rootignoram a aplicação da cota. Isso pode levar ao preenchimento do sistema de arquivos por tarefas administrativas, mesmo quando as cotas estão em vigor para outros usuários.fallocatenão respeita cotas: os usuários podem usarfallocatepara reservar espaço no sistema de arquivos que exceda o limite absoluto.