การเมาท์ Systemd ล้มเหลว โดยที่การตั้งค่า = ไม่ตรงกับชื่อหน่วย


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ยึด


ยังไม่ทำงาน .. ข้อผิดพลาดเดียวกัน
Alexandr

คำถามนี้ควรจะเปิดใหม่ - ฉันมีปัญหาเดียวกันและวิธีแก้ปัญหาที่นำเสนอในความคิดเห็นช่วยฉัน ความคิดเห็นควรทำคำตอบเพื่อให้ฉันสามารถโหวตได้
Guss

คำตอบ:


26

ข้อความแสดงข้อผิดพลาดอธิบายสาเหตุ:

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

แม้ว่าการเข้าใจว่าข้อความนั้นจำเป็นต้องอ่าน man pages หลายหน้า
ต่อหน้าsystemd.mountคน (เน้นที่เหมือง):

Where=

รับพา ธ สัมบูรณ์ของไดเร็กทอรีของจุดต่อเชื่อม หากไม่มีจุดเมานท์ในเวลาที่ติดตั้งจะมีการสร้างขึ้น สตริงนี้จะต้องสะท้อนให้เห็นในชื่อไฟล์หน่วย (ดูด้านบน)ตัวเลือกนี้มีผลบังคับใช้

ส่วน "ดูด้านบน" คือ:

หน่วยเมาท์จะต้องตั้งชื่อหลังจากไดเรกทอรีจุดเมานท์ที่พวกเขาควบคุม ตัวอย่าง: จุดติดจะต้องกำหนดค่าในแฟ้มหน่วย/home/lennart สำหรับรายละเอียดเกี่ยวกับตรรกะหนีออกมาใช้ในการแปลงเส้นทางระบบไฟล์ชื่อหน่วยให้ดูhome-lennart.mount systemd.unit(5)

ตกลงsystemd.unitหน้าคนระบุว่า:

สามารถสร้างพา ธ ที่ใช้ Escape ได้อย่างเหมาะสมโดยใช้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 แม้จะมีเครื่องหมายขีดกลางบางส่วนในเส้นทางที่จะต้องถูกแปลงเป็นรูปแบบ C \x2dซึ่งเมื่อใช้ในการสร้างไฟล์หน่วยอาจ (ขึ้นอยู่กับเชลล์ / บรรณาธิการของคุณ) จำเป็นต้องหลบหนีอักขระทับอีกครั้ง - ดังนั้นไฟล์หน่วยพอดี/some-pathอาจ ต้องวิ่งedit some\\x2dpath.mount
Guss

share-nameฉันสิ้นสุดขึ้นที่นี่พยายามที่จะคิดออกว่าทำไมฉันไม่สามารถติดตั้ง การเปลี่ยนชื่อมันshare_nameช่วยแก้ปัญหาได้
Brian Z

ฉันจะให้ upvote สองครั้งถ้าทำได้!
John Mee
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.