recurso de arquivo grande na criação do sistema de arquivos

17

É útil usar o sinalizador -T largefile na criação de um sistema de arquivos para uma partição com arquivos grandes como vídeo e áudio no formato flac?

Testei a mesma partição com esse sinalizador e sem ele, e usando tune2fs -l [partition] , verifiquei "Recursos do sistema de arquivos" que ambos têm o "grande_arquivo" ativado. Portanto, não é necessário usar -T flag largefile ?

Marc
fonte
11
Note que eu estava confuso entre large_file (entrei no tune2fs) e largefile; parece que eles são argumentos para coisas diferentes.
Marc

Respostas:

24

O -T largefilesinalizador ajusta a quantidade de inodes que são alocados na criação do sistema de arquivos. Uma vez alocado, seu número não pode ser ajustado (pelo menos para ext2 / 3, não totalmente seguro sobre ext4). O padrão é um inode para cada 16K de espaço em disco. -T largefiletorna um inode para cada megabyte.

Cada arquivo requer um inode. Se você não tiver nenhum inode, não poderá criar novos arquivos. Mas esses inodes alocados estaticamente também ocupam espaço. Você pode economizar cerca de 1,5 gigabytes para cada 100 GB de disco , definindo -T largefile, em oposição ao padrão. -T largefile4(um inode por 4 MB) não tem um efeito tão dramático.

Se você tiver certeza de que o tamanho médio dos arquivos armazenados no dispositivo será superior a 1 megabyte, defina, por todos os meios -T largefile. Estou feliz em usá-lo em minhas partições de armazenamento e acho que não é uma configuração muito radical.

No entanto, se você descompactar um tarball de origem muito grande de muitos arquivos (pense centenas de milhares) para essa partição, terá a chance de ficar sem inodes para essa partição. Há pouco que você pode fazer nessa situação, além de escolher outra partição para desarmar.

Você pode verificar quantos inodes você tem disponível em um sistema de arquivos ao vivo com o dumpe2fscomando:

# dumpe2fs /dev/hda5
[...]
Inode count:              98784
Block count:              1574362
Reserved block count:     78718
Free blocks:              395001
Free inodes:              34750

Aqui, ainda posso criar 34 mil arquivos.

Aqui está o que eu consegui depois de fazer mkfs.ext3 -T largefile -m 0em uma partição de 100 GB:

Filesystem           1M-blocks      Used Available Use% Mounted on
/dev/loop1              102369       188    102181   1% /mnt/largefile
/dev/loop2              100794       188    100606   1% /mnt/normal

A versão de arquivo grande possui 102 400 inodes, enquanto a normal criou 6 553 600 inodes e economizou 1,5 GB no processo.

Se você tiver uma boa pista sobre o tamanho dos arquivos que você colocará no sistema de arquivos, poderá ajustar a quantidade de inodes diretamente com o -icomutador. Ele define a proporção de bytes por inode. Você obteria 75% da economia de espaço se usasse -i 65536enquanto ainda conseguia criar mais de um milhão de arquivos. Geralmente calculo para manter pelo menos 100 000 inodes de reposição.

hhaamu
fonte
boa resposta, mas onde você disse ", e salvou 1,5 GB no processo". você deveria estar dizendo "mas usou 1,5 GB de espaço para os inodes extras". Você faz parecer que o modo normal criou mais inodes e também deixou mais espaço livre no disco.
localhost
"Geralmente calculo para manter pelo menos 100 000 inodes de reserva". - porque? Certamente 0 sobressalente (e 0 mais necessário) é ideal? Você está realmente preocupado com a possibilidade de perder 100 mil em quantos arquivos ou diretórios você terá?
OJFord
3

Eu acho que você está misturando dois conceitos completamente diferentes e independentes.

O large_filerecurso que você pode ver na saída do dumpe2fs significa que esse sistema de arquivos pode conter arquivos maiores que 2 GiB, acho que é definido automaticamente pelos kernels modernos. Não tem nada a ver com a -Topção de mke2fs.

Hector
fonte