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.

Fundamentos Do Sistema Linux_ Discos e Partições [Artigo]

Embed Size (px)

DESCRIPTION

Fundamentos do sistema Linux discos e partições

Citation preview

Page 1: Fundamentos Do Sistema Linux_ Discos e Partições [Artigo]

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

1/19www.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 outrosdispositivos 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. Essasunidades 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.

Page 2: Fundamentos Do Sistema Linux_ Discos e Partições [Artigo]

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

2/19www.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 outrapartição poderá existir neste disco. Por isso, o padrão é que somente as partições onde serãoinstalados 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 departições lógicas;

Extendidas: são partições primárias especiais, que ao invés de receber um sistema de arquivos abrigaoutras 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 asprimá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);

Page 3: Fundamentos Do Sistema Linux_ Discos e Partições [Artigo]

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

3/19www.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. Afunçã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óriaRAM, 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 cargade 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 dadosnã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 conferemdesempenho 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 parafacilmente 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

Page 4: Fundamentos Do Sistema Linux_ Discos e Partições [Artigo]

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

4/19www.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, oprocesso 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 facilmenteencontramos 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 aonú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 desligadodiretamente 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 ossistemas 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 desligamentoincorreto 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 ebastante 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 naRed Hat. Pode-se dizer que ele é um EXT2 com journaling e passou a ser suportado na versão 2.4do 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 sergravados, 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

Page 5: Fundamentos Do Sistema Linux_ Discos e Partições [Artigo]

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

5/19www.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çãocomo 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 foitotalmente 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 armazenara 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 nasversõ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çãonesse 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 porsegundo. 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 queadora 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.

Page 6: Fundamentos Do Sistema Linux_ Discos e Partições [Artigo]

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 melhoralternativa 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 acasoacontecer 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]

Page 7: Fundamentos Do Sistema Linux_ Discos e Partições [Artigo]

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

7/19www.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 dearquivos;

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.

Page 8: Fundamentos Do Sistema Linux_ Discos e Partições [Artigo]

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

8/19www.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.

#

Page 9: Fundamentos Do Sistema Linux_ Discos e Partições [Artigo]

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

9/19www.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 naseguinte 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 serusado 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. Algumastrazem 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.

Page 10: Fundamentos Do Sistema Linux_ Discos e Partições [Artigo]

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

10/19www.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 montagem Tipo 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 dosistema:

Page 11: Fundamentos Do Sistema Linux_ Discos e Partições [Artigo]

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

11/19www.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 recuperarfacilmente 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 dadosquando 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 muitosdos programas do sistema, incluindo arquivos de log. Em sistemas de servidores, os logs são muitoimportantes, 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 extremaimportâ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 aintegridade 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ãomuito intuitiva. Existe ainda o cfdisk, que nada mais é que uma interface para o fdisk, bem mais simples deutilizar.

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.

Page 12: Fundamentos Do Sistema Linux_ Discos e Partições [Artigo]

Fundamentos do sistema Linux: discos e partições [Artigo]

12/19www.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 ligadocomo 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 comandossã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çãoanterior.

Considerando que o disco está vazio, o primeiro passo é criar a partição extendida /dev/hda1:

command (m for help): nCommand action

e extended p primary partition (1-4)

Page 13: Fundamentos Do Sistema Linux_ Discos e Partições [Artigo]

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

13/19www.v iv aolinux.com.br/artigos/impressora.php?codigo=4858

ePartition number (1-4): 1

First cylinder (1-4865, default 1): 1Last 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. Escolhemose (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 deveficar 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): nCommand action

l logical (5 or over)

p primary partition (1-4)l

First cylinder (1-1063, default 1):Using default value 1Last 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)

lFirst cylinder (6-1063, default 6):

Using default value 6Last 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): nCommand action

l logical (5 or over) p primary partition (1-4)

lFirst cylinder (505-1063, default 505):

Using default value 505Last 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:

Page 14: Fundamentos Do Sistema Linux_ Discos e Partições [Artigo]

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

14/19www.v iv aolinux.com.br/artigos/impressora.php?codigo=4858

Command (m for help): nCommand action

l logical (5 or over) p primary partition (1-4)

lFirst cylinder (568-1063, default 568):

Using default value 568Last 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): nCommand action

l logical (5 or over) p primary partition (1-4)p

Partition number (1-4): 2First cylinder (1064-4865, default 1064):

Using default value 1064Last 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): nCommand action

l logical (5 or over) p primary partition (1-4)

pPartition number (1-4): 3First cylinder (1438-4865, default 1438):

Using default value 1438Last 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): nCommand action

l logical (5 or over) p primary partition (1-4)

pSelected partition 4

First cylinder (4361-4865, default 4361):

Using default value 4361Last cylinder or +size or +sizeM or +sizeK (4361-4865, default 4865):Using default value 4865

Page 15: Fundamentos Do Sistema Linux_ Discos e Partições [Artigo]

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

15/19www.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. Precisamosdefinir 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): 7Hex 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

Page 16: Fundamentos Do Sistema Linux_ Discos e Partições [Artigo]

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

16/19www.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 teressa 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 umapartição

Para criar um sistema de arquivos em uma partição utilizamos o utilitário mkfs. Esse processo é conhecidocomo formatação.

A sintaxe básica de uso do mkfs é:

Page 17: Fundamentos Do Sistema Linux_ Discos e Partições [Artigo]

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

17/19www.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 ocomando:

# 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 umarquivo

Uma possibilidade nos sistemas GNU/Linux bastante interessante é a de usar arquivos como se fossempartiçõ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 essearquivo.

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 comose fosse uma partição qualquer:

# mkdir /mnt/loop

# mount -o loop imagem.img /mnt/loop

Page 18: Fundamentos Do Sistema Linux_ Discos e Partições [Artigo]

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

18/19www.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 ISOutilizando 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 estaconté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 providenciaras 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 oserros encontrados;

-a: Corrige automaticamente os problemas encontrados utilizando as soluções marcadas comopadrão. Essa opção não é segura, pois nem sempre a solução padrão é a mais adequada ao problemaencontrado;

-r: Corrige os problemas encontrados interativamente, perguntando ao usuário qual solução aplicarpara 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 exibindouma 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:

Page 19: Fundamentos Do Sistema Linux_ Discos e Partições [Artigo]

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

19/19www.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