Skip to main content

104.3 Controle de Montagem e Desmontagem de FSs



Montar o sistema de arquivo significa anexar o sistema de arquivos a um ponto específico na árvore de diretórios do seu sistema, chamado de ponto de montagem. Os sistemas de arquivos podem ser montados manualmente ou automaticamente e há muitas maneiras de fazer isso.

MOUNT


Usado para montar partições num diretório específico (dentro da partição existe um FS). Quando montar alguma partição num diretório, o conteúdo desse diretório ficará inacessível até que a partição seja desmontada (os dados ficam intactos).

OpçãoDescrição
-aMonta todos as ártições listado em fstab.
-lExibe todos os FS montados e onde.
-rMonta como comente leitura, idem -o ro.
-wMonta como leitura e gravação, idem -o rw.
-LMonta o device usando o Label.
-UMonta o device usando o UUID.
-t (tipo)Informa o FS na montagem (Muito usado para nfs, nfs4, cifs, smbfs e ncpfs).
Comando sem opção exibirá tudo o que está montado (igual a -l).
-o (opções)Escolhe opções na hora da montagem.
Opções do -o
defaultOpção padrão: auto, async, dev, exec, rw, suid e nouser.
autoOs devices podem ser montados com a opção '-a'.
noautoO device deverá ser montado de forma manual.
syncOperações de entrada e saída são feitas de forma síncrona. Grava direto no disco.
asyncOperações de entrada e saída são feitas de forma assíncrona. Grava primeiro em cache e depois no Disco.
devInterpreta device especiais de caractere ou bloco.
nodevNão interpreta device especiais de caractere ou bloco.
execPermite a execução de binários.
noexecNão permite a execução de binários.
remountRemonta um FS que já esteja montado.
roMonta como somente leitura.
rwMonta como leitura e escrita.
suidPermite a utilização de de bits especiais como SUID e SGID.
nosuidNão permite a utilização de de bits especiais como SUID e SGID.
userPermite que qualquer usuário consiga montar o FS (Somente quem monta pode desmontar.
nouserNão permite que usuários comuns possam montar.
usersSimilar a user, só que aqui, qualquer usuário pode desmontar.
groupPermite que um usuário monte o sistema de arquivos se o usuário pertencer ao mesmo grupo que possui o dispositivo que o contém.
ownerPermite que um usuário dono do device (/dev/sda por exemplo) monte um sistema de arquivos.
usrquotaHabilita sistema de quota para usuários.
grpquotaHabilita sistema de quota para grupos.
atime e noatimePor padrão, toda vez que um arquivo é lido, as informações de tempo de acesso são atualizadas. Desativar isso (com noatime) pode acelerar a E/S do disco. Não confunda isso com a hora da modificação, que é atualizada sempre que um arquivo é gravado.
errors={continue|remount-ro|panic}Essencialmente, quando houver um erro ao montar o disco com privilégios de leitura/gravação, ele irá montá-lo como 'somente leitura' remount-ro.
Ignora o erro continue
Kernel Panic panic.

Caso o user root adicione user ou users ao ponto de montagem, para que qualquer usuário possa montar, basta dar mount <device> ou mount <diretório> que irá montar.


## Para reparar uma maquina, as vezes temos que montar esses sistemas
## quando a máquina não inicializa por sí só, ex: o sistema não inicia,
## podemos montar o hd do Linux, entrar com 'chroot' e então montar essas
## partições virtuais.

# Para montar um /proc, usamos o comando abaixo:
sudo mount -t proc none /proc

# Para montar o /sys (sysfs), use o comando abaixo:
sudo mount -t sysfs none /sys

# Para montar o /dev (udev), use o comando abaixo:
sudo mount -t devtmpfs -o bind /dev /dev

Para montar um device, podemos fazer isso de 3 formas simples:

  • Montar usando apenas o fstab:

    $ sudo mount -a

  • Montar usando o device mais o fstab:

    $ sudo mount /dev/sdb1

    Lembrando que neste caso, deve existir o mapeamento de montagem desse device no fstab.

  • Montar manualmente:

    $ sudo mount /dev/sda1 /mnt



BIND

Associa um diretório a outro, muito similiar com um link, ou seja, estou montando um diretório em outro lugar (A informação de como acessar esse diretório fica acessível por dois lugares).

# Fazendo o bind de um diretório com ponto de montagem:
$ $ sudo mount --bind /etc montar/

# Visualizando
$ df -a montar/
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda3 129125532 1909600 120613692 2% /home/vagrant/montar

# Agora podemos acessar o /etc/ atrás do ~/montar:
$ ls montar/fstab
montar/fstab


UMOUT


Usado para desmontar uma device que esta montado.

#### Montando uma partição/FS.
# montando a partição vdb1 em /mnt
$ sudo mount /dev/vdb1 /mnt/

# Demontando 2 formas:
$ sudo umount /dev/vdb1

$ sudo umount /mnt/


# As vezes podemos ter uma partição montada e outras partições montada dentro dela, exemplo: sda1 -> /mnt -- sda2 -> /mnt/boot -- sda3 -> /mnt/boot.

# Para desmontar tudo que está dentro de /mnt usamos a opção -R
$ sudo umount -R /mnt

Lidando com Arquivos Abertos

Ao tentar desmontar um device, voce pode encontrar a mensagem target is busy, impedindo de desmontar a unidade, isso acontece porque algum arquivo que está dentro da unidade está em uso. Para verificar isso podemos usar o comando lsof.

# Tentando desmontar com arquivos abertos:
$ sudo umount /mnt
umount: /mnt: target is busy.

# Verificando arquivos abertos nessa partição:
$ sudo lsof /dev/vdb1
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
vim 5226 root 4u REG 254,17 12288 12 /mnt/.teste.txt.swp


FSTAB


O arquivo /etc/fstab contém descrições sobre os sistemas de arquivos que podem ser montados. Este é um arquivo de texto, onde cada linha descreve um sistema de arquivos a ser montado, normalmente os devices que estão nesse arquivo são montados no boot, logo depois da raiz / ser montada, com seis campos por linha na seguinte ordem:

  • Device, UUID ou Label

    Informação da partição que será montada, pode ser o nome /dev/sdb1 ou seu UUID UUID="ca67fdb6-e5a1-4c3a-9a22-ca7276c00854".

    Podemos obter essas informações com blkid ou lsblk -f.

  • Ponto de montagem

    Onde será montado a partição.

  • Tipo

    Referente ao FileSystem que será montado, de qual tipo é? Se colocarmos a opção auto, o próprio sistema se encarrega de descobrir.

  • Opções

    Aqui podemos especificar uma gama de opções (Veja em Opções do -o em Mount).

  • Dump

    Método de backup ao iniciar a máquina 0 desliga e 1 habilita o backup.

  • Pass

    Checagem do FS no boot (fsck), 0 desliga, 1 usado para verificação da partição-raiz (primeira partição a ser verificada) e 2 todas as outras partições, não pode ter 2 partições com valor de 1.

####### Exemplo de FSTAB:
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda3 during installation
UUID=38bbc7c8-c0bd-44e5-83d9-1dcffa20f921 / ext4 errors=remount-ro 0 1
# /boot was on /dev/sda1 during installation
UUID=9dff0333-ba47-4cff-89d7-c9361a4b73bf /boot ext4 defaults 0 2
# swap was on /dev/sda2 during installation
UUID=2d05cae6-b8eb-416b-a936-97457b2135a8 none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0


LSBLK


Mostra os discos mais os pontos de montagem, caso existam.

$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 252:0 0 128G 0 disk
├─vda1 252:1 0 487M 0 part /boot
├─vda2 252:2 0 1.9G 0 part [SWAP]
└─vda3 252:3 0 125.6G 0 part /

# Usando o '-f' para ver Labels (caso tenha) e UUID:
$ lsblk -f
NAME FSTYPE LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
vda
├─vda1 ext4 06f9bb7b-a89e-485c-9f2a-d71facd28b2a 196.5M 49% /boot
├─vda2 swap 16e9ede5-c783-4462-83f0-70252d84b949 [SWAP]
└─vda3 ext4 22d80f1c-40d0-428a-82ba-7f0e93043055 81.2G 29%


BLKID


Mostra o UUID e mais algumas informações sobre as partições.

$ sudo blkid
/dev/vda1: UUID="9dff0333-ba47-4cff-89d7-c9361a4b73bf" TYPE="ext4" PARTUUID="0922579e-01"
/dev/vda2: UUID="2d05cae6-b8eb-416b-a936-97457b2135a8" TYPE="swap" PARTUUID="0922579e-02"
/dev/vda3: UUID="38bbc7c8-c0bd-44e5-83d9-1dcffa20f921" TYPE="ext4" PARTUUID="0922579e-03"
/dev/vdb1: UUID="ca67fdb6-e5a1-4c3a-9a22-ca7276c00854" TYPE="ext4" PARTUUID="b6fd0fab-01"
/dev/vdb2: LABEL="teste_xfs" UUID="ecce3932-8cf1-45a5-b2b3-7e15740c2d85" TYPE="xfs" PARTUUID="b6fd0fab-02"


SystemD


É possível efetuar montagens de discos(partições e FS) através do SystemD, para isso precisamos criar uma nova Unit do tipo mount, por boas práticas coloque sempre /etc/systemd/system/.

# Crie uma partição onde vamos montar pelo systemd:
$ sudo mkdir mnt-systemd_montar.mount

# Crie o arquivo (o nomde do arquivo tem que dar match com o nome da Unit (troque / por -)):
$ sudo vim /etc/systemd/system/mnt-systemd_montar.mount
# Exemplo, se o diretório de montagem for /zbc/ryt, o nome da unit dever ser 'zbc-ryt.mount'


[Unit]
Description="Teste de montagem com SystemD"

[Mount]
What=/dev/vdb1
Where=/mnt/systemd_montar
Type=ext4
Options=defaults

[Install]
WantedBy=multi-user.target


# Recarregue o daemon do systemd:
$ sudo systemctl daemon-reload

# Inicie o serviço
$ sudo systemctl start mnt-systemd_montar.mount

# Verifique o status:
sudo systemctl status mnt-systemd_montar.mount

# Verifique com lsblk onde está montado:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 254:0 0 128G 0 disk
|-vda1 254:1 0 487M 0 part /boot
|-vda2 254:2 0 1.9G 0 part [SWAP]
`-vda3 254:3 0 125.6G 0 part /
vdb 254:16 0 20G 0 disk
|-vdb1 254:17 0 2.8G 0 part /mnt/systemd_montar
`-vdb2 254:18 0 17.2G 0 part
vdc 254:32 0 20G 0 disk

O systemd usa o comando mount no backend para montar as partições, para habilitar no boot do sistema, rode o comando sudo systemctl enable mnt-systemd_montar.mount.