Por que restringir o número de inodes que um usuário pode acessar?

6

Parece que é possível, em uma montagem de rede, definir uma cota de quanto espaço um usuário pode consumir.

# edquota ramesh

Disk quotas for user ramesh (uid 500):
  Filesystem           blocks       soft       hard     inodes     soft     hard
  /dev/sda3           1419352          0          0       1686        0        0

Você também pode definir um limite flexível e um limite rígido de quantos inodes um usuário possui.

Por que você precisaria limitar quantos inodes um usuário tem acesso?

O usuário ainda não conseguirá preencher o disco com um arquivo realmente grande?

    
por spuder 05.02.2014 / 06:35

2 respostas

9

O motivo pelo qual você limita o número de inodes que um usuário pode acessar é para que eles não tornem o sistema como um todo sem inodes criando um grande número de arquivos de 0 byte.

Com a maioria dos sistemas de arquivos Linux (por exemplo, ext3 e ext4), cada arquivo (incluindo arquivos de dispositivos) ou diretório tem um inode - um número usado para apontar para um determinado arquivo / diretório. Se um sistema ficar sem inodes, não importa quanto espaço livre o disco rígido tenha; é impossível fazer um novo arquivo até que os inodes sejam liberados.

Para ver quantos inodes cada sistema de arquivos deixou:

df -i

O número de inodes que um sistema de arquivos possui é determinado pelo argumento -i ao formatar o sistema de arquivos. Exemplos:

mkfs -t ext4 -i 1024 /dev/foo # One inode per 1024 bytes
mkfs -t ext4 -i 2048 /dev/foo # One inode per 2048 bytes
mkfs -t ext4 -i 8192 /dev/foo # One inode per 8192 bytes

O sistema de arquivos criado com a opção -i 1024 terá oito vezes mais inodes que o sistema de arquivos criado com a opção -i 8192 (assumindo que ambos os sistemas de arquivos tenham o mesmo tamanho). Às vezes, especialmente com alguns servidores de email (que usam "maildir") ou spools Usenet old-school, é necessário mais inodes, já que esses casos de uso criam muitos arquivos pequenos.

Note que alguns sistemas de arquivos Linux, como o Reiserfs, são capazes de atribuir dinamicamente inodes e não criam todos eles no momento da criação do sistema de arquivos.

    
por 05.02.2014 / 06:54
4

Claro, o usuário pode preencher o disco com um arquivo realmente grande, mas esse é apenas um vetor para saturar o sistema de arquivos. O outro vetor é mais sutil - você pode saturar o número de inodes disponíveis. Nessa situação, df -h ainda parecerá bem, mas df -i informará que você está sem inodes (e provavelmente você começará a ler muito "não há espaço sobrando no dispositivo").

$ df -i /
Filesystem      Inodes  IUsed   IFree IUse% Mounted on
/dev/sda2      7266304 490108 6776196    7% /

No ponto em que você atinge o número máximo de inodes usados, não é possível criar mais inodes. De muitas maneiras, isso tem sintomas semelhantes ao preencher o sistema de arquivos com um arquivo enorme, exceto pelo fato de que os inodes existentes continuarão funcionando normalmente.

Restrições sobre o tamanho do arquivo e o número de inodes disponíveis devem ser usados em conjunto.

    
por 05.02.2014 / 06:50

Tags