Системное монтирование не удается. Где = настройка не соответствует имени устройства


20

Если я использую эту команду:

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монтирования.


Все еще не работает .. Та же ошибка
Александр

Этот вопрос должен быть вновь открыт - у меня была та же проблема, и решение, представленное в комментарии, помогло мне. На комментарий должен быть дан ответ, чтобы я мог его проголосовать.
Гусс

Ответы:


26

Сообщение об ошибке объясняет причину:

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


3
Важно отметить, что система «выхода из пути» может быть немного сложной, даже имея дело с именами, отличными от AZ. Даже некоторые тире в пути должны быть преобразованы в \x2descape -стиль C , который при использовании для создания файла модуля может (в зависимости от вашей оболочки / редактора) снова экранировать символ косой черты - так что монтирование файла модуля /some-pathможет требуют бегаedit some\\x2dpath.mount
Guss

Я попал сюда, пытаясь понять, почему я не могу смонтировать share-name. Переименование это share_nameрешило проблему.
Брайан Z

Я бы отдал двойной голос, если бы мог!
Джон Ми
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.