Не вдалося встановити системне кріплення. Де = налаштування не відповідає назві одиниці


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сторінку man, яка пояснює, як це зробити:

Щоб створити блок кріплення для шляху:

$ systemd-escape -p --suffix=mount "/tmp//waldi/foobar/"
tmp-waldi-foobar.mount

Отже, у вашому випадку /srv/node/d1перекладається наsrv-node-d1.mount


3
Важливо зауважити, що система "втеча від шляху" може отримати трохи складний характер, навіть якщо мати справу з іменами, що не належать до АЗ. Навіть деякі тире на шляху потрібно буде перетворити на \x2dвтечу в стилі C , яка при використанні для створення файлу одиниці може (залежно від вашої оболонки / редактора) знову потребувати уникнення символу косої риси - так що примірний файл /some-pathможе відповідати монтажу вимагають бігуedit some\\x2dpath.mount
Guss

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

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