Como posso especificar a ordem em que os sistemas de arquivos são montados automaticamente?

14

Eu preciso que uma linha específica /etc/fstabseja montada sempre após duas outras linhas:

# Always mount these first
UUID=fdf38dd4-9e9d-479d-b830-2a6989958503 / ext4 noatime,discard,errors=remount-ro 0 1
UUID=2b548eb8-fa67-46ce-a998-91d587dba62f /home/.hdd ext4 errors=remount-ro 0 2

# Always mount this second
none /home/ak aufs br:/home/.ssd/ak=rw:/home/.hdd/ak=rw 0 0

O comportamento atual é reverter a ordem das duas últimas linhas de maneira imprevisível. Como posso especificar a ordem necessária?

ændrük
fonte
4
Solução possível (não testada): configure a última como noautoe monte rc.local?
Jg-faustus
@ jg-faustus Obrigado, a solução alternativa parece ter sucesso.
ændrük
@ jg-faustus Essa recompensa será encerrada em breve e sua solução alternativa é a coisa mais próxima de uma resposta. Se você publicá-lo abaixo, darei a você +50.
ændrük

Respostas:

17

Uma opção é adiar a montagem até depois de /etc/fstabconcluída, isso lhe dá controle total sobre a ordem de montagem.

Basta adicionar noautoàs opções de montagem no fstab e montar rc.local.

De acordo com a página do manual , mount -amonta as entradas fstabsequencialmente, enquanto a adição da opção -F('fork') as monta paralelamente. Parece que a inicialização padrão está usando 'fork', presumivelmente para reduzir o tempo de inicialização, então acho que montar (semi-) manualmente depois é a maneira mais simples de recuperar o controle da ordem de montagem.

jg-faustus
fonte
4

Eu posso considerar a configuração de um script que monta os segundos discos após a chamada do script de montagem. No Ubuntu initd é o serviço que inicia todos os componentes do seu sistema operacional e é chamado de inicial .

É baseado em eventos, ou seja, parece / espera e emite eventos durante o processo de inicialização. Como este post apontou , o serviço initd tenta fazer as coisas em paralelo, o que provavelmente está causando seus problemas. Portanto, você pode configurar seu script para ser executado logo após a montagem terminar e concluir os processos.

Os scripts de montagem são mantidos no diretório / etc / init /. Eu adicionaria seu script de montagem adicional também. Veja esta descrição do processo de inicialização. Esse site provavelmente o ajudará a obter o seu próprio script o mais rápido possível.

Você precisa iniciar a seção em seu próprio script. Consulte esta seção para iniciar um trabalho depois que um outro terminar.

Ainda estou pensando em como criar meus próprios scripts de inicialização, então não posso ser mais útil. Se você encontrar uma solução funcional, publique-a aqui.

nelaaro
fonte
4

O Ubuntu usa mountallno momento da inicialização, não mount -a. Mountall espera que os dispositivos subjacentes apareçam e, em seguida, monta o fs neles imediatamente, a menos que o fs sob o qual ele está sendo montado ainda não tenha sido montado, aguarde esse fs.

Você deve conseguir a ordem que deseja, definindo os pontos de montagem dos 3 sistemas de arquivos para que eles sejam empilhados um sob o outro. Em vez de montar os três em /home/.something, coloque o primeiro em /home/.x e o segundo em /home/.x/.y e o terceiro em /home/.x/.y/ .z.

psusi
fonte
3

O Systemd agora incluiu uma opção de dependência que impõe a ordem de montagem. No seu caso, adicione os argumentos fstab:

x-systemd.requires-mounts-for=/,x-systemd.requires-mounts-for=/home/.hdd

A opção noauto não funcionará se você precisar montar sobre outros sistemas de arquivos montados. No meu caso, o procedimento acima funcionou, consulte commit https://github.com/systemd/systemd/commit/3519d230c8bafe834b2dac26ace49fcfba139823 para obter mais detalhes.

techimperial
fonte
1

De acordo com man fstab, a showthroughopção pode ser o que você está procurando. Tente configurá-lo em / home / ak e veja se funciona.

É possível que mountbifurque-se ao montar sistemas de arquivos durante a inicialização; Nesse caso, a ordem em que suas partições são montadas seria indefinida.

Scott Severance
fonte
1
showthroughnão resolveu o problema.
ændrük