O que é Bind Mounts em Linux?

pastas vinculadas
pastas vinculadas

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

 

  1. Crie a pasta /disco_bind01/documentos   e   /disco_bind02/documentos_bind
    [elder@centos65 ~]$ mkdir /disco_bind01/documentos
    [elder@centos65 ~]$ mkdir /disco_bind02/documentos_bind
  2. Remonte usando bind  as pastas criadas acima
    [elder@centos65 ~]$ sudo mount --bind /disco_bind01/documentos   /disco_bind02/documentos_bind
  3. 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.

  4. crie um arquivo dentro de “/disco_bind01/documentos”
    [elder@centos65 ~]$ touch /disco_bind01/documentos/teste_usando_bind.tx
  5. 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
  6. 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

  1. 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)
  2. 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
  3. Monte /dev/sdd1
    [elder@centos65 ~]$ sudo mount /dev/sdd1 /disco_bind01
    
    
    
  4.  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.

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

  1. Desfaça o vínculo
    [elder@centos65 ~]$ sudo umount /disco_bind02/documentos_bind
  2. 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?

  3. 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
  4. 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

 

 

 

Leitor voraz e um dos administradores do GNU/Linux Brasil no Whatsapp, facebook, youtube e nesse dito site: www.gnulinuxbrasil.com.br

One thought on “O que é Bind Mounts em Linux?

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *