Neste artigo, o primeiro de uma nova série, iremos tratar de assuntos que ainda causam alguma dúvida em boa parte das pessoas quando elas precisam decidir como utilizar um HD. O principal assunto será o Esquema de Particionamento. Mas outros assuntos serão tratados juntamente, pois estão intimamente ligados ao particionamento, como por exemplo a Estrutura de Diretórios.
Se o próximo parágrafo não deixar você em dúvida, então pode aguardar o próximo artigo "Sugestões de Esquemas de Particionamento - Parte I", pois você já está um pouco avançado nesse assunto. Mas continue lendo na sequência se tiver alguma dúvida ou quiser sair do pragmatismo, e aprofundar um pouco mais na teoria!
O Linux requer pelo menos uma partição, que deve estar associada ao diretório /, o qual é o sistema de arquivos raiz (root). Mas é comum ter partições separadas para diretórios específicos, como o /home. As diferentes partições que você criar serão conectadas à partição raiz, montando-as em pontos de montagem que você escolher. O esquema de particionamento no Linux depende de qual o propósito de sua instalação. Para uma instalação padrão de uso geral, você pode ter uma partição raiz ( / ), uma partição de boot ( /boot ), uma partição home ( /home ) e uma partição de swap. Entretanto, há diferentes configurações para diferentes propósitos. Por isso aqui vai uma lista de diretórios que, ficando em partições separadas, isso pode trazer alguma vantagem:
/boot - A partição montada em /boot irá conter o Kernel do sistema operacional, juntamente com arquivos usados durante o processo de boot (inicialização). Para a maioria dos usuários, uma partição com 500 MB é suficiente.
swap - Normalmente, a partição swap deverá ter duas vezes o tamanho da RAM instalada no sistema. O uso de uma partição de swap não é obrigatório. Mas sua finalidade é ser usada como "memória auxiliar" pelo Linux, caso falte memória RAM suficiente para toda as atividades, e também ser usada como área de dump da memória do sistema, se você acionar o recurso de hibernação.
/home - É muito prático colocar o diretório home em uma partição separada. Mesmo que a partição raiz seja corrompida ou destruída, os dados dos usuários terão uma boa chance de permanecerem intactos. Na via inversa, o sistema operacional poderá continuar funcionando se eventualmente o diretório de um usuário em /home ficar lotado de arquivos, e deixar o sistema de arquivos sem espaço.
/usr - Arnazena as bibliotecas e dados do sistema. Criar uma partição /usr separada torna mais fácil manter o sistema atualizado, mesmo se você precisar reinstalar o sistema desde o início.
/opt - Se você costuma instalar produtos de terceiros, você irá desejar ter /opt em uma partição separada. Isso irá facilitar a manutenção dos aplicativos de terceiros funcionando após atualizações de versões.
/srv - Se você usa seu sistema como um servidor, criar uma partição separada para /srv será uma boa ideia, uma vez que ela irá conter seu servidor Web ou FTP.
/tmp - Colocar /tmp em uma partição em separado irá poupar você de fazer backup de arquivos inúteis! Além disso, assim como no caso da partição separada para /home, uma partição /tmp cheia não irá derrubar o sistema (embora alguns aplicativos possam parar de funcionar a contento, até resolver o problema).
/var - Uma vez que os arquivos de log são armazenados em /var, é uma boa ideia ter ela em uma partição separada. Se você deixar /var dentro de uma partição root ( / ) muito pequena, não será difícil rapidamente acabar com o espaço disponível nela, e consequentemente derrubar o sistema!
O BOOT e as Tabelas de Partição
Algumas das primeiras decisões que devemos tomar durante a instalação do Linux é o particionamento do disco e qual sistema de arquivos usar. Evoluções na última década no processo de boot nos fazem discutir esse tema novamente.
Muitas pessoas, por gosto pessoal ou por necessidade, rodam Windows e Linux na mesma máquina. A maioria dos boot-loaders atualmente são inteligentes o suficiente para reconhecer qualquer número e tipos de sistemas operacionais instalados, e criam um menu onde o usuário pode escolher por qual sistema fazer o boot.
Embora nós encorajemos a todos deixarem que o Linux gerencie 100% da máquina, e passem a usar o Windows (se isso for mesmo inevitável) dentro de máquinas virtuais (VMs), sabemos que existem situações onde rodar o Windows dentro de uma VM inviabiliza seu uso, como no caso da maioria dos jogos, que exigem alto desempenho gráfico. Então, paciência! ¯\_(ツ)_/¯
BIOS versus UEFI e MBR versus GPT
Até o final da década de 2000, o BIOS (Basic Input/Output System) era a principal, se não a única, forma de dar partida em um computador. Mas por questões de limitações do BIOS diante de novas tecnologias e por questões de novas ameaças que afetavam a segurança, a Intel, Microsoft e outros terminaram impon... que dizer, propondo ao mundo a UEFI -- Unified Extensible Firmware Interface.
Com o advento dos Flash BIOS, Firmwares, e etc e tals, e como "o mundo jaz no maligno" (he-he), surgiram também os rootkits, e novas "espécies altamente evoluídas" de vírus que se aproveitavam de falhas no BIOS dos computadores, se instalavam nele, e eram praticamente indetectáveis tanto pelo SO, quanto por qualquer antivírus na face da terra!
Vamos aceitar que a UEFI é melhor porque veio para resolver esses problemas de segurança e uma série de outras limitações do BIOS. Basicamente, a UEFI é um novo BIOS bastante evoluído, com uma assinatura digital, dando maior segurança, além de outros recursos avançados que fogem ao escopo do artigo.
Toda essa lenga-lenga desse tópico é porque o Windows de uns tempos para cá só fica "feliz" se você tiver sua máquina configurada em modo UEFI, safe boot e etc! A coisa é tão séria, que até mesmo a Intel publica tutoriais ensinando como converter sua instalação Windows de BIOS/MBR para UEFI/GPT: "Convertendo a instalação do Windows® de Legacy (Herdado) para UEFI, sem perda de dados".
A Tabela de Partição GUID (GPT) é um estilo de particionamento alternativo e contemporâneo; destina-se a substituir o antigo sistema Master Boot Record (MBR). A GPT tem várias vantagens sobre o MBR, que tem peculiaridades que remontam aos tempos do MS-DOS. Com os recentes desenvolvimentos das ferramentas de formatação, é igualmente fácil obter boa confiabilidade e desempenho tanto com GPT quanto com MBR.
NOTA: Para o GRUB inicializar a partir de um disco particionado por GPT em um sistema baseado em BIOS, é necessária uma partição de inicialização do BIOS.
Alguns pontos a considerar ao escolher entre GPT e MBR:
- Para dual-boot com o Windows (32 bits e 64 bits) usando o BIOS (modo legacy), o esquema MBR é necessário.
- Para dual-boot com o Windows de 64 bits usando o modo UEFI em vez do BIOS, o esquema GPT é obrigatório.
- Se você estiver instalando em hardware mais antigo, especialmente em laptops antigos, considere a possibilidade de escolher o MBR, pois seu BIOS pode não suportar o GPT.
- Se você estiver particionando um disco de 2 TB ou maior, será necessário usar o GPT.
- Recomenda-se sempre usar o GPT para inicialização de UEFI, pois algumas implementações de UEFI não suportam a inicialização para o MBR enquanto estiverem no modo UEFI.
Se nenhuma das opções acima for um empecilho, escolha livremente entre GPT e MBR. Porém, como a GPT é mais moderna, ela é sempre mais recomendável.
Aqui vai uma lista de algumas vantagens do GPT sobre o MBR:
- Fornece um GUID de disco exclusivo e um GUID de partição exclusiva (PARTUID) para cada partição - Uma boa maneira do sistema referenciar partições e discos.
- Fornece um nome de partição independente do sistema de arquivos (PARTLABEL).
- Número arbitrário de partições - depende do espaço alocado para a tabela de partições - Não há necessidade de partições estendidas e lógicas. Por padrão, a tabela GPT contém espaço para definir 128 partições. No entanto, se você quiser definir mais partições, poderá alocar mais espaço para a tabela de partições (atualmente, somente o gdisk é conhecido por suportar esse recurso).
- Usa LBA (Logical Block Addressing) de 64 bits para armazenar números de setor - o tamanho máximo de disco endereçável é 2 ZiB (2^70 bytes). O MBR está limitado a endereçar 2 TB de espaço por unidade.
- Armazena um cabeçalho de backup e uma tabela de partição no final do disco, o que ajuda na recuperação, caso os principais estejam danificados.
- Checksums CRC32 para detectar erros e corrupção do cabeçalho e da tabela de partições.
Considerando os pontos acima, percebe-se que o particionamento baseado em MBR (também conhecido como DOS Partition) tornou-se muito limitado em virtude dos HD gigantescos disponíveis. Basta lembrar que o conceito de MBR foi introduzido publicamente em 1983, juntamente com o PC DOS 2.0. Naquele tempo, quem tinha um HD de 10 MB era rico!
Se você particionar um HD com MBR, ficará limitado a quatro partições primárias. E embora você possa contornar isso usando uma partição estendida (e n volumes lógicos "dentro" dela), ainda assim você ficará limitado a 2 TB. Sim, a forma como MBR endereça volumes no disco só permite gerenciar um total de volumes de até 2 TB. Por outro lado, se você particionar um HD com GPT, você poderá endereçar até 18 exabytes e ter até 128 partições por disco.
O particionamento GPT procura manter uma compatibilidade "para trás", ou seja, se você particionar um disco com GPT e introduzi-lo em um computador que que só sabe ler MBR não será difícil que ela seja reconhecido adequadamente. Ou, se você instalar nele um SO meio "cascudo", que só entenda de MBR, essa compatibilidade "para trás" poderá ajudar também. Se quiser mais informação sobre isso, vou apelar para a Wikipedia!
Antes de uma instalação sua distribuição do Linux, é bom verificar se ela funciona adequadamente em máquinas com UEFI. Se não, verificar se é possível "desabilitar" o modo UEFI, ativando o Legacy Mode Boot, no Setup da máquina.
ATENÇÃO: Não desabilite o modo UEFI de sua máquina se você já tiver o Windows instalado nela! Se você fizer isso, ele simplesmente não vai mais dar boot! Só faça isso se for uma necessidade técnica e/ou se for começar uma instalação "do zero".
Faz algum tempo, em 2009, nós publicamos aqui no Blog dois artigos que trataram do assunto diretórios, numa linguagem bem acessível. Então, para não repetirmos o que já escrevemos, pedimos que, por favor, leiam aqueles dois artigos:
Diretórios e arquivos 1: a pasta home
Diretórios e Arquivos 2: diretórios do sistema
Neste novo artigo, iremos falar de alguns diretórios especiais e da relação entre eles e o particionamento.
Olhando o diagrama acima, podemos identificar todos aqueles diretórios que podem ficar em partições separadas, e com isso trazer alguma melhoria no sistema. No centro, está o diretório raiz ( / ).
Olhando o diagrama acima, podemos identificar todos aqueles diretórios que podem ficar em partições separadas, e com isso trazer alguma melhoria no sistema. No centro, está o diretório raiz ( / ).
Revisitando o diretório raiz
Assim como no Unix, tudo no Linux parte do diretório raiz, simbolizado pela barra normal ( / ). Seus documentos, por exemplo, ficam dentro da pasta cujo caminho, por padrão, é /home/usuário/Documentos, onde usuário é o nome (ID ou login) de seu usuário no sistema.
NOTA: Não confundam o diretório raiz ( / ) , cujo termo em inglês é root, com o diretório /root! O diretório raiz é representado pela /, como já dissemos. O diretório /root é, na verdade, a "casa" (home) do usuário especial root, o super usuário (su) todo poderoso do Linux. Assim, na pasta /root, espera-se encontrar os arquivos "de trabalho" do usuário root.
Como tudo parte do diretório raiz, é lógico deduzir que, para que o Linux funcione, é preciso ao menos um região no HD associada a ele (ao diretório raiz). A essa região no disco costumamos dar o nome de Partição.
Visão geral do gerenciamento de discos no Linux
No contexto atual, basta saber que os discos no Linux não são identificados por uma letra de unidade tipo C: ou D:, como é no Windows. No Linux, os discos são identificados por um nome de dispositivo. Normalmente, os discos são identificados da seguinte forma: /dev/hda, /dev/hdb, /dev/sda, /dev/sdb, /dev/sr0, ...
/dev é um diretório especial do Linux. Na verdade, tudo dentro dele representa um Dispositivo. dev vem de device, que significa dispositivo, em inglês.
hda e hdb são dispositivos conectados na interface IDE, normalmente HDs ou CD/DVD-ROMs;
sda e sdb são dispositivos conectados na interface SATA, SCSI ou até mesmo USB;
Finalmente, sr0 costuma ser uma unidade CD/DVD-ROM conectada à uma porta SATA, USB ou SCSI.
Se um computador tiver apenas um HD e mais uma unidade de DVD conectados em portas SATA, muito provavelmente o HD será identificado como /dev/sda e a unidade DVD como /dev/sr0. Se futuramente mais um HD for conectado em outra porta SATA disponível, ele será identificado como /dev/sdb, e assim sucessivamente no Linux.
Visão geral do particionamento de um disco
Em um HD de 2 TB é possível, por exemplo, instalar simultaneamente três sistemas operacionais, além de armazenar nele todos os documentos de texto, planilhas e apresentações que você consiga produzir durante quase uma vida! Mas tudo junto e misturado? De jeito nenhum...
Para poder aproveitar de forma útil, prática e eficiente um HD, é preciso dividi-lo em áreas ou estruturas, reservando-as para cada uso em particular.
A essa divisão de um HD, com o propósito de melhor aproveitá-lo, chamamos de particionamento.
/dev/sda1, /dv/sda2 -- Duas partições primárias;
/dev/sda1, /dev/sda2(e), /dev/sda5, /dev/sda6, /dev/sda7 -- Uma partição primária (sda1) e três partições estendidas (sda5, sda6 e sda7 -- "dentro" de /dev/sda2).
Um computador com Linux, em uma configuração extremamente mínima, teria um único HD com uma única partição associada ao diretório raiz ( / ). Algo como:
#/etc/fstab
(...)
/dev/sda1 / ext4 acl,user_xattr 0 1
(...)
Nesse hipotético cenário, a linha /dev/sda1 / ext4 acl, user_xattr 0 1 instrui o Linux a associar a partição /dev/sda1 ao diretório raiz ( / ) do sistema! Por mais confuso que isso possa parecer, o que importa agora é o conceito! É assim que o Linux associa uma partição à um diretório do sistema. A isso chamamos de Ponto de Montagem. O arquivo fstab dentro de /etc existe com esse propósito: instruir o Linux a montar automaticamente partições em disco, montando-as nos diretórios especificados.
Partições, Pontos de montagem e seus Diretórios
Já foi dito que em uma instalação padrão de uso geral, o particionamento pode ser feito da seguinte forma:
uma partição de swap;
uma partição de boot ( /boot );
uma partição raiz ( / );
uma partição home ( /home ).
Em um HD cuja Tabela de Partição seja baseada em MBR (Master Boot Record), é possível ter até quatro partições primárias. Assim, poderíamos fazer a seguinte divisão no disco, para simplificar as coisas:
Partição | Ponto de montagem | Significado / Função |
/dev/sda1 | swap | swap |
/dev/sda2 | /boot | Partição de boot |
/dev/sda3 | / | Partição raiz (root) |
/dev/sda4 | /home | Partição home |
Uma vez que você tenha particionado seu disco conforme o propósito de sua instalação, será necessário definir os pontos de montagem. Sendo assim, deveríamos encontrar em fstab alguma coisa como:
/dev/sda1 swap swap defaults 0 0
/dev/sda3 / btrfs defaults 0 0
/dev/sda2 /boot ext2 0 0
/dev/sda4 /home xfs defaults 1 2
Qual a diferença entre um ponto de montagem e um diretório?
Existe uma sutileza aqui que precisa ser muito bem compreendida, se você quiser trabalhar com particionamentos configurados por você mesmo no futuro. (Uma coisa é dar uma "googlada" e "fazer você mesmo". Outra coisa é fazer você mesmo!)
Pelos parâmetros em /etc/fstab, a partição /dev/sda3 é a partição montada como diretório raiz ( / ) de nossa configuração em estudo, correto? Imagine momentaneamente que não existem outras partições agora, que nosso sistema em estudo possui apenas as partições raiz ( / ) e de swap. Naturalmente, se pedirmos para listar o conteúdo do diretório raiz, iremos ver algo como:
user@system:~> ls -l /
total 112
drwxr-xr-x 2 root root 4096 jun 26 20:55 bin
drwxr-xr-x 4 root root 4096 jul 6 18:44 boot
drwxr-xr-x 22 root root 4440 jul 11 17:46 dev
drwxr-xr-x 134 root root 12288 jul 11 17:46 etc
drwxr-xr-x 3 root root 22 jun 28 17:36 home
drwxr-xr-x 9 root root 4096 jun 26 21:24 lib
drwxr-xr-x 5 root root 4096 jun 26 21:23 lib64
drwx------ 2 root root 16384 jun 26 21:15 lost+found
drwxr-xr-x 2 root root 4096 jun 7 15:45 mnt
drwxr-xr-x 4 root root 4096 jun 27 15:05 opt
dr-xr-xr-x 218 root root 0 jul 11 14:46 proc
drwx------ 9 root root 4096 jul 11 17:49 root
drwxr-xr-x 35 root root 980 jul 11 17:47 run
drwxr-xr-x 2 root root 12288 jun 27 14:06 sbin
drwxr-xr-x 2 root root 4096 jun 7 15:45 selinux
drwxr-xr-x 5 root root 4096 jun 26 21:23 srv
dr-xr-xr-x 13 root root 0 jul 11 18:24 sys
drwxrwxrwt 18 root root 12288 jul 11 18:15 tmp
drwxr-xr-x 12 root root 4096 jun 7 15:45 usr
total 112
drwxr-xr-x 2 root root 4096 jun 26 20:55 bin
drwxr-xr-x 4 root root 4096 jul 6 18:44 boot
drwxr-xr-x 22 root root 4440 jul 11 17:46 dev
drwxr-xr-x 134 root root 12288 jul 11 17:46 etc
drwxr-xr-x 3 root root 22 jun 28 17:36 home
drwxr-xr-x 9 root root 4096 jun 26 21:24 lib
drwxr-xr-x 5 root root 4096 jun 26 21:23 lib64
drwx------ 2 root root 16384 jun 26 21:15 lost+found
drwxr-xr-x 2 root root 4096 jun 7 15:45 mnt
drwxr-xr-x 4 root root 4096 jun 27 15:05 opt
dr-xr-xr-x 218 root root 0 jul 11 14:46 proc
drwx------ 9 root root 4096 jul 11 17:49 root
drwxr-xr-x 35 root root 980 jul 11 17:47 run
drwxr-xr-x 2 root root 12288 jun 27 14:06 sbin
drwxr-xr-x 2 root root 4096 jun 7 15:45 selinux
drwxr-xr-x 5 root root 4096 jun 26 21:23 srv
dr-xr-xr-x 13 root root 0 jul 11 18:24 sys
drwxrwxrwt 18 root root 12288 jul 11 18:15 tmp
drwxr-xr-x 12 root root 4096 jun 7 15:45 usr
Podemos ver na listagem acima todas as pastas já citadas, inclusive /home!
Continuando nessa imaginação, pense nos usuários desse sistema, e na quantidade enorme de arquivos que eles produzem! Tudo será gravado na pasta /home, correto? E onde está /home? Isso mesmo, no diretório raiz! Consequentemente, tudo o que for gravado dentro de /home estará sendo, na verdade, gravado em /dev/sda3, pois ela é a partição do disco montada como diretório raiz.
Então, no contexto em que estamos imaginando, /home é "apenas" um diretório! Um diretório dentro do diretório raiz ( / ).
Agora vamos deixar esse cenário imaginário e vamos considerar todas as configurações em /etc/fstab, principalmente a linha em negrito:
# Pontos de montagem definidos em /etc/fstab
/dev/sda1 swap swap defaults 0 0
/dev/sda3 / btrfs defaults 0 0
/dev/sda2 /boot ext2 0 0
/dev/sda4 /home xfs defaults 1 2
/dev/sda1 swap swap defaults 0 0
/dev/sda3 / btrfs defaults 0 0
/dev/sda2 /boot ext2 0 0
/dev/sda4 /home xfs defaults 1 2
Ter incluído essa linha em /etc/fstab, da mesma forma que as outras, instrui o Linux a montar automaticamente as partições nos pontos de montagem especificados. A linha em negrito é equivalente a executar "manualmente" o seguinte comando:
mount /dev/sda4 /home
Aportuguesando o comando, ele significa o seguinte:
"Monte a partição /dev/sda4 no diretório /home"
Simples assim!
Agora, nesse contexto, nós "transformamos" /home em um ponto de montagem. E isso tem um significado importantíssimo: significa que tudo o que for gravado dentro de /home será gravado em /dev/sda4, e não mais em /dev/sda3!
Do ponto de vista lógico, você acessa /home, como um diretório qualquer. Mas do ponto de vista físico, digamos assim, tudo o que você fizer nele, estará fazendo em /dev/sda4.
Então, respondendo à pergunta:
Um ponto de montagem é um diretório vinculado à uma partição (ou dispositivo)!
Essa vinculação pode ser dar manualmente, através do comando mount, ou automaticamente, inserindo uma linha com esse propósito em /etc/fstab.
"Cenas dos próximos capítulos..."
Qualquer que seja a necessidade de sua instalação, a lógica a ser utilizada seguirá sempre o caminho mostrado aqui: criar no HD quantas partições forem necessárias e definir os pontos de montagem para essas partições.
No próximo artigo, iremos começar uma série de sugestões de esquemas de particionamento durante uma instalação, e as explicações necessárias para compreender o "por que" de cada caso!
Para fazer as sugestões de particionamento, é claro, nós iremos explicar algumas coisas:
Trataremos disso tudo no próximo artigo.
No próximo artigo também, para começar de fato a série de sugestões, iremos "dissecar" o esquema de particionamento sugerido por padrão pelo openSUSE, e propor algumas "variações sobre o tema". Prometemos que essa "variação sobre o tema" será bastante interessante, e aqui vai um "spoiler": tem a ver com LVM!
Até o próximo...
Para fazer as sugestões de particionamento, é claro, nós iremos explicar algumas coisas:
- como fazer o particionamento você mesmo durante a instalação, partindo da sugestão dada ou "do zero";
- qual sistema de arquivos usar (ext2, ext3, ext4, xfs ou btrfs?) em determinada partição e por que;
- usar LVM (Logical Volume Management) ou não.
Trataremos disso tudo no próximo artigo.
No próximo artigo também, para começar de fato a série de sugestões, iremos "dissecar" o esquema de particionamento sugerido por padrão pelo openSUSE, e propor algumas "variações sobre o tema". Prometemos que essa "variação sobre o tema" será bastante interessante, e aqui vai um "spoiler": tem a ver com LVM!
Até o próximo...
Nenhum comentário:
Postar um comentário