Como a opção de montagem _netdev no / etc / fstab funciona?
24
Gostaria de saber qual é o mecanismo exato (implementação) usado para adiar a montagem até que a interface de rede seja ativada quando alguém usar a _netdevopção /etc/fstab?
Não systemdalterar esse comportamento?
Além disso, o que a delay_connectopção para sshfs fornece o _netdevque não fornece ?
_netdev
O sistema de arquivos reside em um dispositivo que requer acesso à rede (usado para impedir que o sistema tente montar esses sistemas de arquivos até que a rede seja ativada no sistema).
O /etc/init.d/mountall.shscript init monta apenas sistemas de arquivos locais:
mount -a -t nonfs,nfs4,smbfs,cifs,ncp,ncpfs,coda,ocfs2,gfs,gfs2,ceph -O no_netdev
Outros sistemas de arquivos são montados por scripts init separados, como por exemplo /etc/init.d/mountnfs.sh, que declaram (via cabeçalhos LSB) sua dependência $network. Assim, eles são agendados mais tarde, após a criação da rede, enquanto mountall.shpodem ser executados muito mais cedo.
systemd
As unidades de montagem local são puxadas por local-fs.target, as remotas por remote-fs.target. systemd-fstab-generatorvarre /etc/fstab, gera unidades de montagem e as atribui aos destinos acima com base em condições semelhantes às acima.
delay_connect
Essa opção significa que o sshfs não iniciará a conexão SSH com o servidor remoto no momento da montagem, mas somente o fará na primeira operação do sistema de arquivos que realmente a exigir. Isso atrasa o relatório de erros, mas pode ser uma solução alternativa útil em alguns casos, por exemplo, se o sistema init não tiver informações suficientes para ordenar a operação de montagem corretamente. "A rede" sendo "ativa" é um termo bastante flexível , e mesmo que se possa adicionar dependências extras arbitrárias para montar unidades, isso não ajuda se o evento acionador não fizer parte da transação de inicialização (na linguagem systemd).
Então, você está dizendo que _netdevnão pretende ser um argumento transmitido ao processo que executa mount (e que é específico ao tipo de montagem ext4/btrfs/cifs/fuse), mas que deve ser lido por outros processos / scripts que, com base nesse sinalizador, decidem quando durante o processo de inicialização, essas montagens devem ser executadas. Sim? Nesse caso, desconfio que essa seja a razão pela qual esse argumento começa com sublinhado para diferenciá-lo de outros argumentos formais .
Piotr Dobrogost
Sim. Se você passar a _netdevopção para o mountcomando, ela ficará visível, /proc/mountsmas não terá outro efeito.
Ferenc Wágner
Pergunta bônus; isso está documentado em algum lugar?
Piotr Dobrogost
11
O manual de montagem contém: "OPÇÕES DE MONTAGEM INDEPENDENTE DO ARQUIVO DE SISTEMA - Algumas dessas opções são úteis apenas quando aparecem no /etc/fstabarquivo." Bem, _netdev(documentado um pouco mais tarde), é um bom exemplo disso.
A partir man systemd.mountda versão 231 do systemd:
As unidades de montagem referentes aos sistemas de arquivos locais e de rede são diferenciadas por suas especificações de tipo de sistema de arquivos. Em alguns casos, isso não é suficiente (por exemplo, montagens baseadas em dispositivo de bloco de rede, como iSCSI); nesse caso, _netdev pode ser adicionado à cadeia de opções de montagem da unidade, o que força o systemd a considerar a unidade de montagem como uma montagem de rede.
Awsome! Não faço ideia por que essa resposta ainda não foi votada.
Valentin Bajrami
1
Upstart/Udev
Para upstarte / ou udevsistemas baseados, isso é um pouco diferente.
Parece udevque ainda tentará montar os sistemas de arquivos NFS e netfsé uma rede de segurança para quando isso falhar.
Por favor me corrija se eu estiver errado. De qualquer forma, essa resposta é relevante apenas para alguns sistemas legados recentes (Ubuntu 14.04 LTS, RHEL6).
_netdev
não pretende ser um argumento transmitido ao processo que executa mount (e que é específico ao tipo de montagemext4/btrfs/cifs/fuse
), mas que deve ser lido por outros processos / scripts que, com base nesse sinalizador, decidem quando durante o processo de inicialização, essas montagens devem ser executadas. Sim? Nesse caso, desconfio que essa seja a razão pela qual esse argumento começa com sublinhado para diferenciá-lo de outros argumentos formais ._netdev
opção para omount
comando, ela ficará visível,/proc/mounts
mas não terá outro efeito./etc/fstab
arquivo." Bem,_netdev
(documentado um pouco mais tarde), é um bom exemplo disso.A partir
man systemd.mount
da versão 231 do systemd:fonte
Upstart/Udev
Para
upstart
e / ouudev
sistemas baseados, isso é um pouco diferente.Parece
udev
que ainda tentará montar os sistemas de arquivos NFS enetfs
é uma rede de segurança para quando isso falhar.Por favor me corrija se eu estiver errado. De qualquer forma, essa resposta é relevante apenas para alguns sistemas legados recentes (Ubuntu 14.04 LTS, RHEL6).
fonte