Pemasangan sistem gagal. Di mana = pengaturan tidak cocok dengan nama unit

20

Jika saya menggunakan perintah ini:

mount -t xfs -o noatime,nodiratime,logbufs=8 -L d1 /srv/node/d1

semua bekerja dengan benar. Tetapi jika saya mencoba me-mount melalui systemdmount itu gagal.

Saya telah membuat file /etc/systemd/system/mnt-d1.mountdengan konten berikut:

[Unit]
Description = Disk 1

[Mount]
What = LABEL=d1
Where = /srv/node/d1
Type = xfs
Options = noatime,nodiratime,logbufs=8

[Install]
WantedBy = multi-user.target

Setelah itu saya menjalankan perintah ini:

systemctl daemon-reload
systemctl start mnt-d1.mount

Yang terakhir menunjukkan:

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 menunjukkan kepada saya:

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.

Tolong bantu saya untuk memasang disk melalui systemdunit pemasangan.

Alexandr
sumber
Masih tidak berfungsi .. Kesalahan yang sama
Alexandr
Pertanyaan ini harus dibuka kembali - saya punya masalah yang sama dan solusi yang disajikan dalam komentar membantu saya. Komentar itu harus dijawab sehingga saya dapat membatalkannya.
Guss

Jawaban:

26

Pesan kesalahan menjelaskan penyebabnya:

Where= setting doesn't match unit name. Refusing.

meskipun memahami pesan itu membutuhkan membaca beberapa halaman manual.
Per systemd.mounthalaman manual (tekankan halaman saya):

Where=

Mengambil jalur absolut dari direktori titik mount. Jika titik pemasangan tidak ada pada saat pemasangan, itu dibuat. String ini harus dicerminkan dalam nama file unit. (Lihat di atas.) Opsi ini wajib.

Bagian "lihat di atas" adalah:

Mount unit harus dinamai sesuai dengan direktori titik mount yang mereka kontrol. Contoh: titik mount /home/lennartharus dikonfigurasi dalam file unit home-lennart.mount. Untuk detail tentang logika pelolosan yang digunakan untuk mengonversi jalur sistem file ke nama unit, lihat systemd.unit(5).

OK, systemd.unithalaman manual menyatakan bahwa:

Jalur yang diloloskan dengan benar dapat dihasilkan menggunakan systemd-escape(1) perintah.

menunjuk ke systemd-escapehalaman manual yang menjelaskan cara melakukannya:

Untuk menghasilkan unit pemasangan untuk jalur:

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

Jadi, dalam kasus Anda, /srv/node/d1terjemahkan kesrv-node-d1.mount

don_crissti
sumber
3
Penting untuk dicatat bahwa sistem "jalan keluar" bisa menjadi sedikit rumit bahkan berurusan dengan nama-nama non-AZ. Bahkan beberapa tanda hubung di jalur perlu dikonversi ke \x2dpelolosan gaya-C , yang ketika digunakan untuk membuat file unit mungkin (tergantung pada shell / editor Anda) perlu lagi melarikan diri dari karakter slash - sehingga file unit yang cocok untuk pemasangan /some-pathmungkin mengharuskan berjalanedit some\\x2dpath.mount
Guss
Saya berakhir di sini mencoba mencari tahu mengapa saya tidak bisa naik share-name. Mengganti nama itu share_namememecahkan masalah.
Brian Z
Saya akan memberikan upvote ganda jika saya bisa!
John Mee