|
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.
Partições
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. Eles são chamados de partições.
1.
Desenhando um esquema de particionamento
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. Também existe um limite de 15 partições
para SCSI e SATA.
1.
Usando o fdisk no MIPS para particionar o seu disco
Máquinas SGI: Criando um SGI Disk Label
Todos discos em um sistema SGI precisam de um SGI Disk Label, que serve
uma função semelhante à das disklabels da Sun e MS-DOS -- gravar informações
sobre as partições do disco. Duas partições especiais são necessárias para criar
um novo SGI Disk Label:
-
SGI Volume Header (nona partição): Esta partição é importante. Ela é
onde o gerenciador de inicialização irá residir e, em alguns casos, também
conterá imagens de kernel.
-
SGI Volume (décima-primeira partição): Esta partição tem um propósito
semelhante à terceira partição do Sun Disklabel que toma "o disco inteiro".
Esta partição toma todo o disco, e não deve ser tocada. Ela não tem nenhum
propósito especial fora ajudar o PROM de maneiras não documentadas (ou
usadas pelo IRIX de algum jeito).
Aviso:
O SGI Volume Header deve começar no cilindro 0. Se você não fizer isto
não poderá carregar a partir do disco.
|
O exemplo seguinte é parte de uma sessão de fdisk. Leia e adapte conforme
suas necessidades...
Listagem de código 1.1: Criando um SGI Disklabel |
# fdisk /dev/sda
Command (m for help): x
Expert command (m for help): m
Command action
b move beginning of data in a partition
c change number of cylinders
d print the raw data in the partition table
e list extended partitions
f fix partition order
g create an IRIX (SGI) partition table
h change number of heads
m print this menu
p print the partition table
q quit without saving changes
r return to main menu
s change number of sectors/track
v verify the partition table
w write table to disk and exit
Expert command (m for help): g
Building a new SGI disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content will be unrecoverably lost.
Expert command (m for help): r
Command (m for help): p
Disk /dev/sda (SGI disk label): 64 heads, 32 sectors, 17482 cylinders
Units = cylinders of 2048 * 512 bytes
----- partitions -----
Pt# Device Info Start End Sectors Id System
9: /dev/sda1 0 4 10240 0 SGI volhdr
11: /dev/sda2 0 17481 35803136 6 SGI volume
----- Bootinfo -----
Bootfile: /unix
----- Directory Entries -----
Command (m for help):
|
Nota:
Se seu disco não tiver um SGI Disklabel existente, então o fdisk não irá
permitir a criação de uma label nova. Existem dois jeitos de contornar o
problema. Um é criar uma disklabel da Sun ou do MS-DOS, salvar as mudanças em
disco, e reiniciar o fdisk. O segundo é sobre-escrever a tabela de partições com
dados de zero com o seguinte comando: dd if=/dev/zero of=/dev/sda bs=512
count=1.
|
Deixando o cabeçalho de volume SGI do tamanho correto
Importante:
Este passo é normalmente necessário, devido a um bug no fdisk. Por algum
motivo, o cabeçalho de volume não é criado corretamente, e o resultado final é
que começa e termina no cilindro 0. Isto impede que múltiplas partições sejam
criadas. Pra contornar o problema... continue lendo.
|
Agora que uma Disklabel de SGI foi criada, as partições podem ser definidas. No
exemplo acima, já existem duas partições definidas para você, Elas são as
partições especiais mencionadas acima e não devem normalmente ser alteradas.
No entanto, para instalar o Gentoo, nós iremos carregar um gerenciador de
inicialização e possivelmente imagens de kernel (dependendo do tipo de sistema)
diretamente no cabeçalho de volume. O cabeçalho de volume pode ter até
oito imagens de qualquer tamanho, com cada imagem permitindo nomes de
oito caracteres.
O processo de tornar o cabeçalho de volume maior não é exatamente simples;
existe um pouco de manha. Não é possível simplesmente apagar e re-adicionar o
volume por causa de um comportamento estranho do fdisk. No exemplo fornecido
abaixo, nós iremos criar um cabeçalho de volume de 50 MB junto com uma partição
de /boot de 50MB. O esquema real de seu disco pode variar, mas isto é apenas
para propósitos ilustrativos.
Listagem de código 1.1: Redimensionando o cabeçalho de volume SGI corretamente |
Command (m for help): n
Partition number (1-16): 1
First cylinder (5-8682, default 5): 51
Last cylinder (51-8682, default 8682): 101
Command (m for help): d
Partition number (1-16): 9
Command (m for help): n
Partition number (1-16): 9
First cylinder (0-50, default 0): 0
Last cylinder (0-50, default 50): 50
|
Se você não tiver certeza de como usar o fdisk leia abaixo as instruções
de particionamento para Cobalts. Os conceitos são exatamente iguais -- apenas
lembre-se de deixar as partições de cabeçalho de volume e disco inteiro
sozinhas.
Uma vez feito isso, você pode criar o resto de suas partições como desejar.
Depois que todas suas partições estiverem prontas, certifique-se de mudar a ID
de sua partição de swap para 82, que é Linux Swap. Por padrão, será
83, Linux Native.
Agora que suas partições foram criadas, você pode continuar com Criando sistemas de arquivos.
Máquinas Cobalt: Particionando seu disco
Em máquinas Cobalt, o BOOTROM espera ver um MBR de MS-DOS, então o
particionamento do drive é relativamente simples -- na verdade, é feito da mesma
maneira que você faria em uma máquina Intel x86. Todavia, existem algumas
coisas que você deve ter em mente.
-
O firmware do Cobalt irá esperar que /dev/hda1 seja uma
partição de Linux formatada com EXT2 Revision 0. Partições EXT2
Revision 1 NÃO IRÃO FUNCIONAR! (O BOOTROM do Cobalt só entende EXT2r0)
-
A partição dita acima deve conter uma imagem ELF gzip-ada,
vmlinux.gz na raiz da partição, que carrega como o kernel
Por este motivo, eu recomendo criar uma partição /boot de ~20MB
/boot formatada com EXT2r0 na qual você pode instalar o CoLo &
seus kernéis. Isto permite que você rode um sistema de arquivos moderno (EXT3 ou
ReiserFS) para seu sistema de arquivos raiz.
Irei presumir que você criou /dev/hda1 para montar mais tarde como
uma partição /boot. Se você quiser que esta seja a partição
/, você precisará lembrar-se das expectativas do PROM.
Continuando... Para criar as partições você digita fdisk /dev/hda no
prompt. Os comandos principais de que você precisa saber são os seguintes:
-
o: Apagar antiga tabela de partições, iniciando com uma tabela de
partições MS-DOS vazia
-
n: Nova partição
-
t: Mudar tipo de partição
- Use tipo 82 para swap de Linux, 83 para sistema de
arquivos de Linux
-
d: Apagar uma partição
-
p: Mostrar (print) tabela de partições
-
q: Sair -- deixando a antiga tabela de partições como está.
-
w: Sair -- escrevendo a tabela de partições no processo.
Listagem de código 1.1: Particionando o disco |
# fdisk /dev/hda
The number of cylinders for this disk is set to 19870.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): o
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.
The number of cylinders for this disk is set to 19870.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): p
Disk /dev/hda: 10.2 GB, 10254827520 bytes
16 heads, 63 sectors/track, 19870 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Device Boot Start End Blocks Id System
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-19870, default 1):
Last cylinder or +size or +sizeM or +sizeK (1-19870, default 19870): +20M
Command (m for help): p
Disk /dev/hda: 10.2 GB, 10254827520 bytes
16 heads, 63 sectors/track, 19870 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Device Boot Start End Blocks Id System
/dev/hda1 1 40 20128+ 83 Linux
Command (m for help): n
Command action
e extended
p primary partition (1-4)
e
Partition number (1-4): 2
First cylinder (41-19870, default 41):
Using default value 41
Last cylinder or +size or +sizeM or +sizeK (41-19870, default 19870):
Using default value 19870
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (41-19870, default 41):<Aperte ENTER>
Using default value 41
Last cylinder or +size or +sizeM or +sizeK (41-19870, default 19870): +500M
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (17294-19870, default 17294): <Aperte ENTER>
Using default value 17294
Last cylinder or +size or +sizeM or +sizeK (1011-19870, default 19870): <Aperte ENTER>
Using default value 19870
Command (m for help): p
Disk /dev/hda: 10.2 GB, 10254827520 bytes
16 heads, 63 sectors/track, 19870 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Device Boot Start End Blocks ID System
/dev/hda1 1 21 10552+ 83 Linux
/dev/hda2 22 19870 10003896 5 Extended
/dev/hda5 22 1037 512032+ 83 Linux
/dev/hda6 1038 5101 2048224+ 83 Linux
/dev/hda7 5102 9165 2048224+ 83 Linux
/dev/hda8 9166 13229 2048224+ 83 Linux
/dev/hda9 13230 17293 2048224+ 83 Linux
/dev/hda10 17294 19870 1298776+ 83 Linux
Command (m for help): t
Partition number (1-10): 10
Hex code (type L to list codes): 82
Changed system type of partition 10 to 82 (Linux swap)
Command (m for help): p
Disk /dev/hda: 10.2 GB, 10254827520 bytes
16 heads, 63 sectors/track, 19870 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Device Boot Start End Blocks ID System
/dev/hda1 1 21 10552+ 83 Linux
/dev/hda2 22 19870 10003896 5 Extended
/dev/hda5 22 1037 512032+ 83 Linux
/dev/hda6 1038 5101 2048224+ 83 Linux
/dev/hda7 5102 9165 2048224+ 83 Linux
/dev/hda8 9166 13229 2048224+ 83 Linux
/dev/hda9 13230 17293 2048224+ 83 Linux
/dev/hda10 17294 19870 1298776+ 82 Linux Swap
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
#
|
E isso é tudo que há para fazer. Você deve seguir agora para o próximo estágio:
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. ReiserFS, EXT2 e EXT3 estão
estáveis nas arquiteturas MIPS, os outros são experimentais.
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 de inicialização (boot) (/dev/sda1
em nosso exemplo) em ext2 e a partição de root (/dev/sda3 em nosso
exemplo) em ext3 (como em nosso exemplo), você faria:
Listagem de código 1.1: Aplicando um sistema de arquivos a uma partição |
# mke2fs /dev/sda1
# mke2fs -j /dev/sda3
|
Agora crie os sistemas de arquivos em suas partições recém-criadas (ou volumes
lógicos).
Aviso:
Se você estiver instalando em um servidor Cobalt, lembre-se de que
/dev/hda1 DEVE ser do tipo EXT2 revision 0; Qualquer outro
(como EXT2 revision 1, EXT3, ReiserFS, XFS, JFS e outros) NÃO IRÁ
FUNCIONAR! Você pode formatar a partição usando o comando: mke2fs -r 0
/dev/hda1.
|
Aviso:
Também, saiba que o arcboot não é capaz de ler outros sistemas de arquivos fora
EXT2, EXT3 e ISO9660 (versões recentes). Por este motivo, /boot em
máquinas SGI devem também residir em uma partição EXT2 ou EXT3.
|
Ativando a partição de swap
mkswap é o comando usado para criar e inicializar partições de swap:
Listagem de código 1.1: Criando uma assinatura de swap |
# mkswap /dev/sda2
|
Para ativar a partição de swap, use swapon:
Listagem de código 1.1: Ativando a partição de swap |
# swapon /dev/sda2
|
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/sda3 /mnt/gentoo
# mkdir /mnt/gentoo/boot
# mount /dev/sda1 /mnt/gentoo/boot
|
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).
|