Fundamentos do sistema Linux: discos e partições

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.

[ Hits: 201.330 ]

Por: Davidson Rodrigues Paulo em 18/04/2006 | Blog: http://davidsonpaulo.com/


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]
  • 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.

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

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Partições
   3. Sistemas de arquivos
   4. Montando partições
   5. Particionando o HD
   6. Trabalhando com sistemas de arquivos
Outros artigos deste autor

Fundamentos do sistema Linux - Gerenciadores de inicialização

Compilando o Squid e criando o pacote para Slackware

Por que não migram

hdparm: Tire o máximo do seu HD

Fundamentos do sistema Linux - arquivos e diretórios

Leitura recomendada

Principais Comandos de Gestão e Prioridade de Processos no Linux

Desknotes e Walkpcs

Do Ubuntu ao Arch

História do GNU/Linux: 1965 assim tudo começou!

Instalação básica do Slackware 10 com KDE 3

  
Comentários
[1] Comentário enviado por removido em 18/04/2006 - 13:08h

Davidson, muito legal o seu artigo, mas acredito que é algo bastante complicado essa escolha de particionamento, principalmente em caso de HDs menores. Como por exemplo o do meu notebook que tem 20gb calcular o espaço de cada partição é complicado. Você conhece algum método após o linux estar rodando alterar o tamanho de uma partição?

[2] Comentário enviado por DooM em 18/04/2006 - 13:36h

Muito bem explicado e ótimo para iniciantes. Excelente artigo. Sugiro que os leitores iniciantes deem uma olhada depois na subsecao Sistema de Arquivos, no menu Artigos e procure saber mais sobre cada tipo de partição existente como forma de complemento ao artigo.

[3] Comentário enviado por davidsonpaulo em 18/04/2006 - 13:41h

danielgianni,

Você pode usar LVM (Logical Volume Manager). Ele é um sistema que, a grosso modo, cria partições virtuais, que podem ser redimensionadas a qualquer momento mesmo que o sistema esteja rodando.

Outro método também é redimensionar as partições usando o utilitário parted. Existem frontend gráficos para o parted, q saber QtParted e GParted. Entretanto, o parted só funciona se a partição não estiver sendo utilizada, e em alguns casos você terá que reiniciar o sistema para as alterações serem reconhecidas.

[4] Comentário enviado por removido em 18/04/2006 - 16:43h

Davidson, esse é um dos melhores e mais didáticos artigos que eu já li aqui ou em qualquer outro lugar. Muito bom mesmo. Meus parabéns. Agora toda vez que alguém me perguntar "mais o que é partição extendida ?" eu vou mandar ler esse artigo. Muito bom.


[5] Comentário enviado por atheist em 18/04/2006 - 18:44h

Bom artigo. A propósito, você sabe como montar partições no formato reiser4 ? Tava lendo um tuto na net, onde ele falava que era só recompilar com suporte ao dito cujo. Entretanto, posso ter problema de sanidade mental, mas tenho certeza que não vi o suporte para reiser4 ou "reiserfs4", no meu kernel 2.6.12, meu propósito era montar uma partição primária de 6 Gb que uso para testes, nesta, instalei o Underground Desktop (tava com o freeBSD), que utiliza-se desse file system. Sei tambem que tem que instalar o reiser4progs depois da compilação, se você souber de algo, conta ai, pois não achei nada de útil na net.
Quero montar essa partição no meu Slackware/debian/gentoo que estão no mesmo HD.

Obrigado, no aguardo e abraço !

[6] Comentário enviado por removido em 18/04/2006 - 20:01h

10!!!!!!!!!!!!!!

[7] Comentário enviado por upaf em 18/04/2006 - 21:19h

davidsonpaulo,

