Como desmontar de forma limpa um sistema de arquivos raiz que está usando aufs

3

Prefácio: Criei uma imagem de inicialização que inicializa o Debian / Ubuntu usando SquashFS e aufs. A imagem contém uma instalação limpa do debootstrap, compactada em uma imagem do squashfs.

A imagem do squashfs é considerada a parte só de leitura do meu sistema de arquivos. O disco rígido local é considerado a parte gravável do meu sistema de arquivos raiz.

Toda a configuração do rootfs é feita pelo initramfs, que chama o switch_root para iniciar o Debian / Ubuntu. O rootfs em si é montado usando aufs na imagem de squash (ro) e no disco rígido (rw).

Quando o initramfs está em execução, eu verifico se o disco rígido está desmontado corretamente. Eu tenho certeza que está limpo antes de montá-lo chamando 'fsck -Cp' (eu sei, eu não deveria).

O problema: O problema que tenho é que a parte gravável do meu sistema de arquivos raiz nunca é desmontada corretamente, deixando-o (por exemplo, o hdd) em um estado impuro.

A base do problema é obviamente que o hdd está em uso pelo sistema de arquivos aufs. O sistema de arquivos aufs está obviamente em uso pelos rootfs. Ao lado disso, eu acho que o procedimento de desligamento do Debian / Ubuntu deve ser modificado para permitir isso.

O que eu fiz até agora: Eu tentei desligar manualmente, entrando primeiro no nível de execução 1, e forçando o ro-remounts do rootfs e do hdd, mas o disco rígido ainda não está montado corretamente.

Eu também alterei a maneira como o aufs é montado adicionando uma opção para criar o arquivo xino fora da montagem do disco rígido. Eu nunca vejo o arquivo sendo criado, nem consigo ver nenhum arquivo aberto no disco rígido usando o lsof.

Por último, mas não menos importante, adicionei o disco rígido ao fstab da instalação do Ubuntu para que ele o reconheça. Não mudou nada quando o Debian / Ubuntu foi desligado: (

Pelo que parece, criei um problema "frango e ovo" , já que não consigo desmontar o disco rígido sem primeiro desmontar o sistema de arquivos raiz, que preciso desmontar o disco rígido lol .

Eu não tenho a menor idéia de quais comandos executar, a fim de desmontá-lo corretamente, então qualquer ajuda é muito apreciada.

    
por djBo 27.08.2012 / 13:44

1 resposta

0

Você nunca pode desmontar o sistema de arquivos raiz, desculpe - não importa se você está usando squashfs + aufs, ou simplesmente ext2 / ext3 / ext4 ...

O que você pode fazer é remontá-lo somente para leitura, o que é o mesmo do ponto de vista da integridade dos dados. Para o sistema de arquivos regular:

mount -oremount,ro /
sync # initiate writing any pending writes to disk
sleep 5 # and give writes some time to finish.

observe que aufs é um pouco diferente, já que você deve assegurar-se de que o rw-backing ainda seja gravável enquanto o próprio aufs está sendo colocado como somente leitura ... por exemplo, assumindo / mnt / sq / rw é a parte de leitura / gravação ext4 do seu aufs " / " mount:

 cat /proc/mounts > /etc/mtab # may not be needed if your mtab is symlink or otherwise reflects real situation
 fuser -mv / # show debug of what is using this disk and blocking unmount/ro-remount, if anything
 auplink / flush 
 mount -oremount,noxino,noplink,ro /
 mount -oremount,sync /mnt/sq/rw
 mount -oremount,mod:/mnt/sq/rw=ro /
 mount -oremount,ro /mny/sq/rw
 sync
 sleep 5
 cat /proc/mounts
 dmesg
 sleep 300 # to give you time to read mounts/dmesg info
 halt -d -f

na produção, você obviamente não precisará de informações de depuração ...

Em suma, você libera para o disco e desabilita os recursos que requerem escrita para o overlay do ext4, então força o próprio ext4 a sincronizar e vai somente leitura, então ele será marcado como desmontado da próxima vez que você inicializar.

    
por Matija Nalis 23.06.2014 / 12:56