Introdução
Para termos uma boa instalação do nosso GNU/Linux temos que entender os filesystems e responder a uma pergunta:
Qual filesystem utilizar?
Para podermos responder a essa pergunta devemos ter em mente qual será o uso final de nossa máquina e saber a diferença entre os filesystems.
Vou abordar aqui passo a passo como um filesystem trata os arquivos e como ele os aloca nos blocos.
OBS: Não abordarei nesse artigo sobre filesystems do MS Windows.
Nesse artigo vou abordar alguns temas:
Parte I:
O que são filesystems; Blocos; Fragmentação de arquivos e espaço; Filesystems “Jornal” ou “Jornaling”;Parte II:
Filesystems mais comuns; Diferenças entre Ext3 e ReiserFS.Espero que me aturem e que consigam perceber qual filesystem se adapta melhor ao seu caso…
Resolvi dividir esse artigo em duas parte por um simples motivo, antes de conhecer os filesystems temos que entender como eles funcionam…
Bom, não vou falar muito senão perde a graça… espero que gostem ^^
Té mais…
O que são filesystems
Filesystem ou sistema de arquivos, refere-se à forma como os dados são armazenados, organizados e acessados no disco pelo sistema operacional. É um artifício imposto pelo sistema operacional e não pelo hardware da máquina.
O processo conhecido como “formatação lógica de disco” estabelece um filesystem em uma partição de HD, em pendrives, disquetes e etc.
Existem vários tipos de filesystems, sendo que para o GNU/Linux os mais conhecidos são:
Os baseados em disco, como Ext2, Ext3a ,ReiserFS, XFS, JFS e iso 9660; Os baseados em rede, como NFS, AFS, Cada e SMbfs; Os especias, como os diretórios /proc, ramfs e devfs.Vou tratar especificamente de filesystem de discos…
Blocos
Quando formatamos um disco, na verdade estamos estabelecendo um filesystem. Nas áreas de dados, blocos são gerados para receber tais dados.
Vou dar em exemplo de um processo que ocorre em uma partição de um HD. Imediatamente depois da formatação de uma partição de HD (criação do filesystem) teremos diversos blocos vazios.
Bom, para melhor entendimento dessa estrutura fiz uma representação para o melhor entendimento de todos, espero que gostem, é simples mas bem objetiva:
Chegam dados para serem armazenados na partição, é um arquivo.
Vamos considerar que o conteúdo desse arquivo seja armazenado no primeiro bloco vazio. No entanto o tamanho do arquivo é maior que o tamanho de um bloco, então serão necessários vários blocos:
Note que o terceiro bloco não foi totalmente preenchido, no entanto concordam que este bloco não poderá receber um arquivo diferente, pois se isso ocorrer teremos uma mistura de arquivos, o que não é muito bom.
É assim que a maioria dos filesystems tratam os arquivos, há uma tendência a não misturar arquivos.
Um novo arquivo chega ao HD, novamente o primeiro bloco disponível irá receber o arquivo, desta vez por ser um arquivo pequeno será necessário apenas um bloco:
Novamente um outro arquivo chega para ser armazenado no HD.
O modo de funcionamento do filesystem preconiza que sempre o primeiro bloco vazio receberá o arquivo. Esse arquivo irá requerer cinco blocos:
Cinco blocos ficaram vazios e dois ficaram pela metade.
Como arquivos diferentes não se misturam em um mesmo bloco, não se pode considerar que há cinco blocos e meio disponíveis. Somente os blocos totalmente vazios poderão receber novos arquivos. Assim teremos cinco blocos disponíveis.
Agora uma consideração importante: a menor quantidade de informações que o sistema operacional consegue acessar em um HD é um bloco. Assim, estão equivocados as pessoas que dizem que existem programas que copiam dados de um HD para outro, por exemplo, byte a byte ou bit a bit.
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:
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.Uma grande preocupação que os iniciantes tem é em como desfragmentar o filesystem. Ao contrário do MS Windows, os filesystems utilizados no GNU/Linux fragmentam, sempre que possível, o espaço, e não os arquivos.
Filesystems “Jornal” ou “Jornaling”
Hoje ouvimos falar muito em filesystem jornal ou jornaling. Mas o que é isso?
Bom, referem-se aos filesystems que utilizam técnicas especiais de recuperação de dados em caso de falhas de energia e outros desastres correlatados.
A expressão jornal está diretamente ligada à idéia de log, registros de ocorrência.
Os filesystem jornalados mais utilizados hoje no GNU/Linux:
Ext3, criado por Sthepen Tweedie; ReiserFS, criado por Hans Reiser; XFS, criado pela SGI; JFS, criado pela IBM.A técnica de journaling consiste em fazer atualizações dos metadados (informações referente a um arquivo) e registrá-las em um log serial no disco, antes que os blocos de dados no disco sofram alterações no caso de queda de energia.
O sistema conseguirá restabelecer os metadados (e os dados dependendo do tipo de journal) em uma ação extremamente rápida e segura.
É interessante dizer que cada filesystem utiliza a técnica de journal de modo diferente. Em resumo o journal é um log de atividades de disco.
Fileseystems mais comuns / diferença entre Ext3 e o ReiserFS
Os filesystems mais comuns para GNU/Linux são:
Ext2, Ext3, ReiserFS, JFS, XFS.Vou falar primeiro sobre o Ext2, JFS, XFS e darei ênfase para Ext3 e o ReiserFS, que são os filesystems mais utilizados atualmente.
Ext2: Foi desenvolvido por Rémy Card, atualmente não há mais vantagens em usá-lo. Não é jornalado.
XFS e JFS: O XFS e o JFS são filesystems desenvolvidos a partir de produtos proprietários. Não são tão difundidos no mundo GNU/Linux quanto o Ext3 e o ReiserFS. O GRUB por exemplo não funcionará caso esteja em uma partição do tipo XFS.
Diferenças entre Ext3 e o ReiserFS Na atualidade são os dois filesystems mais utilizados sem dúvida. A primeira grande diferença entre eles é a velocidade. O ReiserFS é mais rápido na maioria das operações.
O Ext3 utiliza blocos de 1024, 2048 ou 4096 bytes cada, dependendo de como foi a criação do filesystem.
Já o ReiserFS utiliza blocos de 512 a 8192 bytes, sendo que o default e 4096. Ele também possui um recurso chamado tail packing, esse recurso atua dentro da árvore de controle os arquivos menores do que o tamanho de um bloco e os bytes finais de arquivos que não conseguiram preencher o último bloco por completo. Isso gera ganho de espaço em disco. Mas como nada é perfeito, com isso teremos perda de performance e fragmentação de arquivos.
OBS: A opção notail dentro do arquivo /etc/fstab impede que o ReiserFS utilize o tail packing. ^^
Bom, o ReiserFS é melhor com arquivos menores e o Ext3 com arquivos maiores.
Valeu galera, té mais…