4.13. Monta Binds e Organiza a Montagem de Sistema de Arquivo
Quando você usa a opção
bind
do comando mount
, você deve certificar-se que os sistemas de arquivo são montados na ordem correta. No seguinte exemplo, o diretório /var/log
deve ser montado antes de executar a montagem bind no diretório /tmp
:
# mount --bind /var/log /tmp
A ordem das montagens do sistema de arquivo está determinada abaixo:
- Em geral, a montagem do sistema de arquivos é determinada pela ordem em que os sistemas de arquivos aparecem no arquivo
fstab
. As exceções para esta ordenação são sistemas de arquivos montados com o sinalizador_netdev
ou sistemas de arquivos que possuem seus próprios scriptsinit
. - Um sistema de arquivo com o próprio script
init
é montado mais tarde no processo de inicialização, após os sistemas de arquivo no arquivofstab
. - Os sistemas de arquivo montados com o sinalizador
_netdev
são montados quando a rede é ativada no sistema.
Se sua configuração requer que você crie um bind de montagem na qual montar um sistema de arquivos GFS2, você pode ordenar seu arquivo
fstab
conforme a seguir:
- Monte sistemas de arquivos locais que são requeridos para a
- Faz o bind de montagem no diretório no qual se montará o sistema de arquivos GFS2.
- Monte do sistema de arquivos GFS2.
Se sua configuração requer que você faça um bind de montagem em um diretório local ou sistema de arquivos em um sistema de arquivos GFS2, listando os sistemas de arquivos na ordem correta no arquivo
fstab
não montará os sistemas de arquivos corretamente já que o sistema de arquivos GFS2 não será montado até que o script init
do GFS2 seja rodado. Neste caso, você deve escrever um script init
para executar o bind de montagem, para que então esse não tome lugar até que o sistema GFS2 seja montado.
O script seguinte é um exemplo de um script
init
personalizado. Este script realiza um bind de montagem de dois diretórios em cima de dois diretórios de um sistema de arquivos GFS2. Neste exemplo, há um ponto de montagem GFS2 em /mnt/gfs2a
, que é montado quando o script init
do GFS2 roda, depois da inicialização do cluster.
Next script de exemplo, os valores da declaração
chkconfig
indicam o seguinte:
- 345 indica os níveis de execução em que o script será iniciado.
- 29 é a prioridade de início, que neste caso indica que o script será executado na hora da inicialização depois do script
init
do GFS2, que possui prioridade de início 26. - 73 é a prioridade de parada, que neste caso indica que o script será parado durante o desligamento antes do script GFS2 que possui uma prioridade de parada de 74.
Os valores de parada e início indicam que você pode manualmente realizar a ação indicada executando um comando de
início de serviço
e parada de serviço
. Por exemplo, se o script é chamado fredwilma
, então você pode executar service fredwilma start
.
O script deve ser colocado no diretório
/etc/init.d
com as mesmas permissões assim como os outros scripts nesse diretório. Você pode executar um comando chkconfig on
para ligar o script ao níveis de execução indicados. Por exemplo, se o script é chamado fredwilma
, então você pode executar chkconfig fredwilma on
.
#!/bin/bash # # chkconfig: 345 29 73 # description: mount/unmount my custom bind mounts onto a gfs2 subdirectory # # ### BEGIN INIT INFO # Provides: ### END INIT INFO . /etc/init.d/functions case "$1" in start) # In this example, fred and wilma want their home directories # bind-mounted over the gfs2 directory /mnt/gfs2a, which has # been mounted as /mnt/gfs2a mkdir -p /mnt/gfs2a/home/fred &> /dev/null mkdir -p /mnt/gfs2a/home/wilma &> /dev/null /bin/mount --bind /mnt/gfs2a/home/fred /home/fred /bin/mount --bind /mnt/gfs2a/home/wilma /home/wilma ;; stop) /bin/umount /mnt/gfs2a/home/fred /bin/umount /mnt/gfs2a/home/wilma ;; status) ;; restart) $0 stop $0 start ;; reload) $0 start ;; *) echo $"Usage: $0 {start|stop|restart|reload|status}" exit 1 esac exit 0