В https://askubuntu.com/a/119818/5032 qbi говорит:
добавьте noauto к вашему fstab:
...
Таким образом, файловая система не будет автоматически монтироваться при запуске. Кроме того, вы пишете скрипт, который в основном монтирует ваши mhddfs и добавляет его в какой-то поздний момент процесса загрузки.
Но как ты это делаешь? Мои mergerfs никогда не монтируют все свои диски при запуске, возможно потому, что они не были смонтированы до этого? Это последняя запись в fstab, подобная этой (но с большим количеством дисков):
/mnt/EXT4_drive/drivepool:/mnt/NTFS_drive/drivepool:/mnt/anotherdrive/drivepool /mnt/drivepool fuse.mergerfs defaults,allow_other,minfreespace=100M 0 0
Когда я запускаю df
после загрузки, имя диска показывает, что включены только некоторые точки монтирования и дробная часть пространства, которое должно быть у них всех, чтобы они не были включены, если они не готовы? Я должен вручную запустить sudo umount /mnt/drivepool ; sudo mount /mnt/drivepool
после загрузки, чтобы исправить это и показать все из них.
Кроме того, компьютер неоднократно загружался в «Добро пожаловать в аварийный режим!» когда один из дисков автоматически блокировался при попытке монтирования /mnt/drivepool
. В последнее время этого не произошло, возможно, из-за изменения в mergerfs, которое позволяет игнорировать неготовые диски вместо остановки из-за них?
Как мне автоматически смонтировать /mnt/drivepool
ASAP после все остальное в fstab успешно смонтировано и fscked?
Хорошо поэтому после большого чтения:
Начиная с Ubuntu 15.04, fstab
записи преобразовываются в systemd
единицы (*.mount
файлы, найденные под /run/systemd/generator
) systemd-fstab-generator
и затем смонтированы без определенного порядка, который является, почему мой перестал работать.
Однако systemd
зависимости от поддержек, и они могут быть указаны с помощью fstab опции x-systemd.requires
.
x-systemd.requires =
Настраивает Требование = и После = зависимость между созданной единицей монтирования и другой systemd единицей, такой как устройство, или смонтируйте единицу. Аргументом должно быть имя единицы или полный путь к узлу устройства или точке монтирования. Эта опция может быть указана несколько раз. Эта опция особенно полезна для объявлений точки монтирования, которым нужно дополнительное устройство, чтобы быть вокруг (такие как внешнее устройство журнала для файловых систем журнала) или дополнительное монтирование для существования (такие как файловая система наложения, которая объединяет несколько точек монтирования). Присматривайте =, и Требует = в systemd.unit (5) для деталей.
Таким образом для каждого необходимого как условие монтирования, Вы добавляете, что отдельная запись в fstab монтируется, и это понимает пути:
x-systemd.requires=/mnt/XP,x-systemd.requires=/mnt/NTFS_3TB,...
В моей первой попытке я не учел a /mnt/
и мой компьютер отказался загружаться и стал только для чтения. ಠ _ ಠ Для предотвращения этого необходимо также добавить nofail
. Это делает точку монтирования "хотением" для local-fs.target
вместо "требования", таким образом, компьютер все еще загрузится, если он перестанет работать.
Затем, когда Вы делаете mount -a
это будет жаловаться на
fuse: unknown option `nofail'
но это все еще работает так или иначе. ಠ _ ಠ
Вот моя полная fstab строка, которая работала каждый раз, так как я изменил ее:
/mnt/EXT4_backup/drivepool:/mnt/WIN7_BACKUP/drivepool:/mnt/XP/drivepool:/mnt/NTFS_3TB/drivepool /mnt/drivepool fuse.mergerfs nofail,defaults,allow_other,minfreespace=100M,x-systemd.requires=/mnt/XP,x-systemd.requires=/mnt/NTFS_3TB,x-systemd.requires=/mnt/EXT4_backup,x-systemd.requires=/mnt/WIN7_BACKUP 0 0