Limite de tamanho de diretório [fechado]

1

No Linux, é possível limitar o tamanho de uma partição, por exemplo, com cota. Mas existe uma maneira de limitar o tamanho do diretório? Por exemplo, eu tenho um diretório, digamos /mnt/foo/bar , que não é uma partição (por exemplo, não em df result). É possível? Não há mkfs possível neste diretório.

    
por Thomas L. 17.06.2014 / 12:12

2 respostas

7

Não diretamente, você pode criar um arquivo do tamanho para o qual deseja limitar o diretório e montá-lo usando uma montagem de loop na árvore.

  • Crie um arquivo para usar como sistema de arquivos, por exemplo
    • fallocate -l 100M disk.img (isso nem sempre é compatível com um FS subjacente).
    • dd if=/dev/zero of=disk.img count=512k
  • cria um sistema de arquivos na imagem do disco
    • mkfs disk.img
  • monte a imagem
    • mount -o loop disk.img /path/to/mount/point (opcionalmente, você também pode ativar cotas)
por 17.06.2014 / 12:48
2

O que você está pedindo seria um bom recurso, mas não conheço nenhum sistema de arquivos com esse recurso. A melhor aproximação sem adicionar mais sistemas de arquivos seria usar cotas, que limitam o espaço de armazenamento por usuário (ou grupo).

Um problema em fazer isso por diretório é que a semântica não será óbvia, uma vez que você considere a possibilidade de um arquivo estar com hardlink.

Considere a seguinte sequência de eventos:

  • O administrador configura um sistema com uma cota de 1 GB por diretório inicial
  • user1 executa um programa, que cria um arquivo de log em ~user1
  • Quando o arquivo de log é 1 MB grande, user2 cria um link físico em ~user2
  • user2 adiciona 900MB de outros arquivos a ~user2
  • user1 acrescenta 900MB de dados ao arquivo de log
  • user1 exclui o arquivo de log de ~user1

Não há nenhuma das operações acima, você esperaria falhar devido a limites de cota. No entanto, o resultado é que user2 está muito acima da cota no final.

    
por 17.06.2014 / 13:18

Tags