Всякий раз, когда systemd.fsck
действительно должен выполнить ремонт* во время загрузки, автоматическое монтирование моего раздела не удается, потому что команда mount
не ждет, пока systemd.fsck@dev-sda1.service
будет выполнена.
Как сделать так, чтобы mount
дождался завершения работы службы проверки файловой системы, а не отказал сразу, потому что проверка файловой системы была запущена?
Соответствующая строка в fstab
выглядит следующим образом:
LABEL=cfdata /data ext4 defaults,nofail,x-systemd.device-timeout=60 0 0
(метка cfdata
находится на /dev/sda1
)
Соответствующие журналы systemd выглядят следующим образом, когда происходит неудачное монтирование при загрузке:
Jun 23 06:24:45 dev-machine-1 kernel: sda: sda1
Jun 23 06:24:45 dev-machine-1 kernel: sd 0:0:0:0: [sda] Attached SCSI disk
Jun 23 06:24:47 dev-machine-1 systemd[1]: Starting File System Check on /dev/sda1...
Jun 23 06:24:47 dev-machine-1 mount[5563]: mount: /data: /dev/sda1 already mounted or mount point busy.
Jun 23 06:24:47 dev-machine-1 systemd-fsck[5483]: cfdata: recovering journal
Jun 23 06:24:49 dev-machine-1 systemd-fsck[5483]: cfdata: Clearing orphaned inode 13 (uid=0, gid=0, mode=0100644, size=39685)
Jun 23 06:24:49 dev-machine-1 systemd-fsck[5483]: cfdata: clean, 2767944/29310976 files, 75558004/117212630 blocks
Jun 23 06:24:49 dev-machine-1 systemd[1]: Started File System Check on /dev/sda1.
Jun 23 06:24:49 dev-machine-1 kernel: EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null)
Когда это происходит, диск монтируется в /media/
вместо моей точки монтирования в fstab
.
Примечание:
Когда systemd.fsck@dev-sda1.service
должен выполнить восстановление, в журнале будет выведено что-то вроде: Clearing orphaned inode 13 (uid=0, gid=0, mode=0100644, size=39685)
. Проблема с монтированием возникает только тогда, когда fsck действительно делает что-то вроде этого и задерживает устройство.
Скажите вашей системе включить его в список проверки файловой системы:
Шестое поле (fs_passno).
Это поле используется fsck(8) для определения порядка, в котором выполняются проверки файловой системы во время загрузки. Корневая файловая система должна быть указана с fs_passno, равным 1. Другие файловые системы должны иметь fs_passno, равное 2. Файловые системы на одном диске будут проверяться последовательно, но файловые системы на разных дисках будут проверяться одновременно, чтобы использовать параллелизм, доступный в аппаратном обеспечении. По умолчанию равен нулю (don't fsck), если отсутствует.
(Из man fstab
)
Сделайте строку читаемой
LABEL=cfdata /data ext4 defaults,nofail,x-systemd.device-timeout=60 0 2
И она должна обрабатываться автоматически.