Тема: [RedHat-like] Зупиняється завантаження ОС через ldm.
Є наприклад машина під linux, до якої підключено кілька динамічних масивів ldm (тобто програмний RAID на Windows).
Ви в systemd створюєте та вмикаєте сервіс ldm:
[Unit]
Description=Windows Dynamic Disk Mount
Before=local-fs-pre.target
#After=local-fs-pre.target
DefaultDependencies=no
[Service]
Type=simple
User=root
ExecStart=/usr/bin/ldmtool create all
Restart=on-failure
[Install]
WantedBy=local-fs-pre.target
Прописуєте автомонтування в fstab:
UUID=1A2A3A4A5A6A7A8A /mnt/WinRAID0 ntfs defaults,uid=1000,gid=1000 0 2
UUID=8A7A6A5A4A3A2A1A /mnt/WinRAID1 ntfs defaults,uid=1000,gid=1000 0 2
Але при завантаженні ОС отримуєте те що воно зупиняється після спроби змонтувати один з масивів, після продовження з ігноруванням помилки завантаження завершується, з кількох масивів відсутній один, який легко повертається в роботу командами:
ldmtool create all && mount -a
В логах можна знайти повідомлення щодо цього масиву такого характеру:
Sep 01 00:50:32 ChiaFarm systemd[1]: systemd-fsck@dev-mapper-ldm_vol_MAIN\x2g0g0_Volume1.service: Job systemd-fsck@dev-mapper-ldm_vol_MAIN\x2g0g0_Volume1.service/start failed with result 'dependency'.
Sep 01 00:50:32 ChiaFarm systemd[1]: dev-mapper-ldm_vol_MAIN\x2g0g0_Volume1.device: Job dev-mapper-ldm_vol_MAIN\x2g0g0_Volume1.device/start failed with result 'timeout'.
Причина проста: ldm не встигає відпрацювати до того як systemd розпочне монтування розділів, бо ldm ніяк не дає знати systemd коли він відпрацював. Тож в fstab додамо кілька опцій до кожного запису з ldm масивом:
defaults,uid=1000,gid=1000,nofail,x-systemd.automount,x-systemd.mount-timeout=180,x-systemd.after=ldmtool.service,x-systemd.device-timeout=60
де:
nofail - щоб завантаження ОС не зупинялося через не можливість змонтувати розділи
x-systemd.automount - монтувати розділ, якщо не змонтовано, при зверненні до точки монтування (про всяк випадок, але як основний механізм вирішення не раджу, так як при великих масивах процес монтування займає до біса часу, а процес що звернувся "підвисне" на цей час)
x-systemd.mount-timeout=180 - час в продовж якого може тривати процес монтування, тобто збільшуємо timeout після якого вважатиметься що монтування не вдалося (значення значно завищено, на випадок проблемних масивів)
x-systemd.after=ldmtool.service - автомантувати лише після запуску сервісу ldm (це важливо)
x-systemd.device-timeout=60 - час очікування девайсу, це час який чекатиме система якщо в момент запуску автомонтування девайс не знайдено, що як раз і було причиною що найперший масив у черзі на автомонтування не монтувався (бо ldmtool не встигав до запуску процесу його створити, час теж значно завищений так аби точно встигав).