O artigo está excelente!!! Parabéns!!!
Gostaria de mais detalhes relacionado ao ReiserFS e NFS, isso quer dizer que ReiserFS não funciona muito bem com o Samba? Li alguma coisa dizendo que alguns bugs foram consertados após o kernel 2.4.10, isso procede?
Nesse caso seria melhor usar o EXT3 ou XFS? No Handbook do Gentoo li que o XFS não é muito bom caso haja alguma falha na alimentação de energia ou erro de hardware...
http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=1&chap=4

Valeu!

[8] Comentário enviado por removido em 19/04/2006 - 00:03h

upaf, sei que não perguntou a mim, mas ... eu uso o reiserfs com o samba e funciona perfeitamente... nenhum problema, isso testado em várias máquinas de várias versões de linux (kurumin, Ubuntu 5.10, CentOS 4.3, Conectiva 10) e Windows (98,2000,XP). Mesmo o CentOS que não suporta o reiserfs de forma nativa, consegue acessar/gravar em diretórios samba de linux instalado em reiserfs. Ah! testado em uma dezena de kernel(s) do 2.4 ao 2.6.

[9] Comentário enviado por DooM em 19/04/2006 - 10:17h

Mitre,

A seção de filesystems encontra-se no seguinte link:
http://www.vivaolinux.com.br/artigos/verSubCategoria.php?codigo=4

Upaf,
Eu tenho um artigo na fila de espera do VOL onde matei todas as minhas duvidas sobre Reiser e entao resolvi escrever alguma coisa pra ajudar a comunidade. Conclui que o ReiserFs é muito bom e um excelente sistema de arquivos. Se voce quiser me mande um email e eu te encaminho o artigo.
No link acima tambem existe muitos artigos descrevendo diversos fyle sistems entre eles o Reiser.
Abraço.

[10] Comentário enviado por lipse em 19/04/2006 - 10:49h

Davidson,

Parabéns pelo artigo. Excelente. Boa linguagem, bom conteúdo, enfim, ótimo.

Só um detalhe, nos trechos abaixo, há uma coisinha errada, olhe:

"...CD-ROM's, CD-RW's e DVD's não têm partições, portanto são identificados apenas como /dev/hdax, sendo "x" a letra que representa o número do disco...os discos SCSI são discos...CD-RW's e gravadoras de DVD não têm partições, sendo identificadas apenas como /dev/sdax, sendo "x"? a letra que representa o número do disco..."

No caso, você já inseriu as letras. Na verdade o certo é:

/dev/hdx
/dev/sdx

Abraço.

[11] Comentário enviado por davidsonpaulo em 19/04/2006 - 10:54h

lipse,

Erro de digitação, já corrigi o artigo. Muito obrigado pela observação.

Abraços

[12] Comentário enviado por lipse em 19/04/2006 - 11:14h

Por nada.

Estava observando aqui e meu drive de CD (gravador) foi reconhecido no dispositivo /dev/sr0.

Uso kernel 2.4.x, isso é normal? O /dev/srx representa que tipo de dispositivo?

Obrigado.

[13] Comentário enviado por DooM em 19/04/2006 - 16:15h

Lipse,
O /dev/sr0 indica que é o primeiro drive de cd-rom utizando SCSI e nao IDE...
Se eu nao me engano as vezes ele tambem tem o nome de scd.

[14] Comentário enviado por rdaraujo em 23/04/2006 - 13:01h

Uma pergunta um pouco off e noob:
como permitir que usuarios não-root possam montar e desmontar partições e dispositivos, sem forçar a barra?

[15] Comentário enviado por lipse em 24/04/2006 - 09:58h

Rdaraujo,

Editando o /etc/fstab. Nele há linhas assim:

/dev/hdb1 /mnt/hdb1 reiserfs noauto,exec 0 0

Isso indica que o dispositio /dev/hdb1 deve ser montado no diretório /mnt/hdb1, é formatado em reiserfs, o parâmetro "noauto" indica que não deve ser montado durante o boot etc.

Pra que usuários comuns possam montar o dispositivo sem poderes de root, basta adicionar o parâmetro "users" deixando a linha citada assim:

