Esquemas de particionamento e sistemas de arquivos
Este artigo traz uma abordagem teórica sobre esquemas de particionamento de disco e sistemas de arquivos no GNU/Linux. Ele trás a história e a teoria destes dois temas, mostrando, principalmente, vantagens e desvantagens de se usar várias partições para a instalação do GNU/Linux e benchmarks dos sistemas de arquivos mais utilizados neste sistema operacional.
Parte 4: Conclusão final
Ao se deparar, na instalação do GNU/Linux, com o processo de particionamento de disco e escolha de um sistema de arquivos, muitos usuários utilizam soluções padronizadas, como a definição de apenas duas partições para a instalação do sistema (uma Linux Native e outra Linux Swap) e utilização do sistema de arquivos sugerido pela distribuição escolhida.
O problema é que, fazendo isso, o usuário estará diminuindo o nível de segurança dos seus dados e, possivelmente, comprometendo a performance do sistema. É óbvio que isto não implica, obrigatoriamente, na perda de dados ou na lentidão do sistema.
Entretanto, a definição de um bom esquema de particionamento de disco e a escolha de um sistema de arquivos adequado à aplicação em questão, podem diminuir muito o risco de ocorrência destes problemas.
Por isso é interessante que, antes do usuário procurar aprender a utilizar um programa de particionamento de disco, ou a formatar suas partições com os sistemas de arquivos, ele aprenda os conceitos básicos e a teoria relacionados à operação em questão, a fim de aplicar bem esses conhecimentos e obter uma melhora na segurança e no desempenho do sistema.
O problema é que, fazendo isso, o usuário estará diminuindo o nível de segurança dos seus dados e, possivelmente, comprometendo a performance do sistema. É óbvio que isto não implica, obrigatoriamente, na perda de dados ou na lentidão do sistema.
Entretanto, a definição de um bom esquema de particionamento de disco e a escolha de um sistema de arquivos adequado à aplicação em questão, podem diminuir muito o risco de ocorrência destes problemas.
Por isso é interessante que, antes do usuário procurar aprender a utilizar um programa de particionamento de disco, ou a formatar suas partições com os sistemas de arquivos, ele aprenda os conceitos básicos e a teoria relacionados à operação em questão, a fim de aplicar bem esses conhecimentos e obter uma melhora na segurança e no desempenho do sistema.
2.1: num disco ATA (IDE) podem existir até 59 (e não 60) unidades (partições) lógicas. Assim, o número máximo de sistemas de arquivos instalado será de 62 (e não 63): 3 em partições primárias e 59 em unidades lógicas. O número não é da arquitetura (seja do padrão ATA ou da x86), mas uma limitação imposta pelo Linux. Sem entrar em muitos detalhes, depende da estrutura de números maiores e menores, cujo registro é mantido por Torben Mathiasen e cuja versão mais atual encontra-se em
<http://www.lanana.org/docs/device-list/index.html>. Do registro verifica-se também que o número de unidades lógicas num disco SCSI é de 11 (e não 12), possibilitando a instalação de 14 sistemas de arquivo (3 em partições primárias e 11 em unidades lógicas).
2.4: a definição de memória virtual não está correta. O espaço de troca no disco rígido é apenas um componente da memória virtual, e nem mesmo é necessário. O Linux (e os principais sistemas operacionais: Windows, FreeBSD, Solaris) usa (e depende de) a memória virtual, que tem 3 funções principais: (i) permitir a cada processo um endereçamento próprio (na arquitetura x86, endereços na faixa de zero a 4 GiB), origem do nome memória virtual; (ii) proteção (na arquitetura x86, num sistem híbrido de segmentação e paginação); (iii) possibilitar a utilização de mais memória do que a existente fisicamente (aqui entra o espaço de troca).
Em 2.4.2, o tamanho do espaço de troca está correto (2 GiB) para a arquitetura x86 (são 128 GiB para alpha e 3 TiB para Sparc64, p.ex.), mas a quantidade de espaços, atualmente, é de 32 (v. "man mkswap"). O valor de 8 é anterior ao kernel 2.4.10.
O esquema de particionamento (2.5) faz uma recomendação inadequada: usar um espaço de troca no final do disco rígido é muito ruim para o desempenho. Como exemplo, o meu disco principal (um ST380817AS, da Seagate), segundo o hdparm, pode ler 56 MiB/s (em média) em sda2 (nos primeiros 600 MiB) e apenas atinge 34 MiB/s em sda14 (últimos 7 GiB). Num hd (ATA ou SCSI), os setores são numerados de fora para dentro. Assim, obviamente, o desempenho será melhor nos setores iniciais.
3.5. Deve haver, sim, uma preocupação com fragmentação. Use a ferramenta filefrag para verificar. Principalmente nos sistemas Ext2-3 e Reiserfs (que usam alocação por blocos), o índice de fragmentação, principalmente de arquivos grandes (maiores que 100 KiB) pode ser muito alto (já monitorei um sistema de correio mal configurado, usando Reiserfs 3, onde alguns arquivos de caixa postal, com tamanhos de 2 MiB a 14 MiB tinham entre 100 e 500 fragmentos, com desempenho de disco muito ruim). O JFS e XFS usam alocação por extensões (extents) ordenadas em árvore, e fragmentam menos. Além disso, o XFS possui uma ferramenta para desfragmentar (xfs_fsr).
O SAG, de Wirzenius e outros, da sua referência, já foi muito bom, mas além de alguns equívocos de conceito (como o de memória virtual), está muito desatualizado e muitas partes (como a que informa sobre partições). As melhores fontes de informação ainda são: os fontes do kernel, as páginas manuais, livros mais específicos.
Referências:
[1] Carrier, Brian. File system forensic analysis. 2005. Addison Wesley Professional.
[2] Bovet, Danilo P., Cesati, Marco. Undestanding the Linux kernel.3.ed. 2006. O'Reilly.
[3] Gorman, Mel. Understanding the Linux virtual memory manager. 2004. Prentice Hall.