Linux File Systems e Particionamento

Linux File Systems e Particionamento

Bad Block

Alguém aqui já se pegou colocando na instalação sempre o famoso "ext4" , bom pretendo neste artigo sanar este habito, afinal o Linux é um sistema que pode ser personalizado de toda forma não apenas no visual mas em seu funcionamento em si, irei mostrar formas de otimizar o funcionamento do Linux escolhendo e particionando seu sistema da forma correta.

Os File Systems:

O projeto GNU/Linux começou com o ext2, um sistema de arquivos que mais tarde se torna o ext3 com journal, este mesmo teve suas melhorias tornando-se o ext4 (sistema de arquivos padrão na maioria das distribuições)

Vamos lá o que é afinal um sistema de arquivos, se você já usou windows deve ter notado que seu disco C: é formatado como NTFS, se você é um pouco mais antigo vai lembrar que o Windows já usou FAT32 e FAT16.

O NTFS, FAT32 são exemplos de sistema de arquivos para Windows, de uma forma bem abstrata podemos dizer que:

"O sistema de arquivos Linux é a estrutura em que todas as informações sobre seu computador estão armazenadas. Na verdade, uma das propriedades que definem os sistemas UNIX, em que se baseia o Linux, é que quase tudo o que você precisa identificar em seu sistema (dados, comandos, links simbólicos, dispositivos e diretórios) é representado por itens nos sistemas de arquivos".

Ok esta foi uma definição simples do File System.

Antes de prosseguir você deve saber o que é journaling afinal isso sera falado o tempo todo mais a frente.

Journaling:

O sistema de journaling grava qualquer operação que será feita no disco em uma área especial chamada “journal”, assim se acontecer algum problema durante alterações no disco, ele pode voltar ao estado anterior do arquivo, ou finalizar a operação.
Desta forma, o journal acrescenta ao sistema de arquivos o suporte a alta disponibilidade e maior tolerância a falhas. Após uma falha de energia, por exemplo, o journal é analisado durante a montagem do sistema de arquivos e todas as operações que estavam sendo feitas no disco são verificadas. Dependendo do estado da operação, elas podem ser desfeitas ou finalizadas. O retorno do servidor é praticamente imediato (sem precisar a enorme espera da execução do fsck em partições maiores que 10Gb), garantindo o rápido retorno dos serviços da máquina.

ext2 (Linux Native)

Surgiu aparentemente junto com o projeto GNU/Linux, seu nome significa (second extended filesystem), sim já existiu apenas o ext que logo evoluiu para ext2.
As principais vantagens do ext2: Sistema rápido para computadores com baixo desempenho pois ele não faz journaling, não se fragmenta tão facilmente pois permite a localização do melhor lugar onde o arquivo se encaixa no disco. Isto é útil em ambientes multiusuários onde arquivos são apagados e criados o tempo todo.

ext3

O sistema de aquivos ext3 é uma evolução do ext2. Este Sistema de arquivos agora possui journaling sendo mais eficiente que o ext2, em alguns testes ele mostrou ser eficiente no armazenamento de arquivos com até 16 gigas de tamanho.
O uso deste sistema de arquivos comparado ao ext2, na maioria dos casos, melhora o desempenho do sistema de arquivos através da gravação sequencial dos dados na área de metadados e acesso mhash a sua árvore de diretórios. Mas pode trazer impactos na performance no caso de dispositivos de memória flash (SSD).
A estrutura do ext3 é semelhante a do ext2, o journaling é salvo em um arquivo .journal que fica oculto na raiz ( / ). Uma grande vantagem do ext3 é que todas as ferramentas do ext2 para recuperação funcionarão no ext3 sem problemas.

ext4

Aperfeiçoamento do ext3, seu funcionamento é bem semelhante continua com journaling, porem agora o sistema suporta volumes com até 1 exbibyte (EiB) de tamanho, e arquivos com até 16 tebibytes (TiB). É retro compatível com os sistemas ext2 e ext3; permite pré-alocar espaço em disco para arquivos antes de gravá-los.Permite um número ilimitado de subdiretórios.

XFS

Sistema de arquivos eficaz, o XFS faz journaling de metadados, isso facilita uma rápida recuperação após uma falha catastrófica no sistema (como queda de energia por exemplo). O XFS pode ser desfragmentado e ampliado enquanto sua partição está montada e ativa. Consegue alocar grupos de 16 megas até 1 tera. Precisão ao marcar Super Blocos no Discos.

