Gentoo Logo

1.  Introdução a dispositivos de bloco

Dispositivos de bloco

Iremos estudar os aspectos de manuseio de discos do Gentoo Linux e do Linux em geral, incluindo sistemas de arquivos de Linux, partições e dispositivos de bloco. Uma vez que você estiver familiar com o funcionamento de discos e sistemas de arquivos, iniciaremos o processo de configuração de partições e sistemas de arquivos para sua instalação do Gentoo Linux.

Para começar, iremos introduzir os dispositivos de bloco. O dispositivo de bloco mais famoso é provavelmente aquele que representa o primeiro disco rígido SCSI em um sistema Linux, chamado de /dev/sda.

Os dispositivos de bloco acima representam uma interface abstrata para o disco. Programas de usuário podem usar os dispositivos de bloco para interagir com seu disco sem preocupação se eles são IDE, SCSI ou outra coisa. O programa pode simplesmente classificar o espaço de armazenagem no disco como um monte de blocos de 512 bytes contíguos acessíveis aleatoriamente.

Slices (fatias)

Embora seja teoricamente possível usar um disco inteiro para armazenar seu sistema Linux, isto é quase nunca feito na prática. Ao invés disso, dispositivos de bloco de discos são divididos em dispositivos de bloco menores e mais fáceis de manusear. Em sistemas Alpha, são chamados de slices (fatias).

1.  Desenhando um esquema de partições

Esquema de particionamento padrão

Como exemplo iremos usar o seguinte padrão de slices:

Slice Descrição
/dev/sda1 Slice de swap
/dev/sda2 Slice raiz (root)
/dev/sda3 Disco inteiro (necessário)

Se você quiser saber o tamanho que uma partição deve ter, ou mesmo quantas partições (ou volumes) você precisa, leia mais. Caso contrário, continue agora com Usando o fdisk para particionar seu disco (só SRM) ou Usando o fdisk para particionar seu disco (só ARC/AlphaBIOS).

Quantas e de que tamanho?

O número de partições depende muito de seu ambiente. Por exemplo, se você tem muitos usuários, você provavelmente deve ter seu /home separado para aumentar a segurança e tornar backups mais fáceis. Se você estiver instalando o Gentoo para funcionar como um servidor de e-mails, seu /var deve ser separado, uma vez que todos e-mails são gravados dentro de /var. Uma boa escolha de sistema de arquivos irá maximizar sua performance. Servidores de jogos têm uma partição /opt separada, uma vez que a maior parte de servidores de jogos são instalados lá. A razão é semelhante à do /home: segurança e backups. Você deve manter seu /usr grande: não só irá conter a maior parte das aplicações, a árvore do Portage sozinha toma em torno de 500 Mbytes, excluindo as várias fontes que são gravadas nela.

Como você pode ver, muito depende do que você quer fazer. Partições ou volumes separados têm as seguintes vantagens:

  • Você pode escolher o sistema de arquivos de melhor performance para cada partição ou volume
  • Seu sistema inteiro não irá ficar sem espaço se uma ferramenta defunta estiver continuamente escrevendo arquivos em uma partição ou volume
  • Se necessárias, verificações de sistemas de arquivos têm seu tempo reduzido, já que verificações múltiplas podem ser feitas em paralelo (embora esta vantagem seja maior com vários discos que com várias partições)
  • A segurança pode ser melhorada ao montar algumas partições ou volumes como somente-leitura, nosuid (bits de setuid são ignorados), noexec (bits executáveis são ignorados), etc...

No entanto, partições múltiplas têm uma grande desvantagem: se não forem configuradas apropriadamente, você pode acabar com um sistema com muito espaço livre em uma partição e nenhum em outra.

1.  Usando o fdisk para particionar seu disco (só SRM)

As partes seguintes explicam como criar o modelo de slices descrito anteriormente:

Slice Descrição
/dev/sda1 Slice de swap
/dev/sda2 Slice raiz (root)
/dev/sda3 Disco inteiro (necessário)

Adapte sua configuração de slices de acordo com suas preferências.

Identificando discos disponíveis

Para descobrir que discos você tem funcionando, use os seguintes comandos:

Listagem de código 1.1: Identificando discos disponíveis

# dmesg | grep 'drive$'        (Para discos IDE)
# dmesg | grep 'scsi'          (Para discos SCSI)

Deste resultado você deverá poder ver que discos foram detectados e suas respectivas entradas de /dev. Nas partes seguintes iremos presumir que o disco é um disco SCSI em /dev/sda.

Inicie agora o fdisk:

Listagem de código 1.1: Iniciando o fdisk

# fdisk /dev/sda

Apagando todos slices

