web-dev-qa-db-ja.com

aufsを使用しているルートファイルシステムをきれいにアンマウントする方法

序文: SquashFSとaufsを使用してDebian/Ubuntuを起動するブートイメージを作成しました。イメージには、squashfsイメージに圧縮された、クリーンアップされたdebootstrapインストールが含まれています。

Squashfsイメージは、私のファイルシステムの読み取り専用部分と見なされます。ローカルハードドライブは、ルートファイルシステムの書き込み可能な部分と見なされます。

Rootfsのすべてのセットアップは、switch_rootを呼び出してDebian/Ubuntuを起動するinitramfsから行われます。 rootfs自体は、スカッシュイメージ(ro)とハードドライブ(rw)のaufsを使用してマウントされます。

Initramfsが実行されているときに、ハードドライブがきれいにアンマウントされているかどうかを確認します。 'fsck -Cp'を呼び出して、マウントする前にクリーンであることを確認します(わかっているはずですが、できません)。

The Problem:私が抱えている問題は、ルートファイルシステムの書き込み可能な部分が適切にアンマウントされず、クリーンでない状態(hddなど)のままになることです。

問題の根本は、hddがaufsファイルシステムによって使用されていることです。 aufsファイルシステムは明らかにrootfsによって使用されています。次に、Debian/Ubuntuのシャットダウン手順を変更して、これを許可する必要があると考えています。

これまでに行ったこと:最初にランレベル1に移行し、rootfsとhddのro-remountを強制することにより、手動でシャットダウンしようとしましたが、hddはまだクリーンにアンマウントされていません。

また、ハードドライブマウントの外側にxinoファイルを作成するオプションを追加することで、aufsのマウント方法を変更しました。作成されているファイルを見ることができず、lsofを使用してハードドライブ上の開いているファイルを見ることができません。

最後に重要なことですが、Ubuntuインストールのfstabにハードドライブを追加して認識させました。ただし、Debian/Ubuntuがシャットダウンしても、変更はありませんでした:(

最初にルートファイルシステムをアンマウントしないとハードドライブをアンマウントできないため、その外観から、「鶏と卵」の問題を作成しました。ハードドライブをアンマウントする必要がありますlol。

コマンドを適切にアンマウントするために、どのコマンドを実行するべきかについて、私は最もわかりにくい考えを持っています。そのため、どんな助けにも大変感謝しています。

4
djBo

Squashfs + aufsを使用していても、単純なext2/ext3/ext4を使用していても、ルートファイルシステムをアンマウントすることはできません。

できることは、読み取り専用で再マウントすることです。これは、データの整合性の観点から同じです。通常のファイルシステムの場合:

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

aufs自体が読み取り専用にされている間も、そのawsのrw-backingが書き込み可能であることを確認する必要があるため、多少異なることに注意してください...たとえば、/ mnt/sq/rwがext4であると仮定aufs "/"マウントの読み書き部分:

 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

本番環境では、明らかにデバッグ情報は必要ありません...

つまり、ディスクにフラッシュし、ext4オーバーレイへの書き込みを必要とするaufs機能を無効にしてから、ext4自体を強制的に同期させて読み取り専用にすることで、次回の起動時に完全にマウント解除されたとマークされます。

2
Matija Nalis