XFS Limits

32 bit Linux

  • Tamanho máximo de um arquivo = 16TB (O_LARGEFILE)
  • Tamanho máximo da partição XFS = 16TB

64 bit Linux

  • Tamanho máximo de um arquivo = 9 Million TB = 9 ExaB
  • Tamanho máxmi de uma partição XFS = 18 Million TB = 18 ExaB


JFS

 Sistema criado pela IBM, foi lançado com a primeira versão do sistema operacional AIX. Fornece escalabilidade, possui suporte a computadores com vários processadores.
JFS também usa a estrutura I-node para armazenar a localização dos blocos de cada arquivo nas estruturas físicas do disco, JFS armazena esses I-nodes em uma árvore binária 'B-Tree' para acelerar o acesso a essas informações, esses blocos podem variar de 512 a 4096 bytes, a alocação dos I-nodes é feita conforme vai sendo necessário. 
O JFS assim como o XFS faz apenas journaling de metadados, é um sistema de arquivos 64 bits, em 2012 o projeto ganhou suporte ao TRIM para unidades SSD.

Reiserfs

Este é um pouco polemico devido ao seu criador estar preso, é um sistema de arquivos alternativo ao ext2/3/4. Possui suporte a journaling, seus blocos são de tamanhos variáveis, grava informações em uma arvore binaria 'B-Tree'. Sua velocidade de recuperação é superior a do ext3. Grande performance com arquivos pequenos.

Reiserfs Limits

  1. máximo de 4,294,967,296 de arquivos numa partição reiserfs.
  2. Você não consegue colocar mais de 2,147,483,648 arquivos em um diretório.
  3. O numero máximo de subdiretórios é 64.536.
  4. O você não consegue criar arquivos maiores que 17.6 terabytes em sistemas 32 bit.
  5. Sua partição não Reiserfs não pode passar de 17.6 terabytes.


Estes são os sistemas mais conhecidos no mundo linux, existem outros como Brtfs, Vfat, etc..

Agora vamos falar sobre particionamento.

Partições:

O linux funciona com um sistema de diretórios, cada diretório principal pode ser montado em uma partição.

Swap

Embora Swap hoje em dia seja algo quase inútil, é sempre bom ter este carinha principalmente quando precisa hibernar já que memorias as memorias RAM são formatadas quando não estão energizadas.
O Swap é uma partição criada para servir de troca, assim como o windows usa o arquivos de despejamento de disco. Quando o linux fica afogado na memoria o Swap entra em ação embora como disse hoje os PCs possuem bem mais que 4 gigas de Ram.

Como devo montar esse carinha?

Já vi muito pessoal usando a seguinte regra:

  • 4 gigas ou mais de RAM -> o tamanho do swap sera "metade do tamanho da Ram" ou"metade da ram + 1 giga".
  • 32 MB de RAM até 3 gigas de RAM -> o tamanho do swap será o dobro da ram.
  • OBS: Caso você usara swap para hibernação recomenda-se deixar o mesmo tamanho da RAM + 2 ou 1 giga.

/bin

Contém comandos comuns de usuários Linux, como ls, sort, date e chmod.

/boot

Contém o kernel inicializável do Linux e os arquivos de configuração do carregador de inicialização (GRUB).

/dev

Contém arquivos que representam os pontos de acesso a dispositivos em seus sistemas Esses incluem dispositivos terminal (tty*), disquetes (fd*), discos rígidos (hd* ou sd*), RAM (ram*) e CD-ROM (cd*). Os usuários podem acessar esses dispositivos diretamente através desses arquivos de dispositivo, mas alguns aplicativos ocultam dos usuários finais o nome dos dispositivos reais.

/etc

Contém os arquivos de configuração administrativa. A maioria desses arquivos são de texto simples que, desde que o usuário tenha a devida permissão, podem ser editados em qualquer editor de texto.

/home

Contém diretórios atribuídos a cada usuário regular com uma conta de login. (O usuário root é uma exceção, usando /root como seu diretório inicial.)

/media