Se seu disco rígido estiver completamente em branco, então você irá ter que criar um BSD disklabel primeiro.

Listagem de código 1.1: Criando um BSD disklabel

Command (m for help): b
/dev/sda contains no disklabel.
Do you want to create a disklabel? (y/n) y
Vários dados de disco irão aparecer aqui
3 partitions:
#       start       end      size     fstype   [fsize bsize   cpg]                                    
  c:        1      5290*     5289*    unused        0     0

Começamos apagando todas slices exceto a slice-'c' (necessária para usar BSD disklabels). O seguinte mostra como apagar uma slice (no exemplo usaremos 'a'). Repita o processo para apagar todas outras slices (novamente, exceto a slice-'c').

Use p para ver todas slices existentes. d é usado para apagar uma slice.

Listagem de código 1.1: Apagando uma slice

BSD disklabel command (m for help): p

8 partitions:
#       start       end      size     fstype   [fsize bsize   cpg]                                    
  a:        1       235*      234*    4.2BSD     1024  8192    16
  b:      235*      469*      234*      swap
  c:        1      5290*     5289*    unused        0     0
  d:      469*     2076*     1607*    unused        0     0
  e:     2076*     3683*     1607*    unused        0     0
  f:     3683*     5290*     1607*    unused        0     0
  g:      469*     1749*     1280     4.2BSD     1024  8192    16
  h:     1749*     5290*     3541*    unused        0     0

BSD disklabel command (m for help): d
Partition (a-h): a

Depois de repetir o processo para todas slices, uma listagem deve mostrar algo parecido com o seguinte:

Listagem de código 1.1: Vendo um esquema vazio

BSD disklabel command (m for help): p

3 partitions:
#       start       end      size     fstype   [fsize bsize   cpg]                                    
  c:        1      5290*     5289*    unused        0     0

Criando uma slice de swap

Em sistemas baseados em Alpha, você não precisa de uma partição separada de inicialização. No entanto, o primeiro cilindro não pode ser usado uma vez que a imagem do aboot será colocada lá.

Iremos criar uma simples slice de swap iniciando no terceiro cilindro, com um total de 1 GB. Use n para criar uma nova slice. Depois de criar a slice, iremos mudar seu tipo para 1 (um), que significa swap.

Listagem de código 1.1: Criando a slice de swap

BSD disklabel command (m for help): n
Partition (a-p): a
First cylinder (1-5290, default 1): 3
Last cylinder or +size or +sizeM or +sizeK (3-5290, default 5290): +1024M

BSD disklabel command (m for help): t
Partition (a-c): a
Hex code (type L to list codes): 1

Depois destes passos você deverá ter algo parecido com o seguinte:

Listagem de código 1.1: Arranjo de slices depois de criar o slice de swap

BSD disklabel command (m for help): p

3 partitions:
#       start       end      size     fstype   [fsize bsize   cpg]                                    
  a:        3      1003      1001       swap
  c:        1      5290*     5289*    unused        0     0

Criando o slice raiz (root)

Agora iremos criar a slice raiz (root), iniciando a partir do primeiro cilindro depois da slice de swap. Use o comando p para ver onde a slice de swap termina. Em nosso exemplo, isto é em 1003, fazendo a partição raiz (root) começar em 1004.

Outro problema é que atualmente existe um bug no fdisk que faz ele pensar que o número de cilindros é um a mais que o número de cilindros reais. Em outras palavras, quando for pedido o último cilindro, subtraia um do número do cilindro (neste exemplo: 5290).

Quando a partição for criada, mudamos o tipo para 8, para ext2.

Listagem de código 1.1: Criando a slice raiz (root)

D disklabel command (m for help): n
Partition (a-p): b
First cylinder (1-5290, default 1): 1004
Last cylinder or +size or +sizeM or +sizeK (1004-5290, default 5290): 5289

BSD disklabel command (m for help): t
Partition (a-c): b
Hex code (type L to list codes): 8

Seu arranjo de slices deve agora parecer com o seguinte:

Listagem de código 1.1: Vendo o arranjo de slices

BSD disklabel command (m for help): p

3 partitions:
#       start       end      size     fstype   [fsize bsize   cpg]                                    
  a:        3      1003      1001       swap
  b:     1004      5289      4286       ext2
  c:        1      5290*     5289*    unused        0     0

Salve o arranjo de slices e saia

Salve o fdisk digitando w. Isto irá também salvar seu arranjo de slices.

Listagem de código 1.1: Salve e saia do fdisk

Command (m for help): w

Agora que suas slices foram criadas, você pode continuar com Criando sistemas de arquivos.

1.  Usando o fdisk para particionar seu disco (ARC/AlphaBIOS somente)

