/ etc / mtab ใน Linux คืออะไร


30

อะไรคือสิ่งที่/etc/mtabอยู่ในลินุกซ์?

ทำไมมันจำเป็นและข้อดีของการมี?



ฉันพบว่ามันน่าผิดหวังที่man 5 mtabหายไป
Weijun Zhou

3
นอกจากนี้: unix.stackexchange.com/q/24182/117549
Jeff Schaller

คำตอบ:


51
% file / etc / mtab
/ etc / mtab: ลิงก์สัญลักษณ์ไปที่ ../proc/self/mounts
% file / proc / mounts
/ proc / mounts: ลิงก์สัญลักษณ์ไปที่ self / mounts
%

/etc/mtabเป็นกลไกการทำงานร่วมกัน ทศวรรษที่ผ่านมา Unix ไม่มีการเรียกระบบสำหรับการอ่านข้อมูลการเมาท์ที่มีอยู่ แต่โปรแกรมที่ติดตั้งระบบไฟล์นั้นถูกคาดหวังว่าจะทำงานร่วมกันอย่างเป็นระบบและสมัครใจรักษาตารางใน/etc/mtabสิ่งที่ถูกเมานต์

ด้วยเหตุผลที่ชัดเจนนี่ไม่ใช่กลไกในอุดมคติ

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

/etc/mtabดังนั้นได้กลายเป็นที่นิยมเชื่อมโยงสัญลักษณ์เพื่อ/proc/mountsให้โปรแกรมที่เดินสายชื่อที่จะให้อ่านตารางติดจากไฟล์ที่ซึ่งโปรแกรมที่ติดตั้งและ unmounted ระบบแฟ้มไม่ต้องทำอะไรอย่างชัดเจนเพื่อให้ทันสมัย (บางส่วนของพวกเขาจะยังคงถ้าหาก/etc/mtabกลายเป็นไฟล์ปกติที่เขียนได้และมีบางกรณีมุมที่ข้อมูลปกติในmountsที่ขาดสิ่งที่ไม่ใช่เคอร์เนลทั้งหมดไม่ได้ค่อนข้างจำเป็นต้องใช้แม้ว่าพวกเขาจะไม่ได้มีน้ำหนักเกิน ปัญหาทั่วไปด้วย/etc/mtab.)

แต่ละขั้นตอนในปัจจุบันสามารถมีมุมมองของตัวเองแต่ละสิ่งที่จะติดตั้งและมีเป็นผลให้ในขณะนี้แต่ละmountsไฟล์สำหรับแต่ละขั้นตอนใน procfs ตารางของแต่ละขั้นตอนการเข้าถึงมันผ่านselfการเชื่อมโยงสัญลักษณ์เป็นself/mountsและ/proc/mountsเป็นยังตอนนี้เข้ากันได้ กลไก. (ที่น่าสนใจไม่ใช่กระบวนการต่อmountsหรือรูปแบบของmountsเอกสารใน Linux doco ปัจจุบันแม้ว่าmountinfoไฟล์หลอกเทียมปกติที่คล้ายกันคือ.)

SunOS / Solaris มีกลไกที่คล้ายกัน /etc/mnttabไฟล์เป็นจริงระบบแฟ้มไฟล์เดียวและนอกเหนือไปจากการอ่านตารางผ่านอธิบายไฟล์เปิดไปยังแฟ้มที่มีread()การเรียกระบบหนึ่งสามารถดูการติดตั้งการเปลี่ยนแปลงจุดที่มีและได้รับชิ้นต่อต่างๆของข้อมูลด้วยpoll()ioctl()

ใน HP-UX /etc/mnttabเป็นชื่อของไฟล์เช่นเดียวกัน แต่ในรุ่นที่ 11 มันยังคงเป็นไฟล์ปกติที่เนื้อหาได้รับการบำรุงรักษาอย่างต่อเนื่องโดยโปรแกรมยูทิลิตี้ระบบ

AIX ไม่ส่งออกตารางข้อความที่มนุษย์สามารถอ่านได้ที่โปรแกรมต้องแยกวิเคราะห์และไม่มีไฟล์ที่เทียบเท่า BSDs ในทำนองเดียวกันมีการเรียกระบบอย่างเต็มเปี่ยมgetfsstat()บน FreeBSD และ OpenBSD สำหรับโปรแกรมเพื่อรับตารางเมานต์จากเคอร์เนลในรูปแบบที่เครื่องอ่านได้

อ่านเพิ่มเติม


ในการเติมเต็มด้วยกับความคิดเห็นของฉันในคำถามที่นี่คือmtab(5)จากวันเก่า: man.cat-v.org/unix_8th/5/mtab
Weijun Zhou

2
ไม่เพียง/proc/mountsแต่/proc/self/mountsเป็นกลไกความเข้ากันได้แล้ว /proc/self/mountinfoเป็นเพียงส่วนหนึ่งของการแสดงในข้อมูลที่มีอยู่ได้ รูปแบบของ/proc/self/mountsเอกสารproc(5)ดังกล่าวเหมือนกับfstab(5)
mosvy

แม้ว่าเป็นที่ยอมรับ fstab (5) บอกเพียงเกี่ยวกับช่องว่างที่ถูกแทนที่ด้วยการหลบหนีแปดทางในขณะที่มันช่องว่างแท็บบรรทัดใหม่และ backslashes
mosvy

ฉันรู้จักไฟล์หลอกและไฟล์ปกติ แต่ไฟล์ธรรมดาหลอกคืออะไร?
gerrit

@gerrit เป็นไฟล์ปกติที่มีขนาด 0 แต่ยังมี data ;-)
mosvy

12

ตามman mount:

โปรแกรมที่เมานต์และ umount เก็บรักษารายการของระบบไฟล์ที่เมาท์อยู่ในปัจจุบันในไฟล์ / etc / mtab ไฟล์ mtab ที่แท้จริงนี้ยังคงรองรับอยู่ แต่ในระบบ Linux ปัจจุบันควรทำการเชื่อมโยงไปยัง / proc / mount แทนเนื่องจากไฟล์ mtab ปกติที่เก็บรักษาไว้ใน userspace ไม่สามารถทำงานกับเนมสเปซคอนเทนเนอร์และคุณลักษณะ Linux ขั้นสูงอื่น ๆ ได้

เกี่ยวกับการติดตั้งโดยไม่บันทึกใน/etc/mtab:

-n, - no-mtab

เมานต์โดยไม่ต้องเขียนใน / etc / mtab สิ่งนี้จำเป็นเช่นเมื่อ / etc อยู่ในระบบไฟล์แบบอ่านอย่างเดียว

ความแตกต่างอื่น ๆ อีกมากมายจะได้รับในหน้าคู่มือ

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