
Definição
Bind Mount em português significa algo do tipo montagem ligada ou montagem de ligação, ou ainda montagem vinculada 🙂 Não há uma tradução exata.
Atenção: bind mounts não monta um disco em outro disco, mas sim uma pasta em outra.
Descrição
É possível vincular duas pastas de forma que tenham sempre o mesmo conteúdo e a alteração feita em uma seja refletida na outra, usando:
mount –bind /pasta01 /pasta01_ligada
Ao invés de –bind poderia usar também -B
mount -B /pasta01 /pasta01_ligada
Com isso, o conteúdo de /pasta01 será o mesmo de /pasta01_ligada.
Ambiente Usado em nosso Laboratório
Usarei dois discos: sdd1 e sde1
- sdd1 montato em /disco_bind01
- sde1 montado em /disco_bind02
[elder@centos65 ~]$ df -PhT | tail -n02 /dev/sde1 ext4 988M 1,3M 936M 1% /disco_bind02 /dev/sdd1 ext4 988M 1,3M 936M 1% /disco_bind01
Usando Bind Mounts
- Crie a pasta /disco_bind01/documentos e /disco_bind02/documentos_bind
[elder@centos65 ~]$ mkdir /disco_bind01/documentos [elder@centos65 ~]$ mkdir /disco_bind02/documentos_bind
- Remonte usando bind as pastas criadas acima
[elder@centos65 ~]$ sudo mount --bind /disco_bind01/documentos /disco_bind02/documentos_bind
- Execute o comando mount para que seja exibida as montagens
[elder@centos65 ~]$ mount /dev/mapper/vg_centos65-lv_root on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw) /dev/sda1 on /boot type ext4 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) /dev/sde1 on /disco_bind02 type ext4 (rw) /dev/sdd1 on /disco_bind01 type ext4 (rw) /disco_bind01/documentos on /disco_bind02/documentos_bind type none (rw,bind)
Realcei de laranja as pastas montadas com “mount –bind”
Veja no final da linha alaranjada a palavra bind, indicando que a pasta está montada em outra pasta. - crie um arquivo dentro de “/disco_bind01/documentos”
[elder@centos65 ~]$ touch /disco_bind01/documentos/teste_usando_bind.tx
- liste o conteúdo de /disco_bind02/documentos e veja que o arquivo está lá também
[elder@centos65 ~]$ ls /disco_bind02/documentos_bind/ teste_usando_bind.txt
- Criei alguns arquivos para prosseguirmos.
[elder@centos65 ~]$ touch /disco_bind01/documentos/arquivos_bind{1..5}.txt [elder@centos65 ~]$ ls -1 /disco_bind02/documentos_bind/ arquivos_bind1.txt arquivos_bind2.txt arquivos_bind3.txt arquivos_bind4.txt arquivos_bind5.txt teste_usando_bind.txt
Acima, criei os arquivos em um diretório e eles aparecem no outro diretório que está ligado.
Desmontando um dos Discos/Partições
- Aqui desmontarei a partição sdd1
[elder@centos65 ~]$ sudo umount /dev/sdd1
Vendo montagens com df
[elder@centos65 ~]$ df -PhT Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/vg_centos65-lv_root ext4 13G 3,2G 9,0G 26% / tmpfs tmpfs 499M 0 499M 0% /dev/shm /dev/sda1 ext4 477M 49M 403M 11% /boot /dev/sde1 ext4 988M 1,3M 936M 1% /disco_bind02
sdd não está mais presente. Mas o comando mount ainda mostra o remontagem das pastas mesmo o disco não estando mais montado.
[elder@centos65 ~]$ mount | tail -n 1 /disco_bind01/documentos on /disco_bind02/documentos_bind type none (rw,bind)
- Desmonte agora sde1Agora vem o problema. Como o comando mount exibe a montagem das pastas como se estivesse ativa o erro abaixo é apresentado.
[elder@centos65 ~]$ sudo umount /dev/sde1 umount: /disco_bind02: device is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1))
Não foi possível desmontar porque /dev/sde1 está ocupado.
Usei lsof e fuser para ver qual processo está usando sde1 e não foi retornado nada.[elder@centos65 ~]$ fuser /dev/sde1 [elder@centos65 ~]$ lsof /dev/sde1
fuser e lsof não retornaram nada. Mas como sabemos, através do comando mount, a montagem ainda existe.
Consegui desmontar /dev/sde1 desmontando primeiramente /disco_bind01/documentos usando a opção -l.
[elder@centos65 ~]$ sudo umount -l /disco_bind01/documentos [elder@centos65 ~]$ sudo umount /dev/sde1
- Monte /dev/sdd1
[elder@centos65 ~]$ sudo mount /dev/sdd1 /disco_bind01
- Liste os todos(-R) os arquivos
[elder@centos65 ~]$ sudo ls -lR /disco_bind01/ /disco_bind01/: total 20 drwxrwxr-x 2 elder elder 4096 Out 16 15:24 documentos drwx------ 2 root root 16384 Out 16 14:33 lost+found /disco_bind01/documentos: total 0 -rw-rw-r-- 1 elder elder 0 Out 16 15:24 arquivos_bind1.txt -rw-rw-r-- 1 elder elder 0 Out 16 15:24 arquivos_bind2.txt -rw-rw-r-- 1 elder elder 0 Out 16 15:24 arquivos_bind3.txt -rw-rw-r-- 1 elder elder 0 Out 16 15:24 arquivos_bind4.txt -rw-rw-r-- 1 elder elder 0 Out 16 15:24 arquivos_bind5.txt -rw-rw-r-- 1 elder elder 0 Out 16 15:16 teste_usando_bind.txt /disco_bind01/lost+found: total 0
Veja que os arquivos permanecem acima.
- Vamos refazer a montagem e vincular uma pasta na outra.
[elder@centos65 ~]$ sudo mount /dev/sde1 /disco_bind02
e agora o bind mount
[elder@centos65 ~]$ sudo mount --bind /disco_bind01/documentos /disco_bind02/documentos_bind
Aqui estão as pastas vinculadas uma à outra:
[elder@centos65 ~]$ mount | tail -n 1 /disco_bind01/documentos on /disco_bind02/documentos_bind type none (rw,bind)
Desmontando uma Partição e Excluindo Arquivos da que Permanece Montada
- Desfaça o vínculo
[elder@centos65 ~]$ sudo umount /disco_bind02/documentos_bind
- Desmonte o /dev/sde1 e exclua os arquivos do /dev/sdd1
[elder@centos65 ~]$ sudo umount /dev/sde1
[elder@centos65 ~]$ rm /disco_bind01/documentos/arquivos_bind*
Ficou apenas um arquivo
[elder@centos65 ~]$ ls -1 /disco_bind01/documentos/ teste_usando_bind.txt
Com os Arquivos excluídos, o que acontecerá se voltarmos a montar a outra partição e recriarmos o vínculo?
- Monte a partição /dev/sde1 e refaça o vínculo
[elder@centos65 ~]$ sudo mount /dev/sde1 /disco_bind02
[elder@centos65 ~]$ sudo mount -B /disco_bind01/documentos /disco_bind02/documentos_bind
- Exiba o conteúdo das pastas documentos e documentos_bind.
[elder@centos65 ~]$ ls -1 /disco_bind01/documentos/ /disco_bind02/documentos_bind/ /disco_bind01/documentos/: teste_usando_bind.txt /disco_bind02/documentos_bind/: teste_usando_bind.txt
O pior aconteceu!!!! A partição com documentos excluídos sobrescreveu a outra partição recém montada e eliminou os arquivos de lá também.
O correto a ser feito nesse caso é, antes de remontar uma pasta em outra, copiar os dados do disco que está mais atualizado e somente depois criar o vínculo entre as pastas.
Conclusão
Bind Mounts é útil porque podemos praticamente espelhar uma pasta de um disco em outro e assim teremos acesso redundante. Mas é bom termos em mente que isso não serve como uma forma de backup.
Siga-nos em nossas redes:
Link Facebook: https://www.facebook.com/gnulinuxbr
Link WhatsApp: https://chat.whatsapp.com/G9xS3Ylzoou3TrN49DQso4
Link Telegram: https://t.me/gnulinux_brasil
YouTube: https://www.youtube.com/channel/UCwyFWDqE0v7SwpZenjmzxYQ
One Comment to “O que é Bind Mounts em Linux?”