As partes seguintes explicam como particionar seu disco com um arranjo parecido com o descrito acima:

Partição Descrição
/dev/sda1 Partição de inicialização (boot)
/dev/sda2 Partição de swap
/dev/sda3 Partição raiz (root)

Mude seu arranjo de partições de acordo com sua preferência.

Identificando discos disponíveis

Para descobrir que discos você tem funcionando, use os seguintes comandos:

Listagem de código 1.1: Identificando discos disponíveis

# dmesg | grep 'drive$'        (Para discos IDE)
# dmesg | grep 'scsi'          (Para discos SCSI)

Deste resultado você deverá poder ver que discos foram detectados e suas respectivas entradas de /dev. Nas partes seguintes iremos presumir que o disco é um disco SCSI em /dev/sda.

Agora inicie o fdisk:

Listagem de código 1.1: Iniciando o fdisk

# fdisk /dev/sda

Apagando todas partições

Se seu disco rígido estiver em branco, então você terá que criar um DOS disklabel.

Listagem de código 1.1: Criando um DOS disklabel

Command (m for help): o
Building a new DOS disklabel.

Iremos começar apagando todas partições. O seguinte mostra como apagar uma partição (no exemplo usamos '1'). Repita o processo para apagar todas outras partições.

Use p para ver todas partições existentes. d é usado para apagar uma partição.

Listagem de código 1.1: Apagando uma partição

command (m for help): p

Disk /dev/sda: 9150 MB, 9150996480 bytes
64 heads, 32 sectors/track, 8727 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1         478      489456   83  Linux
/dev/sda2             479        8727     8446976    5  Extended
/dev/sda5             479        1433      977904   83  Linux Swap
/dev/sda6            1434        8727     7469040   83  Linux

command (m for help): d
Partition number (1-6): 1

Criando uma partição de inicialização (boot)

Em sistemas Alpha que usam o MILO para iniciar, iremos criar uma pequena partição de inicialização vfat.

Listagem de código 1.1: Criando a partição de inicialização

Command (m for help): n
Command action
  e   extended
  p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-8727, default 1): 1
Last cylinder or +size or +sizeM or +sizeK (1-8727, default 8727): +16M

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 6
Changed system type of partition 1 to 6 (FAT16)

Criando a partição de swap

Iremos criar uma partição de swap iniciando no terceiro cilindro, com um tamanho total de 1 GB. Use n para criar novas partições.

Listagem de código 1.1: Criando a partição de swap

Command (m for help): n
Command action
  e   extended
  p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (17-8727, default 17): 17
Last cylinder or +size or +sizeM or +sizeK (17-8727, default 8727): +1000M

Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): 82
Changed system type of partition 2 to 82 (Linux swap)

Depois destes passos você deve ter um arranjo parecido com o seguinte:

Listagem de código 1.1: Listagem de partições depois de criar uma partição de swap

Command (m for help): p

Disk /dev/sda: 9150 MB, 9150996480 bytes
64 heads, 32 sectors/track, 8727 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          16       16368    6  FAT16
/dev/sda2              17         971      977920   82  Linux swap

Criando a partição raiz (root)

Iremos criar a partição de raiz (root) agora. Novamente, simplesmente use o comando n.

Listagem de código 1.1: Criando a partição de raiz (root)

Command (m for help): n
Command action
  e   extended
  p   primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (972-8727, default 972): 972
Last cylinder or +size or +sizeM or +sizeK (972-8727, default 8727): 8727

Depois destes passos você deve ter um arranjo parecido com o seguinte:

Listagem de código 1.1: Listagem de partições depois de criar uma partição raiz (root)

Command (m for help): p

Disk /dev/sda: 9150 MB, 9150996480 bytes
64 heads, 32 sectors/track, 8727 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          16       16368    6  FAT16
/dev/sda2              17         971      977920   82  Linux swap
/dev/sda3             972        8727     7942144   83  Linux

Salve o arranjo de partições e saia

Salve o fdisk digitando w. Isto irá também salvar seu arranjo de partições.

Listagem de código 1.1: Salve e saia do fdisk

Command (m for help): w

Agora que suas partições foram criadas, você pode continuar com Criando sistemas de arquivos.

1.  Criando sistemas de arquivos

Introdução

Agora que suas partições foram criadas, está na hora de colocar um sistema de arquivos nelas. Se você não se importa em escolher o sistema de arquivos e está contente com o que usamos como padrão neste manual, continue com Aplicando um sistema de arquivos a uma partição. Caso contrário, leia mais para aprender sobre os sistemas de arquivos disponíveis...

Sistemas de arquivos?

Vários sistemas de arquivos estão disponíveis, a maior parte deles estáveis na arquitetura Alpha.

O ext2 é o sistema mais testado e fiel ao Linux, mas não tem jornal de meta-dados, o que significa que verificações rotineiras de sistemas de arquivo ext2 podem levar bastante tempo. Existe agora uma razoável seleção de sistemas de arquivos de nova geração com jornal que podem ter sua consistência verificada rapidamente e que são geralmente preferíveis aos seus respectivos sistemas sem jornal. Sistemas de arquivo com jornal previnem longas esperas quando você carrega seu sistema e seu sistema de arquivos está em um estado inconsistente.

O ext3 é a versão com jornal do sistema de arquivos ext2, fornecendo jornal de meta-dados para recuperação rápida, fora outros modos de jornal aprimorados como dados completos e dados ordenados. O ext3 é um sistema de arquivos muito bom e confiável. Tem uma opção adicional de catalogar hashed b-trees que permite alta performance em quase todas situações. Você pode ativar este catálogo adicionando -O dir_index ao comando mke2fs. Para resumir, o ext3 é um excelente sistema de arquivos.

O ReiserFS é sistema de arquivos baseado em B*-trees que tem uma performance em geral muito boa e muito superior a tanto o ext2 quanto o ext3 na hora de lidar com arquivos pequenos (de menos de 4k), freqüentemente com um fator de 10x-15x. O ReiserFS também escala extremamente bem e tem jornal de meta-dados. A partir do kernel 2.4.18+, o ReiserFS está sólido e pronto para ser usado tanto como um sistema de arquivos genérico quanto para casos extremos como a criação de sistemas de arquivos enormes, uso de muitos arquivos pequenos, arquivos muito grandes e diretórios contendo dezenas de milhares de arquivos.

O XFS é um sistema de arquivos com jornal de meta-dados que vem com um robusto conjunto de funções e é otimizado para escalabilidade. Só recomendamos usar este sistema de arquivos em sistemas rodando Linux com equipamento SCSI de ponta e/ou armazenamento em canais de fibra e fonte de energia sem interrupção. Pelo fato de o XFS criar cachês agressivamente de dados em uso na memória RAM, programas mal desenhados (que não tomam precauções na hora de escrever os arquivos em disco, e existem muitos deles) podem perder uma grande quantidade de dados se o sistema for desligado sem aviso.

O JFS é o sistema de arquivos com jornal de alta performance da IBM. Recentemente tornou-se pronto para uso em produção e não há experiência suficiente para comentar a favor ou contra sua estabilidade geral neste ponto.

Aplicando um sistema de arquivos a uma partição

Para criar um sistema de arquivos em uma partição ou volume, existem ferramentas disponíveis para cada sistema de arquivos possível:

Sistema de arquivos Comando de criação
ext2 mke2fs
ext3 mke2fs -j
reiserfs mkreiserfs
xfs mkfs.xfs
jfs mkfs.jfs

Por exemplo, para ter a partição raiz (root) (/dev/sda2 em nosso exemplo) em ext3, você usaria:

Listagem de código 1.1: Aplicando um sistema de arquivos a uma partição

# mke2fs -j /dev/sda2

Agora crie os sistemas de arquivos em suas partições recém-criadas (ou volumes lógicos).

Ativando a partição de swap

mkswap é o comando usado para iniciar partições de swap:

Listagem de código 1.1: Criando uma assinatura de swap

# mkswap /dev/sda1

Para ativar a partição de swap, use swapon:

Listagem de código 1.1: Ativando a partição de swap

# swapon /dev/sda1

Crie e ative o swap com os comandos mencionados acima.

1.  Montando

Agora que suas partições foram iniciadas e possuem um sistema de arquivos, está na hora de montá-las. Use o comando mount. Não se esqueça de criar os diretórios necessários de montagem para cada partição que você criou. Como exemplo montamos a partição raiz (root) e de inicialização (boot):

Listagem de código 1.1: Montando partições

# mount /dev/sda2 /mnt/gentoo

Nota: Se você quiser que seu /tmp resida em uma partição separada, certifique-se de mudar suas permissões depois de montá-la: chmod 1777 /mnt/gentoo/tmp. O mesmo vale para /var/tmp.

Agora iremos montar o sistema de arquivos proc (uma interface virtual com o kernel) em /proc. Porém, primeiro iremos colocar nossos arquivos nas partições.

Continue com (Instalando os arquivos de instalação do Gentoo).

Atualizado 25 de agosto de 2005

A versão original deste documento foi atualizada em 17 de outubro de 2011

Donate to support our development efforts.

Copyright 2001-2012 Gentoo Foundation, Inc. Questions, Comments? Contact us.