Desvendando os filesystems
Aqui vou tentar tirar a dúvida de muitos sobre qual filesystem utilizar, explicando passo a passo como um filesystem trata os arquivos e quais as principais características de cada um dos mais populares usados no Linux.
Parte 4: Fragmentação de arquivos e espaços
Os filesystems podem fragmentar arquivos ou espaços. A fragmentação é caracterizada por uma quebra na sequência dos dados ou do espaço livre.
Durante a gravação de um determinado arquivo em uma partição de HD, pendrive ou em um disquete, se houver a necessidade de quebrar esse arquivo em pedaços para preencher os blocos, e se esses pedaços não forem gravados em sequência, haverá uma fragmentação de arquivos.
Observem:
Os arquivos estão gravados em sequência.
Considere a hipótese de que o segundo arquivo que ocupa apenas um bloco, seja apagado neste momento:
Um novo arquivo ao chegar na partição do HD, necessitará de quatro blocos. Se o filesystem utilizado permitir a fragmentação de arquivos, parte do arquivo será colocado no primeiro bloco vazio e o restante nos próximos blocos que também estiverem vazios:
Note que devido a fragmentação de arquivos, os blocos que o armazenam não estão em sequência. Isso não é bom, pois aumentará o tempo de acesso ao arquivo, uma vez que o sistema terá que localizar todos os seus pedaços.
Isso também pode causar um desgaste do HD, uma vez que a cabeça de leitura e gravação terá de executar constantes saltos para ler ou gravar o arquivo.
Mas... se o filesystem utilizado não permitir a fragmentação de arquivos haverá a fragmentação de espaço.
Ele irá buscar um espaço contíguo grande o suficiente para colocar esse novo arquivo, evitando a quebra de sequência de dados. Veja:
A partir desta situação, se chegar um novo arquivo na partição que necessite de dois blocos para ser armazenado, ocorrerá, dependendo do filesystem, uma dessas opções:
Durante a gravação de um determinado arquivo em uma partição de HD, pendrive ou em um disquete, se houver a necessidade de quebrar esse arquivo em pedaços para preencher os blocos, e se esses pedaços não forem gravados em sequência, haverá uma fragmentação de arquivos.
Observem:
Os arquivos estão gravados em sequência.
Considere a hipótese de que o segundo arquivo que ocupa apenas um bloco, seja apagado neste momento:
Um novo arquivo ao chegar na partição do HD, necessitará de quatro blocos. Se o filesystem utilizado permitir a fragmentação de arquivos, parte do arquivo será colocado no primeiro bloco vazio e o restante nos próximos blocos que também estiverem vazios:
Note que devido a fragmentação de arquivos, os blocos que o armazenam não estão em sequência. Isso não é bom, pois aumentará o tempo de acesso ao arquivo, uma vez que o sistema terá que localizar todos os seus pedaços.
Isso também pode causar um desgaste do HD, uma vez que a cabeça de leitura e gravação terá de executar constantes saltos para ler ou gravar o arquivo.
Mas... se o filesystem utilizado não permitir a fragmentação de arquivos haverá a fragmentação de espaço.
Ele irá buscar um espaço contíguo grande o suficiente para colocar esse novo arquivo, evitando a quebra de sequência de dados. Veja:
A partir desta situação, se chegar um novo arquivo na partição que necessite de dois blocos para ser armazenado, ocorrerá, dependendo do filesystem, uma dessas opções:
- O sistema poderá dizer que não há espaço suficiente em disco;
- O sistema poderá, somente em casos como o que vimos a pouco, fragmentar o arquivo para armazená-lo (geralmente é isso que acontece com os filesystem do GNU/Linux);
- O sistema poderá guardar o arquivo temporariamente na memória virtual.
Hum, que eu saiba existem diversos programas que realizam este tipo de operação(dd, cmp, etc)...mesmo que enquanto que para os dispositivos de bloco tenhamos um tamanho mínimo de setor a ser acessado, uma vez que o arquivo esteja carregado na memória RAM, o computador não irá copiar bytes ou bits vazios de um setor para o outro disco rígido ou dispositivo de memória, logo a denominação cópia byte a byte ou mesmo bit a bit está correta sob minha perspectiva. Dependendo é claro do programa que estamos utilizando, pois existem programas de espelhamento do disco rígido, mas mesmo assim acredito que estes não copiem os bits ou bytes vazios, apenas o conteúdo dos setores individualmente.
Cordialmente,