web-dev-qa-db-ja.com

複数のレイヤーを使用したOverlayfsのリロード(aufsからの移行)

Overlayfsの移行の頭痛の種の1つに出くわしました。 aufsを使用すると、複数のROレイヤーを指定でき、それらの一部のファイルの更新は再マウントで更新されました。

aufsを使用したfstab:

aufs    /etc                       aufs    noauto,br:/rw-root/etc=rw:/ro-root/etc=ro:/etc=rr  0 0

Overlayfsと同じ機能:

none    /.tmp-root/etc              overlayfs  noauto,upperdir=/ro-root/etc,lowerdir=/etc      0 0 
none    /etc                       overlayfs  noauto,upperdir=/rw-root/etc,lowerdir=/.tmp-root/etc  0 0 

システムを順番にマウントすれば問題なく、すべてが機能します。この問題は、ro-rootパーティションで何かを更新する必要があるときに発生します。 再マウントを実行すると、/ etcは元のro-rootではなく、すでにマウントされたoverlayfsとして認識されます。 (mount --bindの取り消し線の問題を解決しました)

どうやら問題はファイルのinode番号にあります。したがって、ファイルの編集は正常に機能しますが、新しいファイルを下位レベルの古いファイルにコピーすると、変更は反映されません。したがって、これは本当のoverlayfsの問題かもしれません。

このセットアップが引き続き機能することを本当に望んでいます(すべての再構築は、+ 50の仮想マシンに影響するため、避けたいと思う非常に多くの作業とテストです)。そうは言っても、この問題を回避するためにinitrdステージの後にreadonly-rootを安全に移動することを達成する答えを受け入れます。それが不可能な場合は、この移動を達成するためにinitrdを変更/修正/作成する最も最小限の方法を提案します。

別の関連する質問がありますが、それはたった2つのレイヤーの単純な形式です。 Simple overlayfs reload question

3
Manwe

最初に/.tmp-reoot/etcでremountを実行してから、/ etcで再マウントしてみましたか

例えば。:

 mount -o remount /.tmp-reoot/etc

 mount -o remount /etc
1
badgerhill