Fornece uma localização padrão para dispositivos de automontagem (mídia removível em particular). Se o produto possuir um nome de volume, esse nome é normalmente usado como ponto de montagem. Por exemplo, um drive USB com um nome de volume myusb seria montado em /media/myusb.

/lib

Contém bibliotecas compartilhadas requeridas por aplicativos em /bin e /sbin para inicializar o sistema.

/mnt

Um ponto de montagem comum para muitos dispositivos, antes de ser suplantado pelo diretório /media padrão. Alguns sistemas Linux inicializáveis ainda usam esse diretório para montar partições de disco rígido e sistemas de arquivos remotos. Muitas pessoas ainda usam esse diretório para montar temporariamente sistemas de arquivos locais ou remotos que não são montados de forma permanente.

/misc

Um diretório usado às vezes para montar sistemas de arquivos mediante solicitação.

/opt

Estrutura de diretórios disponíveis para armazenar software suplementar.

/proc

Contém informações sobre os recursos do sistema.

/root

Representa o diretório do usuário root. O diretório inicial de root não reside sob /home por razões de segurança.

/sbin

Contém comandos administrativos e processos de daemon.

/tmp

Contém arquivos temporários usados pelos aplicativos.

/usr

Contém a documentação do usuário, jogos, arquivos gráficos (X11), bibliotecas (lib) uma variedade de outros comandos e arquivos que não são necessários durante o processo de inicialização.

/var

Contém diretórios de dados utilizados por vários aplicativos. Em particular, esse é o lugar onde você coloca os arquivos que você compartilha, como um servidor de FTP (/var/ftp) ou um servidor web (/var/www). Ele também contém todos os arquivos de log do sistema (/var/log) e arquivos de spool /var/spool (como mail, cups e news).


Porque montar partições separadas?

  • Segurança e Integridade dos dados.
  • Backup de todos os seus dados em /opt , /home, /root quando for usar uma nova distro
  • O Linux se torna mais rapido


Como devo particionar em relação a tamanho e tipo de sistema de arquivos?

Isto é algo bem pessoal, vou dar meu exemplo de configuração para vocês terem uma ideia de como eu fiz.

100 gigas na / -> Reiserfs (Afinal é rápido com arquivos pequenos)
19,5 gigas no /root -> XFS (Eu particularmente acho o XFS bem rápido sua indexação de metadados torna qualquer pesquisa rápida)
500 mb no /boot -> EXT4 (500 mb é muito para o boot, EXT4 porque é compatível com o grub)
4 gigas /tmp -> EXT2 (arquivos temporarios, EXT2 não grava log limpo a tmp toda semana)
400 gigas /home -> XFS (mesmo motivo de usar no /root)
8 gigas /swap (meu notebook tem 6 gigas de ram uso bastante hibernação e nunca tive problemas com o swap)
O Resto do HD é uma partição chamada /backup -> Reiserfs.

OBS: Meu Disco é do tipo GPT, e não MBR




Bom senhores, espero que este artigo tenha ajudado vocês. Pelo menos assim vocês podem tentar mudar e experimentar outras configurações na hora de instalar o linux.


Referencias:

Livros:

  • LINUX A BÍBLIA 8ª EDIÇÃO.
  • Guia foca Linux Intermediário.


FileSystem -> http://swift.siphos.be/linux_sea/linuxfs.html

FileSystem -> https://www.vivaolinux.com.br/artigo/Introducao-ao-universo-dos-filesystems?pagina=2

FileSystem -> https://x22univale.wordpress.com/2011/12/29/filesystem-sistemas-de-arquivos-varias-siglas-um-unico-resumo/

FileSystem -> http://www.bosontreinamentos.com.br/hardware/o-que-e-um-sistema-de-arquivos-file-system/

Reiserfs -> https://www.everything2.com/title/ReiserFS

Reiserfs -> https://pt.wikipedia.org/wiki/ReiserFS

JFS -> http://jfs.sourceforge.net/project/pub/jfs.pdf

JFS -> https://pt.wikipedia.org/wiki/JFS

XFS -> https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/storage_administration_guide/ch-xfs

XFS -> http://www.xfs.org/index.php/Main_Page

FAT32 e NTFS -> https://www.tecmundo.com.br/particao/1506-fat32-ou-ntfs-qual-o-melhor-parte-1-de-2-.htm

Projeto Guia Foca Linux -> http://www.guiafoca.org

Report Page