ตัวเลือก _netdev mount ใน / etc / fstab ทำงานอย่างไร?


24

ฉันต้องการที่จะรู้ว่ากลไกที่แน่นอน (การใช้งาน) ที่ใช้ในการเลื่อนการติดตั้งจนกระทั่งหลังจากที่ส่วนต่อประสานเครือข่ายเกิดขึ้นเมื่อมีการใช้_netdevตัวเลือกใน/etc/fstab?
ไม่systemdเปลี่ยนแปลงพฤติกรรมนี้หรือไม่?
นอกจากนี้delay_connectตัวเลือกอะไรในการ sshfs ให้สิ่งที่_netdevไม่?

จากmount หน้าคน :

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

จากsshfs หน้าคน :

-o delay_connect
ชะลอการเชื่อมต่อกับเซิร์ฟเวอร์

คำตอบ:


25

SysV Init

/etc/init.d/mountall.shสคริปต์ init mounts filesystems ท้องถิ่นเท่านั้น:

mount -a -t nonfs,nfs4,smbfs,cifs,ncp,ncpfs,coda,ocfs2,gfs,gfs2,ceph -O no_netdev

ระบบไฟล์อื่น ๆ จะถูกติดตั้งโดยสคริปต์ init ที่แยกจากกันอย่างเช่น/etc/init.d/mountnfs.shที่ประกาศ (ผ่าน LSB ส่วนหัว) $networkของพวกเขาในการพึ่งพา ดังนั้นสิ่งเหล่านี้จะถูกกำหนดในภายหลังหลังจากเครือข่ายถูกนำขึ้นมาในขณะที่mountall.shสามารถทำงานได้เร็วกว่ามาก

systemd

ติดตั้งหน่วยในพื้นที่จะถูกดึงโดยคนระยะไกลโดยlocal-fs.target สแกนสร้างหน่วยยึดและกำหนดให้กับเป้าหมายข้างต้นโดยยึดตามเงื่อนไขที่คล้ายกับด้านบนremote-fs.targetsystemd-fstab-generator/etc/fstab

delay_connect

ตัวเลือกนี้หมายความว่า sshfs จะไม่เริ่มต้นการเชื่อมต่อ SSH กับเซิร์ฟเวอร์ระยะไกลในเวลาเมานต์ แต่จะทำเช่นนั้นกับการดำเนินการของระบบไฟล์ครั้งแรกที่ต้องการ การล่าช้านี้เกิดจากการรายงานข้อผิดพลาด แต่อาจเป็นวิธีแก้ปัญหาที่มีประโยชน์ในบางกรณีตัวอย่างเช่นหากระบบ init ของคุณมีข้อมูลไม่เพียงพอในการสั่งซื้อการดำเนินการเมานต์อย่างถูกต้อง "เครือข่าย" กำลัง "up" เป็นคำที่ค่อนข้างหลวมและแม้ว่าเราสามารถเพิ่มการพึ่งพาพิเศษโดยพลการให้กับยูนิตที่ไม่ได้ช่วยหากเหตุการณ์ทริกเกอร์ไม่ได้เป็นส่วนหนึ่งของธุรกรรม bootup (ใน systemd parlance)


ดังนั้นคุณกำลังบอก_netdevว่าไม่ได้หมายถึงการโต้แย้งที่ส่งผ่านไปยังกระบวนการที่ดำเนินการเมานท์ (และเป็นที่เฉพาะกับประเภทของการเมานต์เหมือนext4/btrfs/cifs/fuse) แต่มีความหมายที่จะอ่านโดยกระบวนการอื่น / สคริปต์ซึ่งขึ้นอยู่กับธงนี้ตัดสินใจเมื่อ ในระหว่างกระบวนการบูตการเมาท์เหล่านี้ควรถูกเรียกใช้งาน ใช่? ถ้าเป็นเช่นนั้นฉันสงสัยว่านี่คือเหตุผลที่เหตุผลนี้เริ่มต้นด้วยขีดเส้นใต้เพื่อที่จะแยกความแตกต่างจากข้อโต้แย้งอย่างเป็นทางการอื่น ๆ
Piotr Dobrogost

ใช่. หากคุณผ่าน_netdevตัวเลือกไปยังmountคำสั่งจะสามารถมองเห็นได้ใน/proc/mountsแต่ไม่มีผลกระทบอื่น
Ferenc Wágner

คำถามโบนัส; เอกสารนี้อยู่ที่ไหนสักแห่ง?
Piotr Dobrogost

1
ติดคู่มือประกอบด้วย: "ระบบแฟ้มอิสระ MOUNT ตัวเลือก - บางตัวเลือกเหล่านี้มีประโยชน์เฉพาะเมื่อพวกเขาปรากฏใน/etc/fstab. ไฟล์" ดี_netdev(เอกสารค่อนข้างช้า) เป็นตัวอย่างที่ดีสำหรับเรื่องนี้
Ferenc Wágner

2
ตัวเลือก _netdev จะถูกละเว้นในการเมานต์ (8) โดยค่าเริ่มต้น ตัวเลือกถูกใช้โดย initscripts เท่านั้น - bugzilla.redhat.com/show_bug.cgi?id=607309#c4
Piotr Dobrogost

18

จากman systemd.mountสำหรับเวอร์ชัน 231 ของ systemd:

หน่วยเมาท์ที่อ้างอิงถึงระบบโลคัลและระบบไฟล์เครือข่ายจะแตกต่างกันตามข้อกำหนดประเภทระบบไฟล์ ในบางกรณีการทำเช่นนี้ไม่เพียงพอ (ตัวอย่างเช่นการเมานต์ที่ใช้อุปกรณ์เครือข่ายเช่น iSCSI) ซึ่งในกรณีนี้_netdevอาจถูกเพิ่มลงในสตริงตัวเลือกการเมานท์ของหน่วยซึ่งบังคับให้ systemd พิจารณาเมานท์เครือข่าย


Awsome! ยังไม่มีความคิดว่าทำไมคำตอบนี้ยังไม่ได้รับการโหวต
Valentin Bajrami

1

Upstart/Udev

สำหรับupstartและ / หรือudevระบบพื้นฐานนี้แตกต่างกันเล็กน้อย

ดูเหมือนว่าudevจะยังคงพยายามเมานต์ระบบไฟล์ NFS และnetfsเป็นเครือข่ายความปลอดภัยเมื่อล้มเหลว

โปรดแก้ไขฉันหากฉันผิด ไม่ว่าจะด้วยวิธีใดคำตอบนี้จะเกี่ยวข้องกับระบบเดิมบางรุ่นเท่านั้น (Ubuntu 14.04 LTS, RHEL6)

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