Перегрузка оверлеев с несколькими слоями (миграция от aufs)
Я сталкивался с одним из этих побочных эффектов миграции. С помощью aufs вы можете указать несколько RO-слоев, и обновление некоторых файлов в них будет обновлено с помощью remount.
fstab с aufs:
aufs /etc aufs noauto,br:/rw-root/etc=rw:/ro-root/etc=ro:/etc=rr 0 0
Та же функциональность с оверлефами:
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. Запуск remount для того, что видит /etc как уже смонтированные оверлеи, а не исходный ro-root. (Решил зачеркнутую проблему с mount --bind
)
Видимо проблема с inode
номера файлов. Таким образом, редактирование файла работает нормально, но если я скопирую новый файл поверх старого на более низком уровне, изменение не распространяется. Так что это может быть реальной проблемой оверлеев.
Мне бы очень хотелось, чтобы эта установка продолжала работать (реструктуризация всего требует много работы и тестирования, которого я бы предпочел избежать, потому что это затрагивает +50 виртуальных машин). При этом я также приму ответы, которые позволят выполнить перемещение readonly-root после этапа initrd безопасно, чтобы обойти эту проблему, и если это невозможно, то предложим наиболее минималистичный способ изменения / изменения / создания initrd для выполнения этого перемещения.
Есть еще один связанный с этим вопрос, но это более простая форма, состоящая из двух слоев. Простые оверлеи перезагружают вопрос
1 ответ
Вы пробовали сначала выполнить перемонтирование в /.tmp-reoot/etc, а затем перемонтировать в / etc
например:
mount -o remount /.tmp-reoot/etc
mount -o remount /etc