Manual:X86/Blocos/Discos

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Handbook:X86/Blocks/Disks and the translation is 100% complete.



Tabelas de partições

Embora seja teoricamente possível usar o disco todo, sem partições para abrigar um sistema Linux (quando criando um RAID btrfs, por exemplo), isso quase nunca é feito na prática. Em vez disso, os dispositivos de blocos são divididos em dispositivos menores, mais gerenciáveis. Em sistemas x86, eles são chamados partições. Há atualmente dois padrões de tecnologias de particionamento em uso: MBR e GPT.

MBR

A configuração MBR ("Master Boot Record" - Registro Mestre de Iniciliazação) usa identificadores de 32 bits para o setor de início e o tamanho das partições e suporta três tipos de partições: primária, estendida e lógica. Partições primárias têm suas informações armazenadas no MBR em si - um local muito pequeno (normalmente 512 bytes) bem no começo do disco. Devido a esse espaço pequeno, apenas quatro partições primárias são suportadas (ou seja, de /dev/sda1 a /dev/sda4).

Para suportar mais partições, uma das partições primárias pode ser marcada como uma partição estendida. Essa partição pode então conter partições lógicas (com partições dentro de uma partição).

Importante
Embora ainda suportadas pela maioria dos fabricantes de placas-mãe, tabelas de partição MBR são consideradas como sistema legado. A menos que esteja trabalhando com hardware fabricado antes de 2010, é melhor particionar um disco usando Tabela de Partição GUID. Leitores que precisarem usar MBR devem estar cientes do seguinte:
  • A maioria das placas-mãe de depois de 2010 consideram MBR como modo de boot legado (suportado, porém não ideal).
  • Devido ao uso de identificadores de 32 bits, tabelas de partição MBR não conseguem trabalhar com discos maiores do que 2 TiBs.
  • A menos que sejam usadas partições estendidas, o MBR suporta um máximo de quatro partições.
  • A configuração MBR não provê nenhuma cópia do MBR, assim, se uma aplicação sobrescreve o MBR, todas as informações de partições são perdidas.

Os autores deste Manual sugerem usar GPT sempre que possível nas instalações do Gentoo.

GPT

A configuração GPT ("GUID Partition Table" - Tabela de Partição GUID) usa identificadores de 64 bits para as partições. O local onde é armazenada a informação sobre as partições é muito maior que os 512 bytes da MBR o que significa que praticamente não há limite no número de partições de um disco GPT. Também o tamanho de uma partição tem um limite muito maior (quase 8 ZiB - sim, zebibytes).

Quando a interface do software de sistema entre o sistema operacional e o firmware é a UEFI (em vez da BIOS), o GPT é praticamente mandatório uma vez que surgirão problemas de compatibilidade com a MBR aqui.

A GPT também tem a vantagem de usar somas de checagem e redundância. Ele possui somas de checagem CRC32 para detectar erros no cabeçalho e tabelas de partição e tem um backup da GPT no final do disco. Esta tabela de backup pode ser usada para recuperar danos da GPT primária próxima do início do disco.

GPT ou MBR

Pela descrição acima, alguém pode imaginar que usar GPT é sempre o caminho recomendado, entretanto há alguns problemas.

Usar GPT em um computador baseado em BIOS funciona, mas com isso não é possível fazer dual boot com um sistema operacional Microsoft Windows. A razão é que o Microsoft Windows irá inicializar em modo UEFI se ele detectar uma etiqueta de partição GPT.

Alguns firmwares de placas mães configuradas para inicializar em modo BIOS/CSM/legado podem também ter problemas quando inicializar a partir de discos etiquetados como GPT. Nesse caso, pode ser possível contornar o problema adicionando o status "boot/active" à partição MBR, o que precisa ser feito através do fdisk com a opção -t dos para forçá-lo a ler a tabela de partição usando o formato MBR.

Nesse caso, execute o fdisk e mude a sinalização usando a tecla a. Pressione 1 para selecionar a primeira partição, então use a tecla w para gravar as alterações no disco e saia do fdisk:

user $fdisk -t dos /dev/sda
Welcome to fdisk (util-linux 2.24.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
  
Command (m for help): a
Partition number (1-4): 1
  
Command (m for help): w

Usando UEFI

Quando instalando o Gentoo em um sistema que usa UEFI para inicializar o sistema operacional (em vez da BIOS), é importante que uma partição de sistema EFI (ESP) seja criada. As instruções para o parted abaixo contém os passos necessários para fazer corretamente essa operação.

A ESP precisa ser uma partição do tipo FAT (algumas vezes mostradas como "vfat" em sistemas Linux). A especificação UEFI oficial denota que os sistemas de arquivos FAT12, FAT16, ou 32 irão ser reconhecidos pela firmware UEFI, apesar de que FAT32 é o recomendado para a ESP. Formate a ESP como FAT32:

root #mkfs.fat -F 32 /dev/sda2
Importante
Se a partição FAT não for usada para a ESP, não haverá garantia que o firmware do sistema UEFI será capaz de encontrar o carregador de boot (ou o kernel do Linux) e provavelmente será incapaz de inicializar o sistema!

Armazenamento avançado

RAID Btrfs

Como mencionado acima, o btrfs tem a capacidade de criar sistemas de arquivos em dispositivos múltiplos. O sistema de arquivos btrfs criado dessa forma pode operar nos seguintes modos: raid0, raid1, raid10, raid5 e raid6. Os modos RAID 5 e 6 foram melhorados significativamente mas ainda são considerados instáveis. Depois que um sistema de arquivos em dispositivos múltiplos foi criado, novos dispositivos podem ser adicionados e dispositivos antigos removidos com uns poucos comandos. O btrfs exige maior envolvimento que outros sistemas de arquivos o que o torna não muito amigável para iniciantes.

Sistemas de arquivos ext4 podem ser convertidos em btrfs, o que pode ser útil para aqueles que gostariam de instalar o Gentoo em um sistema de arquivos estável e bem testado e gradualmente aumentar seus conhecimentos sobre novos sistemas de arquivos tais como o btrfs através de experimentação.

LVM

Os CDs de instalação para x86 proveem suporte para Gerenciador de Volumes Lógicos (LVM). O LVM aumenta a flexibilidade oferecida pela configuração de particionamento. As instruções de instalação abaixo focarão em partições "normais", mas mesmo assim é bom saber que o LVM também é suportado se for necessário. Visite o artigo LVM para mais detalhes. Iniciantes estejam avisados: apesar de completamente suportado LVM está fora do escopo deste guia.

Esquema de particionamento default

Até o final deste manual, o seguinte esquema de particionamento será usado como um layout simples de exemplo:

Partição Sistema de arquivo Tamanho Descrição
/dev/sda1 (bootloader) 2M Partição de boot BIOS
/dev/sda2 ext2 (ou FAT32 se UEFI está sendo usada) 128M Partição boot/Sistema EFI
/dev/sda3 (swap) 512M ou maior Partição de swap
/dev/sda4 ext4 Resto do disco Partição root

Se isso já for suficiente e o leitor optou pelo caminho do GPT, ele pode saltar imediatamente para Default: Usando parted para particionar o disco. Aqueles ainda interessados em MBR (ei, acontece!) e usando o layout de exemplo podem saltar para Alternativa: Usando fdisk para particionar o disco.

Ambos o fdisk e o parted são utilitários de particionamento. O fdisk é bem conhecido, estável e recomendado para layout de particionamento MBR enquanto o parted foi um dos primeiros utilitários de gerenciamento de dispositivos de blocos do Linux a suportar partições GPT. Aqueles que gostam da interface do fdisk podem usar o gdisk (GPT fdisk) como alternativa ao parted.

Antes das instruções para criação das partições, o primeiro conjunto de seções descreverá em mais detalhes como os esquemas de particionamento podem ser criados mencionaremos as dificuldades mais comuns.

Criando um esquema de particionamento

Quantas partições e de que tamanho?

O número de partições é altamente dependente do ambiente. Por exemplo, se há muitos usuários, é aconselhável ter o /home/ separado pois isso aumenta a segurança e torna o backup mais fácil. Se o Gentoo estiver sendo instalado para ser um pequeno servidor de email, o /var/ deve ficar separado pois todos os emails armazenados ficam no /var/. Uma boa escolha do tipo do sistema de arquivos irá maximizar o desempenho. Servidores de jogos deverão ter o /opt/ separado já que a maioria dos servidores de jogos são instalados lá. A razão é similar ao do diretório /home/: segurança e backups. Na maioria das situações, o /usr/ deve ser grande: ele não apenas irá conter a maioria das aplicações como também armazena o repositório ebuild do Gentoo (por default localizado em /var/db/repos/gentoo) que sozinho ocupa cerca de 650 MiB. Essa estimativa de espaço em disco exclui ainda os diretórios packages/ e distfiles/ que são armazenados no diretório /var/cache/ por default.

Depende muito do que o administrador pretende fazer. Partições ou volumes separados tem as seguintes vantagens:

  • Escolha o sistema de arquivos de maior desempenho para cada partição ou volume.
  • O sistema todo não ficará sem espaço se uma aplicação problemática encher todo o espaço de uma partição ou volume.
  • Se necessário, a checagem do sistema de arquivos fica com o tempo reduzido, pois várias checagens podem ser feitas em paralelo (embora essa vantagem é maior com múltiplos discos do que com múltiplas partições).
  • A segurança pode ser aumentada montando algumas partições ou volumes como somente leitura, nosuid (bits setuid são ignorados), noexec (bits de execução são ignorados) etc.

Contudo, múltiplas partições tem desvantagens também. Se não configurado corretamente, o sistema pode ficar com muito espaço livre em uma partição e nenhum em outra. Outro percalço é que partições separadas - especialmente para pontos de montagem importantes como /usr/ ou /var/ - frequentemente requerem que o administrador inicialize o sistema com um initramfs para montar a partição antes que outros scripts de inicialização executem. Esse não é sempre o caso, então os resultados podem variar.

Há também o limite de 15 partições para SCSI e SATA, a menos que sejam utilizadas etiquetas GPT.

E o espaço de swap?

Não existe um valor perfeito para a partição de swap. O propósito da partição de swap é prover armazenamento em disco ao kernel quando a memória interna (RAM) estiver acabando. Um espaço de swap permite ao kernel mover páginas de memória que provavelmente não serão necessárias tão logo para o disco (swap ou page-out), liberando memória. É claro que, se essa memória de repente for necessária, essas páginas precisam ser trazidas de volta para a memória (page-in) o que pode ser demorado (pois discos são muito lentos comparados com a memória interna).

Se o sistema não for executar aplicações que necessitem de muita memória ou se o sistema tiver uma grande quantidade de memória disponível, então provavelmente ele não vai precisar de muito espaço de swap. Porém, o espaço de swap é também usado para armazenar a memória inteira no caso de hibernação. Se o sistema for precisar de hibernação, então um espaço de swap maior será necessário, pelo menos do tamanho da memória RAM instalada no sistema.


O que é a partição de boot da BIOS?

A partição de boot da BIOS é uma partição muito pequena (de 1 a 2 MB) na qual os gerenciadores de inicialização como o GRUB2 podem gravar dados adicionais que não couberem no espaço alocado (umas poucas centenas de bytes no caso da MBR) e que não puderem ser colocados em outro lugar.

Tais partições nem sempre são necessárias mas, considerando o baixo consumo de espaço e a dificuldade que teríamos documentando a pletora de diferentes particionamentos caso não a criássemos, é recomendável criá-la de qualquer forma.

Para ficar claro, a partição de inicialização da BIOS é necessária quando um layout de partições GPT é usado com o GRUB2 em modo PC/BIOS. Ela não é necessária quando é usado modo EFI/UEFI.

Default: Usando parted para particionar o disco

Neste capítulo, o exemplo de layout de partições mencionado anteriormente será usado:

Partição Descrição
/dev/sda1 Partição de boot da BIOS
/dev/sda2 Partição de boot
/dev/sda3 Partição de swap
/dev/sda4 Partição root

Altere o layout de particionamento de acordo com suas preferências pessoais.

Visualizando o layout de particionamento atual com o parted

O programa parted oferece uma interface simples para o particionamento de discos e suporta partições bem grandes (mais de 2TB). Execute o parted no disco (em nosso exemplo, usamos /dev/sda). É recomendado solicitar ao parted para usar alinhamento de partições otimizado:

root #parted -a optimal /dev/sda
GNU Parted 2.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.

Alinhamento significa que as partições iniciam em limites bem estabelecidos do disco, assegurando que as operações no disco do nível do sistema operacional (recuperar páginas de disco) usam a menor quantidade de operações internas de disco. Partições desalinhadas podem exigir que o disco busque duas páginas em vez de uma mesmo que o sistema operacional tenha solicitado apenas uma.

Para conhecer todas as opções suportadas pelo parted, digite help e tecle Return.

Configurando a etiqueta GPT

A maioria dos discos das arquiteturas x86 e amd64 são preparados usando etiquetas msdos. Usando o parted, o comando para colocar uma etiqueta GPT no disco é mklabel gpt:

Aviso
Trocar o tipo de partição irá remover todas as partições do disco. Todos os dados do disco serão perdidos.
(parted)mklabel gpt

Para que o disco use o layout MBR, use mklabel msdos.

Removendo todas as partições usando parted

Se isto ainda não foi feito (por exemplo, através da operação com o mklabel anteriormente, ou porque o disco foi recém formatado), primeiro remova todas as partições do disco. Tecle print para ver todas as partições existentes, e rm <N> onde N é o número da partição a ser removida.

(parted)rm 2

Faça o mesmo para todas as partições que não forem necessárias. Entretanto, certifique-se de não cometer nenhum erro aqui - o parted executa as mudanças imediatamente (ao contrário do fdisk que as armazena, permitindo ao usuário "desfazer" suas mudanças antes de salvar ou saindo do fdisk).

Criando as partições

Agora o parted será usado para criar as partições com as seguintes configurações:

  • O tipo da partição. Normalmente é primária ("primary"). Se a etiqueta de partição msdos for usada, tenha em mente que não podem ser criadas mais que 4 partições primárias. Se forem necessárias mais do que 4 partições, faça uma das 4 primeiras partições como estendida ("extended") e crie partições lógicas dentro dela.
  • A localização do início da partição (que pode ser expressa em MB, GB, ...)
  • A localização do fim da partição (que pode ser expressa em MB, GB, ...)

Primeiro, diga ao parted que a unidade que iremos trabalhar é megabytes (na verdade, mebibytes, abreviado como MiB que é a notação "padrão", mas usaremos MB no texto que é muito mais comum):

(parted)unit mib

Agora crie uma partição de 2 MB que será usada pelo gerenciador de boot GRUB2 mais tarde. Use o comando mkpart para isso e informe ao parted para iniciar em 1 MB e terminar em 3 MB (criando assim uma partição de 2 MB).

(parted)mkpart primary 1 3
(parted)name 1 grub
(parted)set 1 bios_grub on
(parted)print
Model: Virtio Block Device (virtblk)
Disk /dev/sda: 20480MiB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
  
Number   Start      End      Size     File system  Name   Flags
 1       1.00MiB    3.00MiB  2.00MiB               grub   bios_grub

Faça o mesmo para a partição de boot (128 MB), partição de swap (512 MB, no exemplo) e partição root, que cobre o resto do disco (para a qual a localização do fim é marcada como -1, significando o fim do disco menos 1 MB, que é o mais distante que uma partição pode ir).

(parted)mkpart primary 3 131
(parted)name 2 boot
(parted)mkpart primary 131 643
(parted)name 3 swap
(parted)mkpart primary 643 -1
(parted)name 4 rootfs

Se usar a interface UEFI para inicializar o sistema (em vez da BIOS), marque a partição de boot como Partição de Sistema UEFI (UEFI System Partition). O parted faz isso automaticamente quando a opção "boot" é configurada em uma partição:

(parted)set 2 boot on

O resultado final se parecerá com:

(parted)print
Model: Virtio Block Device (virtblk)
Disk /dev/sda: 20480MiB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
  
Number   Start      End      Size     File system  Name   Flags
 1       1.00MiB    3.00MiB  2.00MiB               grub   bios_grub
 2       3.00MiB    131MiB   128MiB                boot   boot
 3       131MiB     643MiB   512MiB                swap
 4       643MiB     20479MiB 19836MiB              rootfs
Nota
Em uma instalação UEFI, as sinalizações de boot e esp irão aparecer na partição de boot.

Use o comando quit para sair do parted.

Alternativa: Usando fdisk para particionar o disco

Nota
Apesar das versões recentes do fdisk suportarem GPT, ele ainda mostrou ter alguns problemas com ela. As instruções dadas abaixo assumem que o layout de partições utilizado é o MBR.

As partes seguintes explicam como criar o layout de partições de exemplo usando o fdisk. O layout de partições de exemplo foi mostrada anteriormente:

Partição Descrição
/dev/sda1 Partição de boot da BIOS
/dev/sda2 Partição de boot
/dev/sda3 Partição de swap
/dev/sda4 Partição de root

Altere o layout das partições de acordo com suas preferências pessoais.

Visualizando o layout de partições atual

O fdisk é uma ferramenta popular e poderosa para dividir um disco em partições. Dispare o fdisk no disco desejado (em nosso exemplo usamos o /dev/sda):

root #fdisk /dev/sda
Nota
Para usar o suporte GPT, adicione -t gpt. Recomenda-se prestar muita atenção à saída do fdisk no caso de novas versões do fdisk alterarem seu comportamento padrão de usar por default o MBR. O restante destas instruções assume um layout MBR.

Use a tecla p para exibir a configuração atual das partições do disco:

Command (m for help):p
Disk /dev/sda: 240 heads, 63 sectors, 2184 cylinders
Units = cylinders of 15120 * 512 bytes
  
   Device Boot    Start       End    Blocks   Id  System
/dev/sda1   *         1        14    105808+  83  Linux
/dev/sda2            15        49    264600   82  Linux swap
/dev/sda3            50        70    158760   83  Linux
/dev/sda4            71      2184  15981840    5  Extended
/dev/sda5            71       209   1050808+  83  Linux
/dev/sda6           210       348   1050808+  83  Linux
/dev/sda7           349       626   2101648+  83  Linux
/dev/sda8           627       904   2101648+  83  Linux
/dev/sda9           905      2184   9676768+  83  Linux

Esse disco em particular foi configurado para abrigar sete sistemas de arquivos Linux (cada uma com uma partição correspondente listada como "Linux) bem como uma partição de swap (listada como "Linux swap").

Removendo todas as partições com o fdisk

Primeiro remova todas as partições existentes do disco. Tecle d para apagar uma partição. Por exemplo, para apagar a partição /dev/sda1:

Command (m for help):d
Partition number (1-4): 1

A partição foi marcada para ser removida. Ela não vai aparecer na lista de partições (usando a tecla p), mas ela não será removida até que as mudanças sejam gravadas. Isso permite que o usuário aborte a operação no caso de algum erro - nesse caso, digite q imediatamente e tecle Enter e a partição não será apagada.

Tecle p repetidamente para ver a lista das partições e d e o número da partição para apagá-la. No final, a tabela de partições estará vazia:

Command (m for help):p
Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
  
Device Boot    Start       End    Blocks   Id  System

Agora que a tabela de partições na memória está vazia, estamos prontos para criar as partições.

Criando a partição de boot da BIOS

Primeiro crie uma partição de boot da BIOS bem pequena. Tecle n para criar uma nova partição, e p para selecionar partição primária, seguida da tecla 1 para selecionar a primeira partição primária. Quando perguntado pelo primeiro setor, certifique-se que comece em 2048 (o que é necessário para o gerenciador de boot) e tecle Enter. Quando perguntado pelo último setor, digite +2M para criar uma partição de 2 Mbytes de tamanho:

Nota
O início do setor em 2048 é uma segurança no caso do gerenciador de boot não detectar esta partição para seu uso.
Command (m for help):n
Command action
  e   extended
  p   primary partition (1-4)
p
Partition number (1-4): 1
First sector (64-10486533532, default 64): 2048
Last sector, +sectors +size{M,K,G} (4096-10486533532, default 10486533532): +2M

Marque a partição para a UEFI:

Command (m for help):t
Selected partition 1
Hex code (type L to list codes): 4
Changed system type of partition 1 to 4 (BIOS boot)
Nota
Usar UEFI com layout de partições MBR é desencorajado. Se for usado um sistema capaz de trabalhar com UEFI, use o layout GPT.

Criando a partição de boot

Agora crie uma pequena partição de boot. Tecle n para criar uma nova partição, e p para selecionar partição primária, seguida da tecla 2 para selecionar a segunda partição primária. Quando perguntado pelo primeiro setor, aceite o valor default teclando Enter. Quando perguntado pelo último setor, digite +128M para criar uma partição de 128 Mbytes de tamanho:

Command (m for help):n
Command action
  e   extended
  p   primary partition (1-4)
p
Partition number (1-4): 2
First sector (5198-10486533532, default 5198): (Hit enter)
Last sector, +sectors +size{M,K,G} (4096-10486533532, default 10486533532): +128M

Agora, pressionando p e Enter, a seguinte saída com as partições é mostrada:

Command (m for help):p
Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
  
   Device Boot    Start       End    Blocks   Id  System
/dev/sda1             1         3      5198+  ef  EFI (FAT-12/16/32)
/dev/sda2             3        14    105808+  83  Linux

Tecle a para alternar a sinalização de boot de uma partição e selecione 2. Depois de pressionar p novamente, note que um * é mostrado na coluna "Boot".

Criando a partição de swap

Para criar uma partição de swap tecle n para criar uma nova partição, e p para o fdisk criar uma partição primária. Então digite 3 para criar a terceira partição primária, /dev/sda3. Quando perguntado pelo primeiro setor, tecle Enter. Quando perguntado pelo último setor, digite +512M (ou qualquer outro tamanho necessário para área de swap) para criar uma partição de 512 MB de tamanho:

Depois de tudo feito, digite t para configurar o tipo da partição, 3 para selecionar a partição recém criada e então digite "82" para configurar o tipo da partição para "Linux Swap".

Criando a partição de root

Finalmente, para criar a partição root, tecle n para criar uma nova partição, e p para o fdisk criar uma partição primária. Então digite 4 para criar a quarta partição primária, /dev/sda4. Quando perguntado pelo primeiro setor, tecle Enter. Quando perguntado pelo último setor, tecle Enter para criar uma partição que ocupe o restante do espaço disponível do disco. Depois de completar esses passos, teclando p deve ser mostrada uma tabela de partições similar a esta:

Command (m for help):p
Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
  
   Device Boot    Start       End    Blocks   Id  System
/dev/sda1             1         3      5198+  ef  EFI (FAT-12/16/32)
/dev/sda2   *         3        14    105808+  83  Linux
/dev/sda3            15        81    506520   82  Linux swap
/dev/sda4            82      3876  28690200   83  Linux

Gravando o layout de partições

Para gravar o layout de partições e sair do fdisk, digite w.

Command (m for help):w

Com as partições criadas, é hora de criar sistemas de arquivos nelas.