Подключение aufs через systemd (Debian 8)
Добрый день всем гуру. Столкнулся с проблемой подключения 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
[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
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
Перегружаемся. Если все хорошо, то вы загрузились, если где-то обшиблись, грузимся опять в консоль и ищем причину.