AUFS: Как создать ветвь для чтения / записи только части дерева каталогов?

AuFS (еще одна объединенная файловая система) позволяет нам объединять два дерева в одно, даже если эти деревья перекрываются. Затем мы можем направить записи в объединенное дерево к одной из ветвей и выполнить чтение в другую.

Классическое использование этого - с файловой системой флэш-памяти и RAM-диском, как этот (ссылка 1), для создания корневой файловой системы только для чтения, которая не нарушает Linux. Все записи в файл идут в оперативную память. После перезагрузки система восстанавливает себя до поставленной конфигурации.

  • /dir1 = только для чтения
  • /dir2 = чтение / запись
  • /aufs = слияние /dir1 а также /dir2

/aufs затем повторно монтируется с --move сделать это / (Корень)

Упрощенно, пример в (ссылка 1) просто делает это

mount -t aufs br=/dir2:/dir1 /aufs
mount --move /aufs /

Тем не менее, я хочу использовать его так, чтобы записи (/dir2) находится на реальном диске, а не на виртуальном диске. Таким образом, после перезагрузки он сохранит свои данные.

Но мне нужно убедиться, что определенные файлы в dir2 не сохраняются и восстанавливаются в свои (/dir1) по умолчанию. Это гарантирует, что будущие ботинки всегда будут использовать файлы, поставляемые в комплекте. Без потери пользователя и регистрации данных.

например, измененные файлы в /etc, /bin, /boot, /usr не должен пережить перезагрузку.

На веб-странице AUFS (ссылка 2) очень мало примеров.

Итак, на вопрос: как правильно сделать это, используя AuFS?

Я могу думать о следующем:

  1. Как-то изменить первую команду монтирования
  2. Добавьте больше команд монтирования, используя aufs add/del перед вторым монтированием
  3. Просто удалите деревья, которые не должны быть сохранены из /dir2 во время загрузки
  4. Частичное дерево (etc, bin, boot, lib, etc) в tmpfs

Ссылка 1: https://help.ubuntu.com/community/aufsRootFileSystemOnUsbFlash
Ссылка 2: http://aufs.sourceforge.net/aufs.html

1 ответ

Вариант № 1: auFS сама по себе не поддерживает такую ​​опцию монтирования, поэтому опция #1 не работает. Вы должны обойти это.

Вариант № 3: Конечно, вы можете просто удалить при каждой загрузке эти каталоги. Это может быть самый простой способ, который я вижу здесь.

Вариант № 2: Вы можете работать с tmpfs, Итак, сначала создайте tmpfsскажем, размером 500 МБ:

mount -t tmpfs -o rw,size=500M tmpfs /tmpfs

У нас сейчас:

  • /dir1только для чтения
  • /dir2: читай пиши
  • /tmpfs: чтение / запись в RAM
  • /aufs: наложение /dir1 а также /dir2

внутри /tmpfsМы создаем те каталоги, которые вы хотите сохранить:

mkdir -p /tmpfs/{etc,usr,boot,bin}

Обратите внимание, мы делаем это, когда мы уже объединяем две папки. Поэтому, когда дерево каталогов в /aufs уже существует. Однако теперь мы делаем одно монтирование aufs на каталог, который должен быть сохранен:

mount -t aufs -o dirs=/tmpfs/etc=rw:/dir2/etc=ro none /aufs/etc
mount -t aufs -o dirs=/tmpfs/usr=rw:/dir2/usr=ro none /aufs/usr
mount -t aufs -o dirs=/tmpfs/boot=rw:/dir2/boot=ro none /aufs/boot
mount -t aufs -o dirs=/tmpfs/bin=rw:/dir2/bin=ro none /aufs/bin

Теперь у вас есть дерево каталогов в /aufs где вы можете писать файлы везде, но когда вы пишете в /etc например, это будет записано в /tmpfs/etc, который находится в оперативной памяти, поэтому не переживает перезагрузку. Другие файлы в /home например написано /dir2/home, которая является файловой системой с возможностью чтения и записи и, следовательно, переживает перезагрузку.

Другое решение: я также использую клиентскую систему, которая использует оверлейную файловую систему и сохраненные пользовательские данные. Вот как я решил это: просто файловая система только для чтения и tmpfs, которая монтируется поверх нее. Позже, когда пользователь входит в систему, я монтирую его домашний каталог с сервера samba, доступного для чтения. Таким образом, все его пользовательские данные хранятся и сохраняются в /homeа остальные не переживают перезагрузку. В вашем случае вы могли бы просто поставить /home в другой физический раздел, который доступен для чтения и монтирования, чтобы позже /aufs/home,

Другие вопросы по тегам