/dev/hdb1 /mnt/hdb1 reiserfs noauto,users,exec 0 0

Abraços.

[16] Comentário enviado por agk em 24/04/2006 - 14:17h

Excelente artigo, bem explicado, excelente para iniciantes e quem não conhece do assunto. Quanto ao problema do Reiferfs com NFS eu desconhecia esse problema, quais são os bugs e o que acontece quando se usa NFS em partições Reiserfs?
[ ]'s

[17] Comentário enviado por rwar em 24/04/2006 - 15:00h

Apenas um detalhe: fui procurar as referências no Guia Bozo Linux, porém um erro de DNS me foi retornado:

This Account Has Been Suspended
Please contact the billing/support department as soon as possible.

O domínio foi migrado?

[18] Comentário enviado por rwar em 24/04/2006 - 15:00h

Esqueci de comentar que, embora o erro acima me foi retornado nas referências, o artigo está muito bom! Parabéns!

[19] Comentário enviado por davidsonpaulo em 24/04/2006 - 15:04h

rwar,

O servidor não foi pago em dia pelo patrocinador, então o domínio foi suspenso. O pagamento já foi efetuado, então em breve o domínio deve voltar ao ar.

Abraços

[20] Comentário enviado por marlichsi em 26/04/2006 - 10:41h

Agora, uma dúvida que tá me pegando, que tem relação com particionamento.

Ontem estava implementando mrtg prá mostrar espaço ocupado/livre de disco, e verifiquei que os valores que o comando 'df' mostravam não eram a real situação.

Verifiquei na net sobre isso e, realmente, acontece em várias distribuições e sistemas operacionais que utilizam o comando. Alguém sabe alguma razão?

Faça o teste: total da partição - (menos) utilizado. O valor não bate com o livre. Logo, o percentual de utilizado está incorreto.

[21] Comentário enviado por lipse em 26/04/2006 - 13:51h

Marlichsi,

Na verdade é um engano seu e dos outros que relataram o problema (já foi meu tb). Devido a um arredondamento que o "df" faz, acontece isso, porém, o valor retornado no campo "espaço disponível" é verdadeiro. Isso só acontece em partições grandes, onde o "df" menospreza alguns megabytes. Veja:

lipse@dragon:[lipse]$ df -h
Sist. Arq. Tam Usad Disp Uso% Montado em
/dev/root.old 2,2M 380K 1,8M 18% /initrd
/dev/root 5,1G 2,1G 3,0G 42% /
tmpfs 236M 0 236M 0% /dev/shm
/dev/hdb2 50G 44G 6,6G 87% /mnt/hdb2
lipse@dragon:[lipse]$

Neste exemplo ele parece errar o cálculo do espaço na partição /dev/hdb2, pois 50GB menos 44GB é apenas 6GB e não 6,6GB, mas, se você der o comando sem o parâmetro "-h", verá que o cálculo é exato:

lipse@dragon:[lipse]$ df
Sist. Arq. 1K-blocos Usad Dispon. Uso% Montado em
/dev/root.old 2182 380 1802 18% /initrd
/dev/root 5245020 2155532 3089488 42% /
tmpfs 241612 0 241612 0% /dev/shm
/dev/hdb2 52426520 45510896 6915624 87% /mnt/hdb2
lipse@dragon:[lipse]$

Isso acontece porque o "df" "acha" que de 43,4GB para 44GB, é muito pouco, por isso arredonda.

Espero ter explicado de forma comprensível.

Lipse

[22] Comentário enviado por jasc em 30/07/2006 - 00:51h

Não consiguí acessar corretamente minha partição do windows XP com o meu Conectiva 10. Eu vejo mas não gravo nem copio nada de lá. Como faço para montar corretamente essa partição? ela é hda1

Desde já obrigado

Jasc

[23] Comentário enviado por brunojbpereira em 03/02/2007 - 21:09h

Excelente artigo, davidson. aprendo cada dia mais um pouco sobre este ótimo sistema operacional lendo artigos de qualidade como este. parabéns pelo seu trabalho.

