
Todos os sistemas de arquivos Linux têm tamanho de bloco de 4 KB. Digamos que eu tenha 10 MB de armazenamento em disco rígido. Isso significa que tenho 2.560 blocos disponíveis e digamos que copiei 2.560 arquivos, cada um com 1kb de tamanho. Cada bloco de 1 kb ocupará 1 bloco, embora não preencha o bloco inteiro.
Portanto, todo o meu disco está preenchido, mas ainda tenho 2560x3kb de espaço livre. Se eu quiser armazenar outro arquivo de, digamos, 1 MB, o sistema de arquivos permitirá que eu armazene? Ele escreverá no espaço livre deixado nos blocos individuais? Existe algum conceito que resolva esse problema?
Eu apreciaria alguns esclarecimentos. desde já, obrigado
Responder1
O tamanho de bloco padrão era de 512 bytes desde o primeiro Linux. Exceto até recentemente, tamanhos de bloco de 4k foram introduzidos para atender ao tamanho cada vez maior dos discos. Na verdade, isso é quase ditado pelo hardware do disco (veja mais:https://unix.stackexchange.com/questions/178899/optimizing-logical-sector-size-for-physical-sector-size-4096-hdd).
No entanto, para sua pergunta específica: você está certo ao dizer que todos os arquivos desperdiçam os bytes não utilizados do último bloco em muitos tipos de sistemas de arquivos, o que é particularmente um desperdício para arquivos pequenos. Mas btfrs e reiserfs parecem ser capazes de lidar com isso, de acordo comhttps://en.m.wikipedia.org/wiki/Block_suballocation
Responder2
Os sistemas de arquivos podem ter um tamanho de bloco de 512 a (geralmente) 65.536 bytes. O tamanho do bloco pode ser especificado como opção mkfs.xxx. O tamanho de bloco padrão na maioria dos sistemas de arquivos Linux é 4.096 bytes.
Alguns sistemas de arquivos suportam tail-packing e/ou alocação de subbloco. BTRFS, RaiserFS, ZFS, Raiser4 - faça; XFS, Ext2/3/4 - não.
Se você planeja preencher uma partição com vários arquivos pequenos, você pode reduzir o espaço "final" desperdiçado diminuindo o tamanho do bloco para 512 ou 1024, ou usar um FS que suporte empacotamento final ou recurso de alocação de subbloco.