Mount
Systemd 掛載失敗。Where= 設置與單位名稱不匹配
如果我使用這個命令:
mount -t xfs -o noatime,nodiratime,logbufs=8 -L d1 /srv/node/d1
一切正常。但是,如果我嘗試通過掛載進行
systemd
掛載,則會失敗。我創建了一個
/etc/systemd/system/mnt-d1.mount
包含以下內容的文件:[Unit] Description = Disk 1 [Mount] What = LABEL=d1 Where = /srv/node/d1 Type = xfs Options = noatime,nodiratime,logbufs=8 [Install] WantedBy = multi-user.target
之後我執行這些命令:
systemctl daemon-reload systemctl start mnt-d1.mount
最後一張給我看:
Failed to start mnt-d1.mount: Unit mnt-d1.mount failed to load: Invalid argument. See system logs and 'systemctl status mnt-d1.mount' for details.
systemctl status mnt-d1.mount
給我看了:May 16 18:13:52 object1 systemd[1]: Cannot add dependency job for unit mnt-d1.mount, ignoring: Unit mnt-d1.mount failed to ...ectory. May 16 18:24:05 object1 systemd[1]: mnt-d1.mount's Where= setting doesn't match unit name. Refusing.
請幫助我通過
systemd
安裝單元安裝磁碟。
錯誤消息解釋了原因:
Where= setting doesn't match unit name. Refusing.
雖然理解該消息需要閱讀幾個手冊頁。
每個
systemd.mount
手冊頁(強調我的):
Where=
採用掛載點目錄的絕對路徑。如果掛載點在掛載時不存在,則創建它。 **該字元串必須反映在單元文件名中。(見上文。)**此選項是強制性的。
“見上文”部分是:
掛載單元必須以它們控制的掛載點目錄命名。範例:
/home/lennart
必須在單元文件中配置掛載點home-lennart.mount
。有關將文件系統路徑轉換為單元名稱的轉義邏輯的詳細資訊,請參閱systemd.unit(5)
。好的,
systemd.unit
手冊頁指出:可以使用該
systemd-escape(1)
命令生成正確轉義的路徑。指向解釋如何做到這一點的
systemd-escape
手冊頁:要為路徑生成安裝單元:
$ systemd-escape -p --suffix=mount "/tmp//waldi/foobar/"
tmp-waldi-foobar.mount
所以,在你的情況下,
/srv/node/d1
轉化為srv-node-d1.mount