You are on page 1of 19

04/10/12 Fundamentos do sistema Linux: discos e partições [Artigo

]
1/19 www.v iv aolinux.com.br/artigos/impressora.php?codigo=4858
Fundamentos do sistema Linux: discos e partições
Autor: Davidson Rodrigues Paulo <davidsonpaulo at gmail.com>
Data: 18/04/2006
Introdução
Um computador não tem muita utilidade se não puder armazenar os dados que processa para consulta
posterior.
O principal dispositivo de armazenamento do computador é o disco rígido, mas ainda temos outros
dispositivos de disco como disquetes, unidades de CD, DVD, Zip, entre outros. A forma como o sistema
operacional trabalha com os discos é algo vital para a eficácia do sistema e segurança dos dados.
Neste artigo veremos como o GNU/Linux trabalha com discos, além de ver conceito de partições, sistemas
de arquivos, bem como os principais programas para trabalhar com discos e partições.
Tipos de disco
Existem vários tipos de unidades de disco, utilizadas para armazenamento de dados. No GNU/Linux, elas
são referenciadas de uma forma bastante particular, através de nomes de arquivos do diretório /dev/.
Discos IDE: os discos IDE são os mais comuns, presentes na maioria dos computadores. Essas
unidades podem ser HD's, unidades de CD-ROM, CD-RW e DVD's. No GNU/Linux, elas são
identifacadas como /dev/hdxy, onde "x" é a letra que representa o número do disco, e "y" é o número
da partição. No caso dos HD's. CD-ROM's, CD-RW's e DVD's não têm partições, portanto são
identificados apenas como /dev/hdx, sendo "x" a letra que representa o número do disco;
Discos SCSI: os discos SCSI são discos de alto desempenho, utilizados em servidores onde a
velocidade na leitura e gravação de dados é de suma importância. Essas unidades podem ser HD's,
unidades de CD-RW e gravadoras de DVD. Essas unidades são referenciadas como /dev/sdxy,
sendo "x" a letra que indica o número do disco e "y" o número da partição, no caso dos HD's. CD-
RW's e gravadoras de DVD não têm partições, sendo identificadas apenas como /dev/sdx, sendo "x"
a letra que representa o número do disco;
Unidades de Disquete: também conhecidas como "floppy", as unidades de disquete ainda são
utilizadas, embora venham sendo abandonadas gradualmente, graças ao barateamento das unidades
de CD-RW e suas mídias. Essas unidades são referenciadas como /dev/fdx, onde "x" é o número da
unidade de disquete, começando por 0.
04/10/12 Fundamentos do sistema Linux: discos e partições [Artigo]
2/19 www.v iv aolinux.com.br/artigos/impressora.php?codigo=4858
Partições
As partições são divisões lógicas existentes no disco rígido, indicando onde começa e onde termina um
sistema de arquivos. Um HD pode ser dividido em várias partições, e cada partição será tratada com se
fosse um dispositivo à parte.
Dessa forma, podemos instalar mais de um sistema operacional no mesmo HD, bem como salvar arquivos
em uma partição separada, de modo a não perder os dados numa eventual corrupção do sistema
operacional.
Tipos de Partições
Primárias: são as partições que contém um sistema de arquivos. Num HD deve haver no mínimo uma
e no máximo quatro partições primárias. Se existirem quatro partições primárias, nenhuma outra
partição poderá existir neste disco. Por isso, o padrão é que somente as partições onde serão
instalados os sistemas operacionais sejam definidas como primárias, mas isso não é regra, uma vez
que alguns sistemas operacionais, como o GNU/Linux, podem ser instalados totalmente dentro de
partições lógicas;
Extendidas: são partições primárias especiais, que ao invés de receber um sistema de arquivos abriga
outras partições, lógicas. Num disco pode existir somente uma partição extendida;
Lógicas: são as partições criadas dentro das partições extendidas. Essas partições, assim como as
primárias, recebem sistemas de arquivos. Dentro de uma partição extendida podem existir no máximo
12 partições lógicas.
Como dito anteriormente, cada partição é identificada como um dispositivo à parte. No GNU/Linux, essas
partições são identicadas como /dev/[tipo de disco][disco][partição].
Os tipos de disco podem ser:
hd: Disco rígidos IDE;
sd: Disco rígido SCSI.
Já [disco] é substituído pela letra correspondente à unidade de disco:
a: Primary Master;
b: Primary Slave;
c: Secondary Master;
d: Secondary Slave.
E, por fim, [partição] é substituído pelo número da partição.
Veja alguns exemplos de referências a partições:
/dev/hda1: disco rígido IDE (hd), primary master (a), primeira partição (1);
/dev/sdc3: disco rígido SCSI (sd), secondary master (c), terceira partição (3);
04/10/12 Fundamentos do sistema Linux: discos e partições [Artigo]
3/19 www.v iv aolinux.com.br/artigos/impressora.php?codigo=4858
/dev/hdd4: disco rígido IDE (hd), secondary slave (d), quarta partição (4);
/dev/sdb7: disco rígido SCSI (sd), primary slave (b), sétima partição (7).
A partição swap
Para a instalação básica de um sistema GNU/Linux são necessárias pelo menos duas partições: uma
principal, onde será instalado o sistema, e uma partição swap, conhecida também como área de troca. A
função da partição swap é funcionar como memória virtual.
A memória virtual é um recurso que utiliza o disco rígido para armazenar dados não utilizados na memória
RAM, liberando-a para receber mais dados. Isso torna o sistema mais estável e evita que ele se torne
excessivamente lento quando muitas aplicações são executadas simultaneamente.
A partição swap deve ser dimensionada de acordo com a quantidade de memória RAM instalada e a carga
de trabalho da máquina. O ideal é que o tamanho da partição swap seja no mínimo duas vezes maior que a
quantidade de memória RAM instalada e no máximo 1 GB.
Sistemas de arquivos
Sistemas de arquivos são as estruturas utilizadas para a leitura e gravação de arquivos e diretórios pelo
sistema operacional. Um disco rígido, disquete ou qualquer outro dispositivo de armazenamento de dados
não pode ser utilizado se não estiver fazendo uso de um sistema de arquivos.
Existem inúmeros sistemas de arquivos, cada um com suas características particulares que lhe conferem
desempenho e capacidades diferentes, mas todos eles têm em comum o objetivo básico de fornecer a
estrutura necessária para o sistema operacional ler e gravar os arquivos e diretórios.
Journaling
O journaling consiste em reservar um espaço no início do disco para gravar informações sobre as
operações que serão realizadas, antes delas serem realmente feitas. Assim, se alguma falha ocorrer durante a
operação, seja gravação, movimentação ou exclusão, basta o sistema ler o setor de journaling para
facilmente poder desfazer as operações, retornando os arquivos para seu estado anterior, ou então
completar as operações interrompidas.
O espaço onde ficam gravadas as informações de operações chama-se journal, daí o nome journaling.
Graças ao journal, a verificação de sistemas de arquivos com suporte a journaling é realizada muito
rapidamente, pois basta verificar se existe alguma operação pendente registrada no journal. Dependendo do
sistema de arquivos utilizado, essa verificação pode durar de 1 a 2 segundos somente, podendo ser
04/10/12 Fundamentos do sistema Linux: discos e partições [Artigo]
4/19 www.v iv aolinux.com.br/artigos/impressora.php?codigo=4858
executada toda vez que se carrega o sistema operacional, garantindo uma grande segurança quanto à
integridade dos dados.
Como no journaling é necessário gravar as informações no journal antes de realizar as operações de fato, o
processo de gravação pode se tornar mais lento, sobretudo nos casos de várias operações consecutivas
com arquivos pequenos. Entretanto, a velocidade nas operações com dados está mais relacionada a outros
aspectos do sistema de arquivos do que com a presença ou não do journaling, de forma que facilmente
encontramos sistemas de arquivos como o ReiserFS, com journaling, que possuem um desempenho muito
maior que grande parte dos sistemas sem journaling, como o FAT32 e o EXT2.
Tipos de sistemas de arquivos
Os sistemas de arquivos sem journaling são muito inseguros, mas costumam ser mais rápidos, devido ao
número menor de informações que são armazenadas sobre os arquivos.
A principal vulnerabilidade dos sistemas de arquivos sem journaling é quanto ao desligamento repentino do
computador. Se um computador que utiliza um sistema de arquivos desse tipo estiver ligado e for desligado
diretamente através do botão ou devido a falha elétrica, certamente haverá perda de dados, possivelmente
até o comprometimento total do sistema de arquivos, tornando os dados gravados no HD inacessíveis. Além
disso, em caso de falhas, a verificação de erros em sistemas de arquivos sem journaling é lenta, pois requer a
análise de todos os dados do HD.
Sistemas de arquivos com journaling, por sua vez, são muito seguros e confiáveis, muito tolerantes à queda
de energia, e a verificação de erros é muito mais rápida. Entretanto, podem ser muito mais lentos que os
sistemas de arquivos sem journaling, mas isso é bastante relativo.
EXT2: o EXT2 é um sistema de arquivos muito rápido pelo fato de não possuir um journal, sendo
assim os dados são gravados diretamente. Quando ocorre alguma falha que provoque o desligamento
incorreto do sistema, o utilitário fsck é acionado para a verificação do sistema, sendo às vezes um
processo lento e nem sempre com bons resultados, ocasionado quase sempre perda de dados.
FAT32: o FAT32 é o sistema de arquivos padrão do Windows, utilizado nas versões 95, 98 e Me, e
disponível também para as versões 2000 e XP. É um sistema de arquivos simples, um pouco lento e
bastante vulnerável a falhas, motivos pelos quais ele não pôde ser usado nos sistemas operacionais de
rede da Microsoft, como as versões NT, 2000 Server e 2003 Server do Windows.
EXT3: o sistema de aquivos EXT3 foi desenvolvido pelo doutor Stephen Tweedie e colaboradores na
Red Hat. Pode-se dizer que ele é um EXT2 com journaling e passou a ser suportado na versão 2.4
do kernel Linux. No EXT3, o journal usa uma camada chamada JDB (Journaling Block Device), que
utiliza um método diferente na recuperação de dados: ao invés de armazenar bytes que devem ser
gravados, ele armazena blocos modificados do sistema de arquivos na memória para poder rastrear
as operações que ficaram pendentes. A vantagem é que ele não precisa lidar com a complexidade de
gravar bytes no journal e a desvantagem é que o journal acaba ficando maior. Em compensação ao
considerável aumento na segurança dos dados, o desempenho nas operações em sistemas de
arquivos EXT3 é muito inferior à dos sistemas EXT2.
ReiserFS: o ReiserFS é um sistema desenvolvido especialmente para o Linux, muito confiável e
surpreendentemente rápido, em muitos casos mais rápido até mesmo que sistemas sem journaling. O
04/10/12 Fundamentos do sistema Linux: discos e partições [Artigo]
5/19 www.v iv aolinux.com.br/artigos/impressora.php?codigo=4858
ReiserFS, por não utilizar blocos de tamanho fixo, mas ajustar seu tamanho de acordo com o arquivo,
evita os problemas de desperdício de espaço comuns em outros sistemas de arquivos. Possui suporte
a arquivos maiores que 2 GB e o acesso a árvore de diretórios é muito mais rápido. Utiliza uma
eficiente estrutura de dados chamada balanced tree (árvore equilibrada), que trata toda a partição
como se fosse uma única tabela de banco de dados contendo diretórios, arquivos e arquivos de meta-
data, o que aumenta muito o desempenho de aplicativos que trabalham com arquivos pequenos,
porque estes são lidos de uma só vez, em apenas um ciclo de I/O do HD.
Sua versão 3 não trabalha perfeitamente com o sistema de arquivos de rede NFS (Network File
System). Existem alguns patches para resolver o problema, mas eles não o resolvem completamente.
O criador do ReiserFS é Hans Reiser. Atualmente o projeto é patrocinado pela SuSE e mantido pela
empresa NameSys. Aguarda-se o lançamento oficial da versão 4 do ReiserFS, o Reiser4, que foi
totalmente reescrito e possui um desempenho superior à da versão 3.
JFS: Sigla de Journaling File System, foi criado pela IBM para uso em servidores corporativos, e teve
seu código-fonte liberado. O sistema de arquivos JFS também usa a estrutura I-node para armazenar
a localização dos blocos de cada arquivo nas estruturas físicas do disco. A versão JFS2 armazena
esses I-nodes em uma árvore binária para acelerar o acesso a essas informações. Esses blocos
podem variar de 512 a 4096 bytes, e a alocação dos I-nodes é feita conforme vai sendo necessário.
XFS: desenvolvido originalmente pela Silicon Graphics e posteriormente disponibilizado o código-
fonte, o XFS possui vários patches e alguns bugs, mas é um sistema de arquivos muito rápido na
gravação e possui um desfragmentador para arquivos.
NTFS: sigla de New Technology File System, foi desenvolvido pela Microsoft para ser utilizado nas
versões de rede do Windows, inicialmente o NT, e posteriormente o 2000 Server e o 2003 Server.
Baseado no HPFS (High Performance File System), da IBM, o NTFS possui suporte a gravação de
permissões de acesso, Reparse Points, que permite associar ações a arquivos e pastas, quotas de
discos, entre outros recursos.
Por ser um sistema proprietário, da Microsoft, não foi possível desenvolver para o GNU/Linux um
suporte nativo a sistemas de arquivos NTFS. É possível ler, mas não há suporte eficiente à gravação
nesse sistema de arquivos. Em alguns casos, pode-se usar o Captive, um programa disponibilizado
sob a licença GNU GPL que se utiliza de arquivos de sistema do Windows para permitir a gravação
em sistemas de arquivos NTFS, e por isso requer que o Windows esteja instalado no computador. O
desempenho do Captive é pobre, a gravação de arquivos é muito lenta, atingindo míseros 2 MB por
segundo. Outra alternativa, porém paga, é o Paragon NTFS, que funciona muito bem e possui um
desempenho muito superior ao do Captive.
Qual sistema de arquivos utilizar
Falar qual sistema de arquivos você deve usar é uma missão quase impossível, é como falar de distribuições
GNU/Linux: alguém que adora o Slackware com certeza só vai recomendar o Slackware, e alguém que
adora o Debian com certeza só vai recomendar o Debian, e assim por diante.
Em se tratando de sistemas de arquivos, a recomendação é que você escolha, entre os que possuem os
recursos que você precisa, aquele que apresentar o melhor desempenho.
Nesse caso, a menos que você vá utilizar NFS, o sistema de arquivos mais indicado é o ReiserFS, que
possui comprovadamente um desempenho muito superior ao de outros sistemas de arquivos. Se for utilizar
NFS, uma vez que existe o problema de compatibilidade do ReiserFS, pode-se utilizar o XFS, ou o EXT3.
Entretanto, se você realmente não precisa das vantagens do journaling, o EXT2 pode ser a melhor
alternativa para você.
Montando partições
No GNU/Linux, para acessar um dispositivo de disco é necessário antes montá-lo em um diretório do
sistema. O processo de montagem consiste em tornar o dispositivo acessível para o usuário.
Vamos tomar como exemplo simples um disquete. O dispositivo de disquete é /dev/fd0. Entretanto, se você
colocar um disquete no drive e tentar acessá-lo através de /dev/fd0, você não conseguirá:
# cd /dev/fd0
bash: cd: /dev/fd0: Não é um diretório
Você precisa, antes, montar o disquete:
# mount /dev/fd0 /media/floppy
# cd /media/floppy
# ls
doc.tar.bz2 linux-apostila.sxw lost+found ROTEIRO_divisao.doc
Com o comando mount nós informamos ao sistema operacional para permitir o acesso ao conteúdo do
disquete através do diretório /media/floppy/. Dessa forma, o conteúdo desse diretório passa a ser o
contéudo do sistema de arquivos do disquete.
Isso torna possível utilizar várias partições como se eles fossem uma só. Por exemplo, podemos utilizar uma
partição separada para gravar os dados do diretório /home/:
# mount /dev/hda5 /home
Agora, quando gravarmos alguma coisa no diretório /home/, ela será gravada na partição /dev/hda5, e não
na mesma partição em que está o sistema de arquivo raiz /. A utilidade disso é bem clara: se por acaso
acontecer algum problema e o sistema operacional for corrompido, basta formatar a partição principal e
reinstalar o sistema, sem mexer na partição /dev/hda5, que contém o diretório /home/.
Utilizando o mount
O mount é o utilitário usado para montar sistemas de arquivos. Seu uso é simples:
# mount -t [sistema de arquivos] -o [opções] [dispositivo] [ponto de montagem]
04/10/12 Fundamentos do sistema Linux: discos e partições [Artigo]
7/19 www.v iv aolinux.com.br/artigos/impressora.php?codigo=4858
sistema de arquivos: aqui devemos informar qual o sistema de arquivos utilizado no dispositivo ou
partição que se deseja montar. Pode ser ext3, ext2, reiserfs, xfs, vfat, jfs, minix, etc. Se você não
souber o sistema de arquivos utilizados, experimente a opção auto;
opções: várias opções podem ser utilizadas aqui. Algumas delas:
ro: monta a partição no modo somente leitura, não sendo possível fazer alterações no sistema
de arquivos do dispositivo;
rw: monta a partição no modo de leitura e escrita, permitindo fazer alterações no sistema de
arquivos;
loop: utilizada para montar sistemas de arquivos gravados em arquivo;
noexec: não permite a execução de programas que estejam gravados no sistema de arquivos
do dispositivo;
noatime: não grava informações sobre data do último acesso nos arquivos;
nodev: não permite a criação de dispositivos no sistema de arquivos do dispositivo;
nosuid: não permite a criação de arquivos com o bit SUID ligado.
dispositivo: é a partição, disco ou arquivo que deseja acessar;
ponto de montagem: é o diretório a partir de onde queremos acessar o dispositivo.
Alguns exemplos de uso:
# mount -t vfat /dev/fd0 /media/floppy
Monta um disquete (/dev/fd0) usando sistema de arquivos FAT (vfat) em /media/floppy/.
# mount -t reiserfs /dev/hda5 /backup
Monta a partição /dev/hda5 usando sistema de arquivos ReiserFS em /backup/.
# mount -t ext3 -o noexec,noatime /dev/hda7 /home
Monta a partição /dev/hda7 usando sistema de arquivos EXT3 em /home/, sem permissão de executar
programas (noexec) e gravar informações sobre data do último acesso (noatime).
# mount -o loop debian-br-cdd.iso /mnt/loop
Monta o arquivo ISO (imagem de CD) debian-br-cdd.iso em /mnt/loop/.
umount
O umount, como o nome sugere, é o comando que utilizamos para desmontar o sistema de arquivos, ou
seja, desconectá-lo da máquina, tornando-o novamente inacessível.
Em sistemas de arquivos pequenos, como em disquetes, a gravação dos arquivos só ocorre de fato depois
de executado o umount. Isso quer dizer que não importa que você tenha copiado vários arquivos para o seu
disquete, eles só serão de fato gravados quando você desmontá-lo através do comando umount, ou utilizar o
comando sync.
04/10/12 Fundamentos do sistema Linux: discos e partições [Artigo]
8/19 www.v iv aolinux.com.br/artigos/impressora.php?codigo=4858
Seu uso é bem simples:
# umount [dispositivo ou ponto de montagem]
Como você pode ver, pode-se especificar tanto o dispositivo quanto o ponto de montagem. Assim, se você
montou um dispositivo com o comando mount /dev/fd0 /media/floppy, por exemplo, você poderá desmontá-
lo tanto com umount /dev/fd0 como com umount /media/floppy.
O fstab
Existe um arquivo que podemos utilizar para gerenciar a montagem de dispositivos. Esse arquivo é o
/etc/fstab.
Nele encontram-se as entradas dos sistemas de arquivos que são montados durante a inicialização do
sistema, juntamente com outros sistemas de arquivos que são montados com freqüência.
Uma utilidade do fstab é permitir montar sistemas de arquivos com o mount utilizando apenas um parâmetro.
Como exemplo, vamos ver como fica o comando para montar um disquete no diretório /media/floppy/:
# mount -t auto /dev/fd0 /media/floppy
Agora, abrimos o /etc/fstab e adicionamos a seguinte linha:
/dev/fd0 /media/floppy auto rw,noauto 0 0
Agora, para montar a unidade de disquete, basta o comando:
# mount /dev/fd0
Ou
# mount /media/floppy
O que é bem mais simples.
A estrutura do fstab
Vamos analisar a estrutura do fstab:
# cat /etc/fstab
# /etc/fstab: static file system information.
#
04/10/12 Fundamentos do sistema Linux: discos e partições [Artigo]
9/19 www.v iv aolinux.com.br/artigos/impressora.php?codigo=4858
#
proc /proc proc defaults 0 0
/dev/hda2 / reiserfs notail 0 1
/dev/hda5 none swap sw 0 0
/dev/hda1 /mnt/windows vfat rw,user,gid=100,umask=000 0 0
/dev/hdd /media/cdrom0 iso9660 ro,user,noauto 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0
Cada linha do fstab é chamada de entrada. Cada entrada é composta de seis informações, dispostas na
seguinte ordem:
sistema de arquivos: é a partição que se deseja montar;
ponto de montagem: diretório onde a partição será acessada;
tipo: Tipo do sistema de arquivos utilizado pela partição que se deseja montar;
opções: as opções usadas no sistema de arquivos, separadas por vírgula. As opções utilizadas
juntamente com o parâmetro -o do comando mount são válidas aqui, e também algumas outras, tais
como:
defaults: utiliza as opções padrão de montagem;
noauto: não monta o sistema de arquivos automaticamente na inicialização do sistema. Deve ser
usado em disquetes, CD's e outros dispositivos removíveis;
sync: usado para discos removíveis, como disquetes e Zip drives, para que os dados sejam
gravados imediatamente na unidade, de forma que não seja necessário usar o comando sync ou
desmontar o disquete para que os dados sejam gravados;
user: permite que o usuário comum possa montar o sistema de arquivos. Sem essa opção,
somente o administrador de sistema, o usuário root, pode realizar a montagem.
dump: especifica a freqüência de backup feita com o programa dump no sistema de arquivos. O valor
0 desativa o backup;
ordem: define a ordem em que o sistema de arquivos é verificado na inicialização do sistema. O valor
0 desativa a verificação. O valor 1 deve ser definidio sempre para o sistema de arquivo raiz /.
Para ver uma lista completa das opções do fstab, veja as páginas de manual:
$ man fstab
Particionando o HD
O particionamento consiste em criar as partições necessárias para instalar o sistema operacional. As
partições são divisões no disco, tratadas como se fossem discos independentes.
O particionamento faz parte do processo de instalação de qualquer distribuição GNU/Linux. Algumas
trazem ferramentas gráficas para essa tarefa, como Mandriva, SuSE e Fedora, outras possuem ferramentas
em modo texto um pouco mais simples, como o Debian, e outras, como o Slackware, não possuem
ferramentas próprias, e exigem que o usuário execute um aplicativo de particionamento em modo texto antes
de iniciar o processo de instalação.
04/10/12 Fundamentos do sistema Linux: discos e partições [Artigo]
10/19 www.v iv aolinux.com.br/artigos/impressora.php?codigo=4858
O programa mais poderoso para particionamento de HD's é o fdisk (não confunda com o fdisk para DOS),
entretanto, por ser baseado em linha de comando, podemos facilmente cometer erros que podem nos levar a
perder todos os dados de um disco que tenha dados gravados.
Uma alternativa para o fdisk é o cfdisk. O cfdisk nada mais é que uma interface para o fdisk, bastante
intuitiva e muito simples de usar.
Tabela de partições
Tabela de partições, ou partition table, é o local no HD onde ficam armazenadas as informações sobre as
partições existentes.
Como visto anteriormente, as partições podem ser de 3 tipos: primárias, extendidas e lógicas, de forma que
podemos ter até 16 partições no disco: 3 primárias, 1 extendida e 12 lógicas. Dessas, apenas 15 podem
receber sistemas de arquivos, uma vez que a partição extendida só serve para abrigar as partições lógicas.
Esquema de particionamento
Primeiramente, é preciso ter em mente as partições que se deseja criar. Por motivos de desempenho e
segurança, pode-se decidir criar várias partições, uma para cada diretório importante do sistema. Esse
procedimento é muito útil pois, no caso de uma corrupção no sistema que o torne inacessível, é possível
recuperar facilmente os dados das outras partições. Além disso, pode-se colocar os diretórios que são mais
acessados no início do disco, onde os dados são lidos mais rapidamente.
Partição Ponto de montagemTipo Tamanho Bandeira
/dev/hda1 extendida 8736 MB
/dev/hda5 /boot lógica 32 MB boot
/dev/hda6 /usr lógica 4096 MB
/dev/hda7 swap lógica 512 MB
/dev/hda8 /var lógica 4096 MB
/dev/hda2 / primária 3072 MB
/dev/hda3 /home primária 24032 MB
/dev/hda4 /backup primária 5120 MB
Nessa estrutura existem 7 partições. 1 para a raiz do sistema /, 1 para a memória virtual (swap), 4 para
diretórios importantes do sistema (/boot/, /usr/, /var/, /home/) e 1 para um diretório de backup (/backup/).
Existem basicamente duas vantagens em escolher partições separadas para os diretórios importantes do
sistema:
04/10/12 Fundamentos do sistema Linux: discos e partições [Artigo]
11/19 www.v iv aolinux.com.br/artigos/impressora.php?codigo=4858
Segurança: Gravar nossos dados pessoais em partições separadas da partição principal é seguro pois,
na eventualidade de o sistema ser corrompido e não puder ser inicializado, poderemos recuperar
facilmente os nossos dados, pois eles não estarão gravados na mesma partição do sistema, mas em
uma partição à parte;
Desempenho: Nem todos os diretórios são acessados com a mesma freqüência. Alguns são mais
lidos, outros são mais gravados, alguns são lidos somente na inicialização do sistema, enfim. Dessa
forma, podemos otimizar o sistema colocando os diretórios mais acessados em partições localizadas
no início do disco, onde a leitura e a gravação ocorrem de forma mais rápida.
Sabendo disso, fica fácil entender o porquê dessa estrutura de particionamento acima escolhida.
A primeira partição foi separada para receber o diretório /boot/, pois é nesse diretório que se encontram a
imagem do kernel e os arquivos utilizados pelo gerenciador de inicialização, ambos utilizados durante a
inicialização do sistema. Colocar esse diretório numa partição no início do disco garante uma leitura mais
rápida dos arquivos e, portanto, alguns segundos a menos no tempo de carregamento do sistema.
A segunda partição foi separada para receber o diretório /usr/, que contém os arquivos utilizados pela
maioria dos programas dos usuários. Colocar esse diretório numa partição próxima ao início do disco torna
a inicialização dos programas um pouco mais rápida.
A terceira partição foi separada para a memória virtual. A memória virtual é utilizada para armazenar dados
quando a memória RAM não for suficiente. Quanto mais rapidamente os dados forem lidos e gravados na
partição swap, melhor o desempenho do sistema quando a memória virtual estiver sendo utilizada.
A quarta partição separamos para o diretório /var/. Essa partição contém diversas informações sobre muitos
dos programas do sistema, incluindo arquivos de log. Em sistemas de servidores, os logs são muito
importantes, além de outros arquivos que podem ser muito úteis para o administrador do sistema. Separar o
diretório /var/ é útil para fins de segurança, pois os dados contidos nesse diretório podem ser de extrema
importância em certos casos.
A quinta partição será utilizada pela raiz do sistema e o demais diretórios principais.
A penúltima partição será utilizada para o diretório /home/. Esse diretório, como você sabe, recebe os
arquivos pessoais de cada usuário, e tê-lo em uma partição separada oferece uma segurança em relação a
integridade dos dados, que podem ser facilmente recuperados no caso de corrompimento do sistema.
Por fim, temos a última partição, que separamos para o diretório /backup/. Esse diretório é personalizado,
não existindo na FHS do Linux, e nesse exemplo será utilizado para realização de backup.
Agora, vejamos como proceder para criar essa tabela de partições. Para isso, podemos utilizar vários
programas. O mais conhecido é o fdisk, ferramenta em modo texto extremamente poderosa, porém não
muito intuitiva. Existe ainda o cfdisk, que nada mais é que uma interface para o fdisk, bem mais simples de
utilizar.
Existem ainda alguns utilitários de particionamento em modo gráfico, com o QTParted, bastante simples de
utilizar e muito eficiente.
Vejamos agora como criar a tabela de partições acima utilizando o fdisk.
Fundamentos do sistema Linux: discos e partições [Artigo]
12/19 www.v iv aolinux.com.br/artigos/impressora.php?codigo=4858
O fdisk
Para iniciar o fdisk, usamos o seguinte comando:
# fdisk [dispositivo]
Onde [dispositivo] é o disco que estamos particionando. Geralmente utilizamos o disco rígido IDE ligado
como primary master, o /dev/hda:
# fdisk /dev/hda
The number of cylinders for this disk is set to 4865.
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):
Ao iniciar, o fdisk mostra algumas informações a respeito do programa e apresenta o prompt de comandos
"Command (m for help):". É aqui que devemos dar os comandos para trabalhar as partições. Os comandos
são:
a: Marcar uma partição como ativa;
d: Apagar uma partição;
l: Lista dos sistemas de arquivos conhecidos;
m: Ajuda básica sobre os comandos;
n: Criar uma nova partição;
p: Mostra da tabela de partições do disco;
q: Sair sem salvar as alterações;
t: Mudar o tipo do sistema de arquivos em uma partição;
w: Gravar a tabela de partições no disco.
Vejamos agora um exemplo prática de uso do fdisk, criando a tabela de partições mostrada na seção
anterior.
Considerando que o disco está vazio, o primeiro passo é criar a partição extendida /dev/hda1:
command (m for help): n
Command action
e extended
p primary partition (1-4)
04/10/12 Fundamentos do sistema Linux: discos e partições [Artigo]
13/19 www.v iv aolinux.com.br/artigos/impressora.php?codigo=4858
e
Partition number (1-4): 1
First cylinder (1-4865, default 1): 1
Last cylinder or +size or +sizeM or +sizeK (1-4865, default 4865): +8736M
Ao usar o comando n, para criar uma nova partição, o fdisk pergunta que tipo de partição criar. Escolhemos
e (extendida). O fdisk pergunta então qual o número que queremos dar à partição. Escolhemos 1. Em
seguida, devemos informar o cilindro inicial da partição. Apenas pressionamos Enter, pois a partição deve
ficar no início do disco. Por fim, devemos informar o tamanho da partição. Colocamos +8736M, para definir
um tamanho de 8736 MB.
Agora, devemos criar as 4 partições lógicas /dev/hda5, /dev/hda6, /dev/hda7 e '/dev/hda8, com 32 MB,
4096 MB, 512 MB e 4096 MB, respectivamente. Vamos criar primeira a partição /dev/hda5, com 32 MB:
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (1-1063, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1063, default 1063): +32M
Na seqüência, criamos a partição /dev/hda6, com 4096 MB:
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (6-1063, default 6):
Using default value 6
Last cylinder or +size or +sizeM or +sizeK (6-1063, default 1063): +4096M
Em seguida, criamos a partição /dev/hda7, com 512 MB:
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (505-1063, default 505):
Using default value 505
Last cylinder or +size or +sizeM or +sizeK (505-1063, default 1063): +512M
E, por fim, criamos a última partição lógica, /dev/hda8. Como ela deve ocupar todo o espaço disponível,
não precisamos informar o seu tamanho:
04/10/12 Fundamentos do sistema Linux: discos e partições [Artigo]
14/19 www.v iv aolinux.com.br/artigos/impressora.php?codigo=4858
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (568-1063, default 568):
Using default value 568
Last cylinder or +size or +sizeM or +sizeK (568-1063, default 1063):
Using default value 1063
Concluída a criação das partições lógicas, é hora de criar as 3 partições primárias restantes: /dev/hda2,
/dev/hda3 e /dev/hda4. Começamos por criar a partição /dev/hda2, com 3072 MB:
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (1064-4865, default 1064):
Using default value 1064
Last cylinder or +size or +sizeM or +sizeK (1064-4865, default 4865): +3072M
Em seguida, criamos a partição /dev/hda3, com 24032 MB:
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (1438-4865, default 1438):
Using default value 1438
Last cylinder or +size or +sizeM or +sizeK (1438-4865, default 4865): +24032M
E, finalmente, criamos a última partição primária, /dev/hda4, utilizando o espaço restante no HD:
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
p
Selected partition 4
First cylinder (4361-4865, default 4361):
Using default value 4361
Last cylinder or +size or +sizeM or +sizeK (4361-4865, default 4865):
Using default value 4865
04/10/12 Fundamentos do sistema Linux: discos e partições [Artigo]
15/19 www.v iv aolinux.com.br/artigos/impressora.php?codigo=4858
Agora, utilizamos o comando p para listar as partições criadas:
Command (m for help): p
Disk /dev/hda: 40.0 GB, 40020664320 bytes
255 heads, 63 sectors/track, 4865 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 1 1063 8538516 5 Extended
/dev/hda2 1064 1437 3004155 83 Linux
/dev/hda3 1438 4360 23478997+ 83 Linux
/dev/hda4 4361 4865 4056412+ 83 Linux
/dev/hda5 1 5 40099+ 83 Linux
/dev/hda6 6 504 4008186 83 Linux
/dev/hda7 505 567 506016 83 Linux
/dev/hda8 568 1063 3984088+ 83 Linux
Pronto. Todas as partições estão criadas, mas o particionamento ainda não está completo. Precisamos
definir a partição /dev/hda7 como swap. Para isso, utilizamos o comando t, e escolhemos o número 82, para
definir a partição como Linux Swap:
Command (m for help): t
Partition number (1-8): 7
Hex code (type L to list codes): 82
Changed system type of partition 7 to 82 (Linux swap / Solaris)
Segue abaixo a lista completa com os códigos de todos os tipos de partições suportados pelo fdisk:
0 Empty 1e Hidden W95 FAT1 80 Old Minix be Solaris boot
1 FAT12 24 NEC DOS 81 Minix / old Lin bf Solaris
2 XENIX root 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
5 Extended 41 PPC PReP Boot 85 Linux extended c7 Syrinx
6 FAT16 42 SFS 86 NTFS volume set da Non-FS data
7 HPFS/NTFS 4d QNX4.x 87 NTFS volume set db CP/M / CTOS / .
8 AIX 4e QNX4.x 2nd part 88 Linux plaintext de Dell Utility
9 AIX bootable 4f QNX4.x 3rd part 8e Linux LVM df BootIt
a OS/2 Boot Manag 50 OnTrack DM 93 Amoeba e1 DOS access
b W95 FAT32 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O
c W95 FAT32 (LBA) 52 CP/M 9f BSD/OS e4 SpeedStor
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi eb BeOS fs
f W95 Ext'd (LBA) 54 OnTrackDM6 a5 FreeBSD ee EFI GPT
10 OPUS 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/
11 Hidden FAT12 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC b
12 Compaq diagnost 5c Priam Edisk a8 Darwin UFS f1 SpeedStor
04/10/12 Fundamentos do sistema Linux: discos e partições [Artigo]
16/19 www.v iv aolinux.com.br/artigos/impressora.php?codigo=4858
14 Hidden FAT16 <3 61 SpeedStor a9 NetBSD f4 SpeedStor
16 Hidden FAT16 63 GNU HURD or Sys ab Darwin boot f2 DOS secondary
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fd Linux raid auto
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fe LANstep
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid ff BBT
1c Hidden W95 FAT3 75 PC/IX
Por fim, precisamos ligar a bandeira inicializável em uma das partições. Pelo menos uma partição deve ter
essa bandeira ligada, para que seja possível inicializar o sistema operacional.
Vamos utilizar o comando a para ligar essa bandeira na partição /dev/hda5, que é a primeira partição do
HD:
Command (m for help): a
Partition number (1-8): 5
E a tabela de partições está finalmente concluída. Vejamos como ela ficou:
Command (m for help): p
Device Boot Start End Blocks Id System
/dev/hda1 1 1063 8538516 5 Extended
/dev/hda2 1064 1437 3004155 83 Linux
/dev/hda3 1438 4360 23478997+ 83 Linux
/dev/hda4 4361 4865 4056412+ 83 Linux
/dev/hda5 * 1 5 40099+ 83 Linux
/dev/hda6 6 504 4008186 83 Linux
/dev/hda7 505 567 506016 82 Linux swap
/dev/hda8 568 1063 3984088+ 83 Linux
Uma vez concluído o particionamento, utilizamos o comando w para gravar a tabela de partições no disco.
O fdisk vai pedir confirmação antes de fazer a gravação.
Para sair do programa, utilize o comando q.
Trabalhando com sistemas de arquivos
Criando um sistema de arquivos em uma
partição
Para criar um sistema de arquivos em uma partição utilizamos o utilitário mkfs. Esse processo é conhecido
como formatação.
A sintaxe básica de uso do mkfs é:
04/10/12 Fundamentos do sistema Linux: discos e partições [Artigo]
17/19 www.v iv aolinux.com.br/artigos/impressora.php?codigo=4858
# mkfs.[sistema de arquivos] [partição]
Dessa forma, se quisermos criar um sistema de arquivos ReiserFS na partição /dev/hda5, usamos o
comando:
# mkfs.reiserfs /dev/hda5
Da mesma forma, se quisermos formatar a partição /dev/hda2 como EXT2, o comando fica:
# mkfs.ext3 /dev/hda2
Podemos criar qualquer tipo de partição cujo suporte esteja ativado no sistema, como EXT2, EXT3,
ReiserFS, FAT16, FAT32, NTFS, XFS, JFS, etc. Entretanto, para utilizar essas partições, é necessário que
o suporte para o sistema de arquivos em questão esteja habilitado no kernel Linux.
Criando um sistema de arquivos em um
arquivo
Uma possibilidade nos sistemas GNU/Linux bastante interessante é a de usar arquivos como se fossem
partições de disco. A utilidade disso está na segurança, pois é possível gravar todos os seus documentos
importantes em um arquivo com um nome bem pouco suspeito como libXrender.so ou debian-sarge-
i386.iso. Ou mesmo facilitar a cópia de um grupo de arquivos. Você poderia gravar vários diretórios em um
sistema de arquivos montado em um arquivo e, quando quisesse copiar os diretórios, bastaria copiar esse
arquivo.
Para isso, o primeiro passo é criar um arquivo vazio, que será usado para o sistema de arquivos. Para isso,
vamos utilizar o utilitário dd:
# dd if=/dev/zero of=[arquivo de saída] bs=[tamanho do bloco] count=[número de blocos]
Vamos criar um arquivo /home/macro/imagem.img com 128 MB:
# dd if=/dev/zero of=/home/davidson/imagem.img bs=1M count=128
Agora, vamos criar um sistema de arquivos ReiserFS no arquivo imagem.img:
# cd /home/davidson
# mkfs.reiserfs imagem.img
Pronto. Agora, basta criar um ponto de montagem em /mnt/ e montar o arquivo para poder utilizá-lo como
se fosse uma partição qualquer:
# mkdir /mnt/loop
# mount -o loop imagem.img /mnt/loop
04/10/12 Fundamentos do sistema Linux: discos e partições [Artigo]
18/19 www.v iv aolinux.com.br/artigos/impressora.php?codigo=4858
Repare no parâmetro -o loop. Ele é usado sempre que se quiser acessar um sistema de arquivos gravado em
um arquivo, como nesse caso. É possível acessar o conteúdo de imagens de CD gravados no formato ISO
utilizando esse procedimento.
Verificando erros em uma partição
Quando alguma mensagem de erro é exibida ao tentar acessar dados em uma partição, é indício de que esta
contém erros no sistema de arquivos. Quando isso acontece, o ideal é fazer a checagem para corrigir
eventuais erros ou, se for o caso, constatar a danificação de alguns setores do HD para então providenciar
as soluções cabíveis.
O utilitário utilizado para chegar sistemas de arquivos é o fsck, sigla de file system check (verificar sistema de
arquivos). A sintaxe básica de uso do fsck é:
# fsck -t [sistema de arquivos] [opções] [partição]
Existem diversas opções para o fsck, as principais são:
-C: Exibe uma barra de progresso. Esse opção só funciona para checagem de sistemas de arquivos
EXT2;
-V: Exibe informações detalhadas sobre os processos que vão sendo realizados durante a verificação.
Interessante para entender como o fsck trabalha e ver com detalhes as ações realizadas, vem como os
erros encontrados;
-a: Corrige automaticamente os problemas encontrados utilizando as soluções marcadas como
padrão. Essa opção não é segura, pois nem sempre a solução padrão é a mais adequada ao problema
encontrado;
-r: Corrige os problemas encontrados interativamente, perguntando ao usuário qual solução aplicar
para cada problema. É o modo mais seguro e eficiente de corrigir erros no sistema.
Como exemplo, se quisermos corrigir automaticamente os erros da partição /dev/hda7, com sistema de
arquivos FAT32, o comando fica:
# fsck -t vfat -a /dev/hda7
Se quisermos usar o modo interativo e ver os detalhes da verificação:
# fsck -t vfat -r -V /dev/hda7
Para checar a partição /dev/hda4, formatada como EXT2, corrigindo os erros de forma interativa e exibindo
uma barra de progresso, usamos o comando:
# fsck -t ext2 -r -C /dev/hda4
Mais opções do comando fsck podem ser obtidas na sua página de manual:
04/10/12 Fundamentos do sistema Linux: discos e partições [Artigo]
19/19 www.v iv aolinux.com.br/artigos/impressora.php?codigo=4858
$ man fsck
http://www.vivaolinux.com.br/artigo/Fundamentos-do-sistema-Linux-discos-e-particoes
Voltar para o site