[24] Comentário enviado por vvvdracula em 09/02/2007 - 08:13h

Um guia prático para entender o funcionamento de sistemas de particionamento
obrigado pela contribuição para nós
;)

[25] Comentário enviado por rbn_jesus em 23/03/2007 - 17:03h

Estou com um problema em LVM, creio que vc possa me ajudar...
tenho uma configuração lvm em apenas 1 dispositivo, da seguinte forma:
xda1 - /boot - ext3
xda2 - lvm (lvm1 - / - ext3; lvm2 - swap)

como recupero as informações da 1ª partição do lvm neste despositivo?

[26] Comentário enviado por rod.muller em 16/10/2007 - 22:37h

Olá pessoal!

Estou um pouco apavorado!!!

Tenho um servidor samba rodando com o mandriva 2007. O problema que ocorre
é que acho que deu algum problema no sistema de arquivos ou no HD porque
dá a seguinte mensagem quando tento entrar em safe mode (em modo normal
nem sobe, fica somente a tela azul):

creating root device
trying to resume from ;dev;sda5
no suspend signature on swap, not resuming
echo: cannot open /proc/suspend2/do_resume for wrire:2
mounting root filesystem /dev;root
VFS: Can´t find ext3 filesystem on dev sda1
mount: error 22 mounting ext3 flags defauts
kernel panic - not sysning: attempted to kill init!


Já tentei rodar o fsck e nada.

Estou apavorado porque o meu backup não esta atualizado.

O que posso fazer para tentar resolver?

Obrigado desde já!

Rodrigo

[27] Comentário enviado por luiscarlos em 28/10/2007 - 11:27h

tenho um hp compaq nx9005 e nao consigo montar o dvd, jah tentei todos os devices como sr sda hdx e nada, estranho que na BIOS ele nao consta mas no windows ele funciona e eu consigo dar boot no cd com ele pra iniciar a instalação.

[28] Comentário enviado por E.taffarel em 16/11/2007 - 15:47h

Parabéns pelo Artigo, muito bem explicado, fácil de aprender com a linguagem utilizada.

[29] Comentário enviado por doradu em 08/02/2010 - 18:41h

já existe o ext4

[30] Comentário enviado por adilsom em 24/02/2010 - 10:37h

ola, tenho um servidor dedicado com que tinha instalado centos 5.4 64bits, tive que pedir ao datacenter para reinstalar, e pedi centos5 32bits.

O hd que estava, pedi pra ficar como secundario, foi o que eles fizeram, mas quando tento montar o hd secundario da o seguinte erro:

[root@ns1]# mount /dev/sda2 /disco2
mount: /dev/sda2 already mounted or /disco2 busy

Por favor ajuda, tenho todo meu sistema neste HD, e o datacenter simplismente diz que nao pode ajudar.

Obrigado


Adilson Magnus
http://magnussolution.com

[31] Comentário enviado por davidsonpaulo em 24/02/2010 - 11:27h

Adilson,

Se o disco é secundário, sua identificação deve ser sdb (ou sdc ou sdd) e não sda. Experimente usar sdb2, sdc2 e sdd2 para ver se algum deles corresponde ao disco antigo.

[32] Comentário enviado por adilsom em 20/03/2010 - 09:03h

root@pbx:~ $ fdisk -l

Disk /dev/hda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/hda1 * 1 13 104391 83 Linux
/dev/hda2 14 9729 78043770 8e Linux LVM

Disk /dev/sda: 160.0 GB, 160040803840 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 19457 156183930 8e Linux LVM


Pelo que entendo seria sda2,

Mas da este erro:

root@pbx:~ $ mount -t ext3 /dev/sda2 /mnt/hd_slave
mount: wrong fs type, bad option, bad superblock on /dev/sda2,
missing codepage or other error
In some cases useful info is found in syslog - try
dmesg | tail or so


obrigado



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts