Por padrão, o systemd cai para um shell de emergência com o menor erro. Por exemplo, se uma das montagens no fstab falhar por algum motivo, o sistema se tornará não inicializável imediatamente. Eu gerencio dezenas de diversos sistemas de produção e achei esse comportamento muito prejudicial. (Na verdade, acho que é uma falha grave no design, mas é uma opinião pessoal).
Eu gostaria de aumentar a resiliência de inicialização do sistema. De maneira ideal, o sistema sempre deve inicializar, faltando drivers, montagens etc. não deve interromper o shell de emergência (apenas mostrar aviso), a menos que o erro especificado torne o login do console absolutamente impossível. O que pode ser executado, isso deve ser executado.
Eu sei que o systemd gera automaticamente arquivos * .mount a partir do / etc / fstab e eu poderia usar a opção nofail com um pequeno tempo limite do x-systemd.device (ou definir eu mesmo os arquivos .mount relevantes). No entanto, isso não resolveria o meu problema, quero tornar o sistema mais resiliente, "corrigir" o fstab toda vez não é muito conveniente e não tenho certeza de quantos outros "problemas" possíveis existem que tornariam meu sistema impossível de inicializar apenas porque algum desenvolvedor em algum lugar achou importante o suficiente.
De certa forma, gostaria de recuperar o controle sobre minha máquina e não deixar o sistema decidir qual problema é grave o suficiente para interromper o processo de inicialização. É possível?
fonte
Respostas:
É literalmente apenas falhas de montagem, é tudo que você precisa mudar.
Portanto, a carta do seu pedido seria trivial para responder. Crie um arquivo drop-in:
Acredito que isso não trará novos problemas, além daqueles que o linux sysvinit já sofreu ao permitir esse cenário de falha parcial.
No entanto, você também apontou a questão de quanto tempo o systemd deve esperar que os dispositivos de bloco especificados estejam disponíveis. Não vejo como configurá-lo, sem fornecer um substituto para o gerador fstab como um todo. https://www.freedesktop.org/software/systemd/man/systemd.generator.html
Se você despejar uma grande quantidade de código menos utilizado aqui, parece improvável aumentar a resiliência do sistema. Eu acho que a solução mais próxima seria consertar o gerador fstab existente. Não é muito complexo, eu suspeito que você possa se safar / acompanhar as mudanças significativas.
Tecnicamente, se sua distribuição tiver um
mountall
script sysvinit independente , você pode tentar conectar isso. Mas isso mudará significativamente o processo de inicialização - na verdade, é mais um garfo. Eu não recomendaria essa abordagem.https://unix.stackexchange.com/a/393711/29483
fonte
[Unit]\nOnFailure=
no meu nofail.conf. Parece ser possível configurar o tempo de espera no /etc/systemd/system.conf (através da opção genérica DefaultTimeoutStartSec). Meus sistemas geralmente são rápidos o suficiente, os anos 90 parecem ser um exagero de qualquer maneira. Esta solução parece ser promissora.OnFailure=
em/lib/systemd/system/local-fs.target
vez de/etc/systemd
(Ubuntu 16.04 no AWS)[Unit]
antesOnFailure=
.Desative a montagem automática de qualquer sistema de arquivos que não seja essencial para a operação de inicialização adicionando uma
noauto
opção de montagem à sua/etc/fstab
entrada:para:
e monte o sistema de arquivos após a inicialização usando uma linha em
/etc/rc.local
:Este exemplo usa o NFS, mas também é aplicável aos LUNs importados de um servidor de arquivos.
fonte
Tente isso, talvez?
fonte