Eu tenho uma partição ext4 (LVM em uma VM) com uma grande quantidade de arquivos pequenos , que tenho que estender a cada 3-4 meses.
Em relação à quantidade de espaço usado pelos inodes.
Um dos sistemas de arquivos xfs, btrfs ou ext4 usa menos espaço?
Em outras palavras, mudar para btrfs ou xfs fará com que uma partição seja preenchida com inodes mais lentos que com ext4?
mkfs.ext4 -t news
para obter melhores resultados. Além disso, eu sugiro que você teste - crie (no lvm, ou dispositivo de loopback, por exemplo) cada um dos itens de arquivo, por sua vez, e comece a copiar seus arquivos reais para ele até que eles sejam preenchidos. Quando for preenchido, façadf -i
(oufind | wc -l
) para descobrir qual deles conseguiu armazenar a maioria dos seus arquivos - dessa forma, você saberá com certeza.-T
com um T. maiúscula O arquivo de configuração tem algumas outras opções úteis para o futuro tambémmkfs.ext4 -T news
Respostas:
Para começar com sua primeira pergunta: sim, um desses sistemas de arquivos usa menos espaço. Mesmo sem mais detalhes, seria improvável que todos usassem exatamente a mesma quantidade de espaço, uma vez que possuem implementações diferentes. Portanto, um é obrigado a usar menos espaço do que todos os outros.
O Btrfs possui alocação dinâmica de inode, portanto, não há preenchimento como as tabelas de inode para ext4 (cujo tamanho é definido no momento da criação do sistema de arquivos ext4).
O XFS é dinâmico de maneira semelhante, mas possui um limite (porcentagem do sistema de arquivos que pode ser usado para inodes); portanto, se você preenche sua permissão de inode, depende da porcentagem definida e da contagem / tamanho dos arquivos
fonte
xfs_growfs -m XX
Sim, e esteja ciente de que tudo depende de suas necessidades:
Btrfs (pronunciado como Butter FS, Better FS ou B-Tree FS)
Considerando que o btrfs será capaz de se estender por vários discos rígidos, é uma boa idéia que ele possa suportar 16 vezes mais espaço em disco do que o ext4 . O tamanho máximo da partição do sistema de arquivos btrfs é de 16 exbibytes, e o tamanho máximo do arquivo também é de 16 exbibytes.
Número máximo de arquivos: 2 ** 64
XFS
O XFS é um sistema de arquivos de registro em diário de 64 bits e 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 o uso do XFS para a
/boot
partição.Número máximo de arquivos: 2 ** 64
EXT4
O ext4 é bem conhecido por trazer melhorias de velocidade sobre o ext3. O ext4 tem alguns limites. O tamanho máximo do arquivo é de 16 tebibytes (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 com registro em diário que significa que manterá um diário em que os arquivos estão localizados principalmente no disco e de quaisquer outras alterações que ocorram no disco. Independentemente de todos os seus recursos, ele não suporta compactação transparente, criptografia transparente ou desduplicaçã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á nos seus primeiros dias. O XFS é cada vez mais maduro que o Btrfs , mas não podemos negar que o Btrfs é poderoso e um bom sistema de arquivos em crescimento.
Por enquanto, o XFS é a minha escolha - especialmente porque é o FS padrão no RHEL 7 -, a menos que eu realmente precise de Btrfs.
fonte
Suponho que o problema que você tem não é a partição se enchendo de inodes por si só, mas ficando sem o número de inodes no sistema de arquivos. ext4 reserva os inodes estaticamente quando o sistema de arquivos é criado, mas você pode definir o número com as opções para
mkfs.ext4
:O manual declara explicitamente que a taxa de bytes por inode não pode ser alterada após a criação do FS, mas o número total será escalado para atender à taxa se o FS for redimensionado.
Você também pode definir o tamanho de cada inode. O padrão é 256 bytes em "mais" 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.
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 analisei tinha um inode para cada 16 kB, mas se os arquivos forem muito pequenos, você poderá definir, por exemplo,-i 4096
um inode para cada bloco de dados no sistema.Se seus arquivos forem menores que 4096, convém reduzir também o tamanho do bloco do sistema de arquivos, pois todos os arquivos regulares exigirão um bloco de dados completo de qualquer maneira. (Ou seja, no ext4. Não sei se outros sistemas de arquivos atuais compilam arquivos pequenos.)
mkfs.ext4
também tem a-T <type>
opção que pode ser usada como uma abreviação para alguns ou todos eles. As configurações estão dentro/etc/mke2fs.conf
, o que no meu Debian faz, por exemplo,mkfs.ext4 -T small
equivalente aO que pode não ser um conjunto ruim de opções para muitos arquivos pequenos (e não xattrs.)
Se seus arquivos forem ainda 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.
fonte