Pela seguinte pergunta:
Existe alguma contagem de blocos reservados universalmente recomendada (para root) para unidades Ext4 grandes?
Quero dizer especificamente o seguinte:
Vamos considerar que (quase) todo mundo tem uma unidade raiz (partição) bastante grande hoje em dia.
Vamos considerar, por exemplo, uma unidade de 2 TB com uma partição raiz de 1,8 TiB, o que significa que toda a unidade é usada, exceto a primeira partição de inicialização.
Além disso, vamos supor que apenas eu tenha acesso a este computador e que tenha acesso direto ao HW e ao sistema operacional.
Como complemento configurei no GRUB:
GRUB_CMDLINE_LINUX_DEFAULT="rootflags=data=journal"
, a documentação específica que não consegui encontrar, fique à vontade para adicioná-la aqui .
Para colocar tudo isso em um exemplo prático, aqui está minha unidade NVMe em meu laptop:
# fdisk -l /dev/nvme0n1
Disk /dev/nvme0n1: 1.82 TiB, 2000398934016 bytes, 3907029168 sectors
Disk model: Samsung SSD 970 EVO Plus 2TB
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 989573D5-37E7-437A-B680-9410F7234A94
Device Start End Sectors Size Type
/dev/nvme0n1p1 2048 194559 192512 94M EFI System
/dev/nvme0n1p2 194560 3907028991 3906834432 1.8T Linux filesystem
A segunda partição /dev/nvme0n1p2
é do tipo de sistema de arquivos Ext4, e aqui está a lista completa de valores considerando-a:
# tune2fs -l /dev/nvme0n1p2
tune2fs 1.46.5 (30-Dec-2021)
Filesystem volume name: <none>
Last mounted on: /
Filesystem UUID: f1fc7345-be7a-4c6b-9559-fc6e2d445bfa
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 122093568
Block count: 488354304
Reserved block count: 20068825
Free blocks: 388970513
Free inodes: 121209636
First block: 0
Block size: 4096
Fragment size: 4096
Group descriptor size: 64
Reserved GDT blocks: 817
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 8192
Inode blocks per group: 512
Flex block group size: 16
Filesystem created: Sat Jun 16 11:26:24 2018
Last mount time: Thu Oct 26 09:14:38 2023
Last write time: Thu Oct 26 09:14:38 2023
Mount count: 102
Maximum mount count: -1
Last checked: Tue Sep 26 03:05:31 2023
Check interval: 0 (<none>)
Lifetime writes: 43 TB
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 256
Required extra isize: 32
Desired extra isize: 32
Journal inode: 8
First orphan inode: 134214
Default directory hash: half_md4
Directory Hash Seed: 48360d76-0cfb-4aed-892e-a8f3a30dd794
Journal backup: inode blocks
Checksum type: crc32c
Checksum: 0x58d12a63
Gostaria de avaliar se preciso de algum espaço raiz reservado e, em caso afirmativo, quanto. Gostaria que esta pergunta não fosse baseada em opiniões, portanto, se você decidir adicionar uma resposta, inclua algumas referências, obrigado.
Portanto, há poucos motivos pelos quais a contagem existe.
O motivo mais fácil é que você deseja que um serviço executado como root que salve logs e/ou dados nesse volume continue funcionando mesmo se um usuário inundar a unidade com dados. Isto obviamente só é relevante quando
O seu parece ser um sistema desktop, então, pelo menos, eu diria que 3. é questionável, se não exatamente o oposto do que você precisa.
Então, considero esse um argumento muito fraco, especialmente porque muitos serviços hoje em dia não rodam como root para começar.
Então, o outro argumento (aqui apresentado pelo desenvolvedor "principal" do ext4) é que não ter muito espaço livre torna mais difícil para o sistema de arquivos encontrar áreas contíguas de blocos para usar em arquivos novos ou em crescimento. Isso leva à chamada fragmentação, que era um problema de desempenho de hardware no armazenamento em disco rotativo (devido a grandes tempos de busca) e ainda é um problema de sobrecarga devido às maneiras muito mais complicadas e redirecionadas pelas quais os arquivos fragmentados são armazenados e lidos. O driver do sistema de arquivos precisa fazer com que um arquivo que está espalhado por todo o armazenamento pareça contíguo ao aplicativo e isso, no final, prejudica a capacidade de pré-busca e cache; ainda é uma preocupação menor em SSDs. Também aumenta o tamanho dos metadados. Não sou versado o suficiente nas estruturas internas do ext4 para dizer se essa maior necessidade de metadados reduz o espaço disponível ou significa apenas mais pesquisas ao acessar um arquivo fragmentado.
Então, isso realmente depende do seu caso de uso. Vendo que seu sistema de arquivos foi montado em
/
, provavelmente é o sistema de arquivos onde reside todo o software instalado – e grandes atualizações de software são exatamente esses períodos de exclusão em massa e criação de arquivos. Portanto, faz sentido reservar espaço suficiente para que, em média, quando os tamanhos dos arquivos criados e excluídos estejam equilibrados, você possa escolher entre partes contíguas suficientes do seu armazenamento.Então, quanto seria isso? Difícil dizer. Mas digamos que um grande processo de atualização com talvez 20 GB (10 GB de arquivos novos, 10 GB de arquivos antigos sendo excluídos posteriormente) de alterações pareceria realisticamente um limite superior sensato. Então, esse parece ser um bom valor para espaço reservado.
Seu sistema de arquivos tem 1,86 TB, o que significa que seu NVMe é provavelmente um dispositivo consumidor/prosumidor de 1,92 TB. Atualmente, custam entre 45 e 80 € por TB. Recomendo verificar mentalmente se até mesmo pensar em “otimizar” o espaço reservado vale a pena seu espaço mental, monetariamente. Claro, 78 GB é provavelmente muito mais do que você precisa, mas você se importa o suficiente para descobrir se menos é realmente suficiente se isso equivale a menos de 6,60 € em espaço de armazenamento?