6 pontos por GN⁺ 2024-01-09 | 1 comentários | Compartilhar no WhatsApp

Como é o sistema de arquivos ext4?

  • Ao executar o comando mkfs.ext4 em uma unidade vazia, o sistema de arquivos ext4 é criado na unidade.
  • Nesse processo, o que antes era um “nada” composto por 0x00 se transforma em um arranjo intencional de bytes do sistema de arquivos ext4.
  • O trabalho é simplificado ao adicionar uma pequena unidade secundária a uma máquina virtual ou ao usar um arquivo comum configurado como dispositivo de loop.

Experimento usando um dispositivo de loop

  • O uso de dispositivo de loop ficou mais simples: é possível montar e desmontar apenas com mount -o loop <foo_file> <bar_dir> e umount <bar_dir>, sem precisar de losetup.
  • Com o comando dd, é criado um arquivo com 8 blocos de 64x1024 bytes, lendo dados de /dev/zero.

Mudanças após criar o sistema de arquivos ext4

  • Depois de executar mkfs.ext4, é possível verificar a estrutura do arquivo de blocos pela saída do comando od.
  • Nessa saída, dá para observar características estruturais do sistema de arquivos ext4.

Entendendo a estrutura do ext4 por meio de visualização

  • Foi criada uma imagem de visualização em que cada bloco tem 1024x64 pixels, e cada pixel representa um byte.
  • Na imagem após a criação do sistema de arquivos ext4, é possível ver a estrutura e a posição dos dados adicionados por mkfs.ext4.
  • Para diferenciar os dados do ext4 dos dados “do usuário”, um arquivo de 1024 bytes gerado a partir de /dev/urandom é copiado para o dispositivo de loop, e o código de visualização distingue esses dados com cores diferentes.

Visualização após adicionar dados do usuário

  • Na imagem depois que os dados do usuário são copiados para a unidade, é possível distinguir entre os dados do ext4 e os dados do usuário.
  • Além disso, foi gerado um GIF animado copiando o arquivo de dados do usuário três vezes para a unidade.

Comparação entre ext4 e ext2

  • Além da animação do sistema de arquivos ext4, também foi criada uma animação do sistema de arquivos ext2 para comparação.

Opinião do GN⁺

  • Este artigo ajuda a entender visualmente como o sistema de arquivos ext4 é realmente organizado em uma unidade.
  • O método de visualização que distingue dados do usuário e dados do sistema é muito útil para aprender como um sistema de arquivos funciona.
  • A comparação entre ext4 e ext2 oferece uma oportunidade de entender intuitivamente as diferenças entre sistemas de arquivos.

1 comentários

 
GN⁺ 2024-01-09
Comentários do Hacker News
  • Há alguns anos, no FOSDEM, foi feita uma visualização gráfica de verdade do sistema de arquivos ext4. Há um vídeo em que a visualização começa por volta dos 20 minutos. Pode ser confuso porque o projetor não conseguiu reproduzir corretamente o azul-claro usado, mas há um vídeo renderizado corretamente no blog.

  • O objetivo de muitas pessoas que tentam simplificar o uso de computadores acaba produzindo coisas que podem ter valor educacional. Por exemplo, uma luz vermelha indicando atividade do disco rígido desperta a curiosidade do usuário e transmite informação. Esconder a visualização avançada, mas mantê-la disponível para os curiosos, pode ser um bom meio-termo.

  • Um utilitário de linha de comando chamado pixd oferece uma visualização de dados parecida, mas não é tão legal quanto um GIF animado mostrando as mudanças no sistema de arquivos ao longo do tempo. Usar uma curva de Hilbert para organizar os pixels pode ser mais útil do que desenhá-los linha por linha.

  • Achei interessante a demonstração do nbdkit visualizando IO do sistema de arquivos.

  • Fiz uma experiência visualizando o sistema de arquivos. O resultado, a.png, pode ser convertido de volta, permitindo recuperar novamente um arquivo .ext4 válido.

  • A visualização de dados pode ajudar a entender a complexidade de como os formatos de disco realmente organizam os dados no disco. Por exemplo, há metadados pré-alocados mesmo para um uso mínimo. Fico curioso sobre o que aconteceria quando começasse a faltar espaço, mas a animação para antes disso.

  • Se o autor vir este comentário, pode converter o GIF em vídeo para economizar bytes transmitidos e oferecer ao usuário controles de vídeo, como pausar, navegar pela linha do tempo e ajustar a velocidade.

    • Exemplo de comando: ffmpeg -i ext4.gif -pix_fmt yuv420p -c:v libx264 ext4.mp4
  • Um conjunto de ferramentas chamado innodb_ruby é muito útil para visualizar e aprender a estrutura do InnoDB.

  • Com o Kaitai IDE, é possível visualizar vários formatos binários byte por byte (ou bit por bit). Lembro que existe um arquivo de definição para ext4.

  • Ao olhar este diagrama, fiquei pensando se existe algum sistema de arquivos que permita armazenar metadados em um dispositivo separado. Por exemplo, dados no HDD e metadados em um SSD associado. Talvez os benefícios não superem o aumento de complexidade, já que é fácil armazenar metadados em cache na memória.