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ção | Descrição |
---|---|
-a | Monta todos as ártições listado em fstab. |
-l | Exibe todos os FS montados e onde. |
-r | Monta como comente leitura, idem -o ro . |
-w | Monta como leitura e gravação, idem -o rw . |
-L | Monta o device usando o Label. |
-U | Monta 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 | |
default | Opção padrão: auto, async, dev, exec, rw, suid e nouser. |
auto | Os devices podem ser montados com a opção '-a'. |
noauto | O device deverá ser montado de forma manual. |
sync | Operações de entrada e saída são feitas de forma síncrona. Grava direto no disco. |
async | Operações de entrada e saída são feitas de forma assíncrona. Grava primeiro em cache e depois no Disco. |
dev | Interpreta device especiais de caractere ou bloco. |
nodev | Não interpreta device especiais de caractere ou bloco. |
exec | Permite a execução de binários. |
noexec | Não permite a execução de binários. |
remount | Remonta um FS que já esteja montado. |
ro | Monta como somente leitura. |
rw | Monta como leitura e escrita. |
suid | Permite a utilização de de bits especiais como SUID e SGID. |
nosuid | Não permite a utilização de de bits especiais como SUID e SGID. |
user | Permite que qualquer usuário consiga montar o FS (Somente quem monta pode desmontar. |
nouser | Não permite que usuários comuns possam montar. |
users | Similar a user , só que aqui, qualquer usuário pode desmontar. |
group | Permite 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. |
owner | Permite que um usuário dono do device (/dev/sda por exemplo) monte um sistema de arquivos. |
usrquota | Habilita sistema de quota para usuários. |
grpquota | Habilita sistema de quota para grupos. |
atime e noatime | Por 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 UUIDUUID="ca67fdb6-e5a1-4c3a-9a22-ca7276c00854"
.Podemos obter essas informações com
blkid
oulsblk -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 e1
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) e2
todas as outras partições, não pode ter 2 partições com valor de1
.
####### 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
.