|
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$'
# dmesg | grep '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
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$'
# dmesg | grep '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).
|