inodes, consumiu a comparação de espaço para muitos arquivos pequenos (xfs, btrfs, ext4)

7

Eu tenho uma partição ext4 (LVM em uma VM) com uma grande quantidade de arquivos pequenos , que eu tenho que estender a cada 3-4 meses.

Em relação à quantidade de espaço usada pelos inodes.

Um dos sistemas de arquivos xfs, btrfs ou ext4 usa menos espaço?

Em outras palavras, mudar para btrfs ou xfs faz uma partição se encher de inodes mais devagar do que com ext4?

    
por abadys 07.08.2016 / 10:05

3 respostas

3

Para começar com sua primeira pergunta: sim, um desses sistemas de arquivos usa menos espaço. Mesmo sem maiores detalhes, é improvável que todos utilizem exatamente a mesma quantidade de espaço, uma vez que possuem diferentes implementações. Então, um é obrigado a usar menos espaço do que todos os outros.

O Btrfs tem alocação dinâmica de inode, então não há preenchimento como você tem com as tabelas de inode do ext4 (o tamanho para o qual é configurado no tempo de criação do sistema de arquivos ext4).

O XFS é dinâmico de maneira semelhante, mas tem um limite (porcentagem do sistema de arquivos que pode ser usado para inodes), portanto, se você preencher sua permissão de inode depende da porcentagem configurada, bem como da contagem de arquivos / tamanhos de arquivo

    
por 07.08.2016 / 12:17
3

Sim, e esteja ciente de que tudo depende das suas necessidades:

Btrfs (pronunciado como Butter FS, Better FS ou B-Tree FS)

Considerando que o btrfs será capaz para abrangendo mais os vários discos rígidos, é um muito bom Poit que ela pode suportar 16 vezes mais espaço em disco do que o ext4 . Um tamanho máximo de partição do sistema de arquivos btrfs é de 16 exbibytes, assim como o tamanho máximo do arquivo é de 16 exbibytes também.

Número máximo de arquivos: 2 ** 64

XFS

O XFS é um sistema de arquivos com registro de 64 bits de alto desempenho. O XFS suporta o tamanho máximo do sistema de arquivos de 8 exbibytes para o sistema de arquivos de 64 bits. Agora, o RHEL 7.0 usa o XFS como o sistema de arquivos padrão, incluindo suporte para usar o XFS para a partição /boot .

Número máximo de arquivos: 2 ** 64

EXT4

O ext4 é bem conhecido por trazer as melhorias de velocidade sobre o ext3. O ext4 tem alguns limites. O tamanho máximo do arquivo é de 16 bytes (aproximadamente 17,6 terabytes). O maior volume / partição que você pode ter com o ext4 é 1 exbibyte. Como nos sistemas de arquivos mais modernos, é um sistema de arquivos journaling que significa que ele irá manter um diário de onde os arquivos estão localizados principalmente no disco e de quaisquer outras alterações que acontecem no disco. Independentemente de todos os seus recursos, ele não suporta a compactação transparente, a criptografia transparente ou a deduplicação de dados. Os instantâneos são suportados tecnicamente, mas esse recurso é experimental na melhor das hipóteses.

Número máximo de arquivos: 4 bilhões

XFS vs Btrfs

O XFS não possui nenhum RAID, enquanto o BTRfs RAID ainda não está completamente estável e está em seus primórdios. XFS é mais e mais maduro do que Btrfs , mas não podemos negar que o Btrfs é poderoso e um bom crescimento e sistema de arquivos.

Por enquanto, o XFS é a minha escolha - especialmente porque é o padrão no RHEL 7 -, a menos que eu realmente precise do Btrfs.

    
por 07.08.2016 / 12:32
2

Suponho que o problema que você tem não é a partição se enchendo de inodes em si, mas ficando sem o número de inodes no sistema de arquivos. O ext4 reserva os inodes estaticamente quando o sistema de arquivos é criado, mas você pode definir o número com as opções mkfs.ext4 :

-i bytes-per-inode
Specify the bytes/inode ratio. mke2fs creates an inode for every bytes-per-inode bytes of space on the disk. The larger the bytes-per-inode ratio, the fewer inodes will be created.

-N number-of-inodes
Overrides the default calculation of the number of inodes that should be reserved for the filesystem (which is based on the number of blocks and the bytes-per-inode ratio). This allows the user to specify the number of desired inodes directly.

O manual indica explicitamente que os bytes por razão de inode não podem ser alterados após o FS ser criado, mas o número total será dimensionado para atender a proporção se o FS for redimensionado.

Você também pode definir o tamanho de cada inode. O padrão é 256 bytes na maioria dos sistemas de arquivos, mas pode ser reduzido para 128 (o padrão para sistemas de arquivos "pequenos"). O espaço extra é usado para armazenar atributos estendidos (por exemplo, rótulos SELinux), portanto, se você não precisar deles, deve ser seguro reduzir o tamanho ao mínimo.

-I inode-size
Specify the size of each inode in bytes. The inode-size value must be a power of 2 larger or equal to 128.

df -i deve mostrar o número de inodes alocados e usados. Com as opções padrão, uma partição de 30 GB que eu observei tinha um inode para cada 16 kB, mas se seus arquivos são muito pequenos, você poderia definir, digamos, -i 4096 para ter um inode para cada bloco de dados no sistema.

Se os seus arquivos forem menores que 4096, talvez você queira reduzir o tamanho do bloco do sistema de arquivos também, já que todos os arquivos comuns exigirão um bloco de dados completo de qualquer maneira. (Isto é, no ext4. Eu não sei se outros sistemas de arquivos atuais fazem pacotes de arquivos pequenos.)

-b block-size
Specify the size of blocks in bytes. Valid block-size values are 1024, 2048 and 4096 bytes per block. If omitted, block-size is heuristically determined by the filesystem size and the expected usage of the filesystem (see the -T option).

mkfs.ext4 também tem a opção -T <type> que pode ser usada como um atalho para alguns ou todos eles. As configurações estão em /etc/mke2fs.conf , o que no meu Debian faz, e. mkfs.ext4 -T small equivalente a

mkfs.ext4 -b 1024 -I 128 -i 4096

O que pode não ser um conjunto ruim de opções para muitos arquivos pequenos (e nenhum xattrs.)

Se seus arquivos forem menores que um kB, um sistema de arquivos pode não ser a melhor maneira de salvar os dados, mas algo como um banco de dados ou um sistema específico de aplicativo talvez deva ser considerado.

    
por 07.08.2016 / 13:28

Tags