LINUX.ORG.RU

Подключение aufs через systemd (Debian 8)

 ,


0

1

Добрый день всем гуру. Столкнулся с проблемой подключения aufs через systemd в Devbian 8 stable (ядро 3.16.0-4)

Так как в данном ядре еще нет overlayfs приходится через aufs но вот незадача, он не принимает параметр Where=/usrnew, валится с ошибкой

Если же параметр оставить пустым, то все отрабатывает, но создается папка по умолчанию /aufs/mnt и все работает, но подозреваю, что таким образом я могу сжать только один каталог при помощи squashfs.

Хотелось бы понять, как правильно ему прописать путь... При загрузке через initrd выдается вот такое сообщение:

[ 5.094464] systemd[1]: [/etc/systemd/system/aufs-mnt.mount:12] Not an absolute path, ignoring: Что в понятии системы тут «Нет абсолютного пути » ????

Решено!

Подготовка: (все команды от root) aptitude install squashfs-tools aufs-tools

Сделать загрузку модулей при старте (особо в нюансы не вникал, тонкости параметров смотрите сами). Дописать в /etc/initramfs-tools/modules
aufs
squashfs
loop

выполнить update-initramfs -u

Моя ошибка и скучная документация :) Нельзя было переименовывать хххххх.mount в произвольное имя. Должно быть /etc/systemd/system/usr.mount (если мы кладем файл именно туда и главное он должен иметь название папки в имени, куда будем монтировать)

В поле Where видимо можно либо вообще ничего не писать, systemd сам создаст папку, либо так же прописать /usr. Поле не игнорируется, но проверяется (на кой так не понятно).

Для вложенных каталогов файл должен иметь вид dparh-mnt-sys.mount соответственно на диске будет /dpath/mnt/sys куда все смонтируется.

Так как используется systemd версии 2.15 и новых опций для fstab там нет по части порядка монтирования то сделал следующее: Сперва прописал в fstab и получил две раздельных точки монтирования (дать бы в ухо тому кто это все придумал). Пример из /etc/fstab для автоматического создания Юнитов systemd

/.usr.sqfs /squashed/ro squashfs loop,ro 0 0
aufs /usrnew aufs noatime,br:/squashed/rw:/squashed/ro 0 0

применил для монтирования /usrnew для проверки и дальнейшего редактирования. Скопировал созданные в /run/systemd/generator/ файлы squashed-ro.mount и usrnew.mount в /etc/systemd/system . Закоментировал записи в fstab. Привел их к такому виду: squashed-ro.mount

[Unit] 
Before=local-fs.target

[Mount] 
What=/.usr.sqfs 
Where=/squashed/ro 
Type=squashfs 
Options=loop,ro

[Install] 
WantedBy = multi-user.target
Переименовал usrnew.mount в usr.mount после выполнения проверок, что все монтируется как надо на подопытном каталоге /usrnew и привел к такому виду
[Unit] 
Requires=squashed-ro.mount # добавлено для загрузки после 
After=squashed-ro.mount # монтирования squashfs

[Mount] 
What=none 
Where=/usr #можно не писать, создастся по имени файла 
Type=aufs 
Options=noatime,br:/squashed/rw:/squashed/ro

[Install] 
WantedBy = multi-user.target
Добавлено поле Install для внесения в таргеты. Команды соотвественно
systemctl daemon-reload
systemctl enable squashed-ro.mount
systemctl enable usr.mount

Перегружаемся в консоль восстановления, вводим root пароль и перемещаем каталоги mv /usr /usrold Создаем чистенький mkdir /usr (systemd вроде как и сам создаст). Можно в это время из консоли переименовать наш /etc/systemd/system/usrnew.mount в usr.mount и поправить в нем запись Where=/usr вместо подопытного /usrnew

Перегружаемся. Если все хорошо, то вы загрузились, если где-то обшиблись, грузимся опять в консоль и ищем причину.

Решено!

Вопрос решен.

Подготовка: (все команды от root) aptitude install squashfs-tools aufs-tools

Сделать загрузку модулей при старте (особо в нюансы не вникал, тонкости параметров смотрите сами). Дописать в /etc/initramfs-tools/modules

aufs
squashfs
loop

выполнить update-initramfs -u

Моя ошибка и скучная документация :) Нельзя было переименовывать хххххх.mount в произвольное имя. Должно быть /etc/systemd/system/usr.mount (если мы кладем файл именно туда и главное он должен иметь название папки в имени, куда будем монтировать)

В поле Where видимо можно либо вообще ничего не писать, systemd сам создаст папку, либо так же прописать /usr. Поле не игнорируется, но проверяется (на кой так не понятно).

Для вложенных каталогов файл должен иметь вид dparh-mnt-sys.mount соответственно на диске будет /dpath/mnt/sys куда все смонтируется.

Так как используется systemd версии 2.15 и новых опций для fstab там нет по части порядка монтирования то сделал следующее: Сперва прописал в fstab и получил две раздельных точки монтирования (дать бы в ухо тому кто это все придумал)

Пример из /etc/fstab для автоматического создания Юнитов systemd
/.usr.sqfs /squashed/ro squashfs loop,ro 0 0 aufs /usrnew aufs noatime,br:/squashed/rw:/squashed/ro 0 0
применил для монтирования /usrnew для проверки и дальнейшего редактирования. Скопировал созданные в /run/systemd/generator/ файлы squashed-ro.mount и usrnew.mount в /etc/systemd/system . Закоментировал записи в fstab. Привел их к такому виду: squashed-ro.mount
[Unit]
Before=local-fs.target

[Mount]
What=/.usr.sqfs
Where=/squashed/ro
Type=squashfs
Options=loop,ro

[Install]
WantedBy = multi-user.target

Переименовал usrnew.mount в usr.mount после выполнения проверок, что все монтируется как надо на подопытном каталоге /usrnew и привел к такому виду

[Unit]
Requires=squashed-ro.mount # добавлено для загрузки после
After=squashed-ro.mount # монтирования squashfs

[Mount]
What=none
Where=/usr #можно не писать, создастся по имени файла
Type=aufs
Options=noatime,br:/squashed/rw:/squashed/ro

[Install]
WantedBy = multi-user.target

Добавлено поле Install для внесения в таргеты.

Команды соотвественно systemctl daemon-reload systemctl enable squashed-ro.mount systemctl enable usr.mount

Перегружаемся в консоль восстановления, вводим root пароль и перемещаем каталоги mv /usr /usrold Создаем чистенький mkdir /usr (systemd вроде как и сам создаст). Можно в это время из консоли переименовать наш /etc/systemd/system/usrnew.mount в usr.mount и поправить в нем запись Where=usr

Перегружаемся. Если все хорошо, то вы загрузились, если где-то обшиблись, грузимся опять в консоль и ищем причину.

manjey73 ()
Ответ на: комментарий от littlechris

Ядро 3.16 на Debian stable, overlayfs появится только в 3.18 Так же как и systemd с дополнительными параметрами порядка монтирования из fstab появится только с версии 2.20

manjey73 ()
Ответ на: комментарий от littlechris

Перенес, теперь только надо удалить отдельный ответ с решением. Остальное могу поправить.

manjey73 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.