Se eu li a documentação do Ext4 corretamente, a partir do Linux 3.8, seria possível armazenar dados diretamente no inode no vaso de um arquivo muito pequeno.
Eu esperava que esse arquivo tivesse um tamanho de 0 blocos, mas não é o caso.
#creating a small file
printf "abcde" > small_file
#checking size of file in bytes
stat --printf='%s\n' small_file
5
#number of blocks used by files
stat --printf='%b\n' small_file
8
Eu esperaria que este último número aqui seja 0. Estou faltando alguma coisa?
Respostas:
Para ativar os dados embutidos
ext4
, você precisaráe2fsprogs
1,43 ou mais tarde. Suporte para dados em linha foi adicionado março 2014 para ogit
repositório , mas só foi lançado em maio de 2016.Depois disso, você pode executar
mke2fs -O inline_data
em um dispositivo apropriado para criar um novo sistema de arquivos com suporte a dados em linha; isso apagará todos os seus dados . Aparentemente, ainda não é possível ativar dados embutidos em um sistema de arquivos existente (pelo menos,tune2fs
não o suporta).Agora crie um arquivo pequeno e execute
debugfs
no sistema de arquivos.cd
para o diretório apropriado e executestat smallfile
; você terá algo comoComo você pode ver, os dados foram armazenados em linha. Isso também pode ser visto usando
df
; antes de criar o arquivo:Depois de criar o arquivo:
O arquivo está lá, ele usa um inode, mas o espaço de armazenamento disponível não mudou.
fonte
Se sua
e2fsprogs
versão é muito antiga ou o sistema de arquivos já foi criado, você pode definir o sinalizador de recurso usandodebugfs
(o sinalizador é suportado desde 2012, enquantomke2fs
as outras ferramentas adicionaram suporte no 2014+ e muitas distribuições ainda não os enviam em 2016 , incluindo o Ubuntu Xenial).Para fazer isso, abra a partição no modo de leitura e gravação:
E adicione a bandeira:
(ou
feature -inline_data
para desativá-lo, mas isso provavelmente é uma péssima idéia, se já houver arquivos embutidos!)Observe, no entanto, que se o seu sistema
e2fsprogs
for antigo, você estará se esquivando, pois os utilitários (inclusive odebugfs
próprio) se recusarão a tocar nesse sistema de arquivos após definir a sinalização.Observe também que o current
GRUB
(2.02) não suporta isso, portanto, defini-lo na partição de inicialização tornará o sistema não inicializável. Há um patch não imerso para adicionar suporte.Até o momento da redação deste documento, arquivos e diretórios de até
inode_size-128
podem ser incorporados, portanto, 128 bytes para os inodes padrão de 256 bytes. Você pode usar inodes maiores se desejar mais inlining.fonte