`/ etc / fstab` ใช้เพื่อเมานต์ใหม่หรือไม่


9

ฉันมีอุปกรณ์ที่ติดตั้งกับ Ubuntu 14.04.5 ซึ่งมีฮาร์ดไดรฟ์เดี่ยวพร้อมระบบไฟล์ ext4

จากการอ่านเอกสารระบบไฟล์ Ext4ฉันได้เรียนรู้ว่าโหมดข้อมูลเริ่มต้นเป็นorderedเพียงการป้องกันข้อมูลเมตา ในโครงการของฉันเราต้องการเปลี่ยนเป็นjournalปกป้องข้อมูลไฟล์ด้วยเนื่องจากความปลอดภัยของข้อมูลมีมูลค่าสูงกว่า

สิ่งแรกที่ฉันพยายามคือแก้ไข/etc/fstabไฟล์ ฉันพยายามเปลี่ยน

UUID=<UUID> / ext4 errors=remount-ro 0 1

ถึง

UUID=<UUID> / ext4 errors=remount-ro,data=journal 0 1

โดยต่อท้ายdata=journalฟิลด์ตัวเลือก

cannot change data mode on remountแต่เมื่อฉันเริ่มต้นอุปกรณ์ที่ฉันจบลงด้วยข้อความผิดพลาดว่า ฉันตรวจสอบdmesgและเห็นข้อความก่อนหน้าเกี่ยวกับการติดตั้งไดรฟ์ด้วยorderedโหมดข้อมูล

เป็นเวลานานที่น่าอายฉันคิดว่า/etc/fstabจะใช้เพื่อแทนที่ตัวเลือกการติดตั้งเริ่มต้นเพื่อให้ไดรฟ์ติดตั้งเพียงครั้งเดียว แต่ตอนนี้ดูเหมือนว่าผิด: ไดรฟ์จะถูกติดตั้งโดยใช้ตัวเลือกการเมานต์เริ่มต้นจากนั้น/etc/fstabจะถูกเลือกเพื่อติดตั้งใหม่

คำถามของฉันคือ :

  • นี่คือ "mount-remout" ประมวลผลการออกแบบของระบบหรือไม่? ฉันอ่านFstabหน้า wikiแต่ไม่เห็นว่ากล่าวถึงสิ่งที่ "mount-remount"
  • หาก/etc/fstabมีการใช้งานจริงสำหรับการประกอบใหม่ขั้นตอนใดของกระบวนการบูทที่ติดตั้งไดรฟ์เป็นครั้งแรก มันนำมาใช้ใน/etc/init.d? ฉันเห็นสคริปต์บางตัวถูก/etc/init.dเรียกใช้umountfsและumountrootแต่อ่านเนื้อหาของสคริปต์ไม่ได้เกี่ยวข้องกัน

2
ฉันคิดว่าเป็นปัญหา "ไก่และไข่" ที่กล่าวถึงที่นี่ ( /etc/fstabอยู่ในระบบไฟล์รูท แต่มันไม่สามารถอ่านได้จนกว่าหลังจากติดตั้ง filesytem แล้ว): initramfs ใช้ / etc / fstab หรือไม่
ขับเหล็ก

คำตอบ:


8

จากman ext4:

ข้อมูล = {วารสาร | สั่งซื้อ | writeback}
              ระบุโหมดการเจอร์นัลสำหรับข้อมูลไฟล์ เมตาดาต้าอยู่เสมอ
              journaled หากต้องการใช้โหมดอื่นนอกเหนือจากสั่งซื้อบนรูทไฟล์
              tem ผ่านโหมดไปยังเคอร์เนลเป็นพารามิเตอร์การบูตเช่น root‐
              ธง = = ข้อมูลวารสาร

ลบออกdata=orderedจาก fstab-line ของคุณและแก้ไข/etc/default/grubแทน ใน/etc/default/grubการเปลี่ยนสาย

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

ถึง

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash root‐flags=data=journal"

เรียกใช้sudo update-grubและรีบูต


5

เมื่อใช้ / etc / fstab

หากคุณทำงานคุณจะเห็นว่าคำสั่งในความเป็นจริงเปิดsudo strace -e open,openat mount -o remount,rw / /etc/fstabนี่คือคำสั่งที่พบบ่อยที่สุดที่คุณจะเห็นมักจะอ้างอิงในบทความเกี่ยวกับการทำงานจากเชลล์กู้คืน

หากต้องการอ้างอิงคำตอบของ sourcejedi (ซึ่งมาจากmount(8)คู่มือ):

เมานต์ -o remount, rw / dir

หลังจากที่สายนี้ติดอ่าน fstab และผสานตัวเลือกเหล่านี้มีตัวเลือกจากบรรทัดคำสั่ง (-o) หากไม่พบจุดเมานต์ใน fstab จะอนุญาตให้มีการเมาท์ใหม่พร้อมแหล่งที่ไม่ได้ระบุ

อย่างไรก็ตามนั่นไม่ได้หมายความว่า/etc/fstabจะใช้เสมอ โดยเฉพาะอย่างยิ่งเมื่อคุณระบุไฟล์อุปกรณ์ อ้างอิงถึงmount(8)คู่มือ :

ฟังก์ชันการติดตั้งใหม่ตามวิธีมาตรฐานที่คำสั่ง mount ทำงานกับตัวเลือกจาก fstab หมายความว่าคำสั่ง mount ไม่อ่าน fstab (หรือ mtab) เฉพาะเมื่อระบุอุปกรณ์และ dir เท่านั้น

เมานต์ -o remount, rw / dev / foo / dir

หลังจากการโทรนี้ตัวเลือกเมาท์เก่าทั้งหมดจะถูกแทนที่และสิ่งที่ไม่ได้ตั้งใจจาก fstab จะถูกละเว้นยกเว้นตัวเลือก loop = ซึ่งสร้างขึ้นภายในและดูแลโดยคำสั่ง mount

สิ่งนี้สมเหตุสมผลเนื่องจาก/dirอาจเป็นการกำหนดเอง - การกำหนดอุปกรณ์ใหม่ให้กับจุดเมานท์ที่แตกต่างกัน

/etc/fstabนี้ยังไม่ได้อ้างถึงเมื่อติดตั้งระบบแฟ้มที่เคอร์เนลเวลาบูตรู้อะไรของ/ /etc/fstabเพื่ออ้างอิงคำตอบของ psusi :

ในที่สุดบูตโหลดเดอร์มาพร้อมและสามารถส่งบรรทัดคำสั่งไปยังเคอร์เนล ถ้าอาร์กิวเมนต์ root = ผ่านไปแล้วจะบอกเคอร์เนลว่ารูท fs นั้นคืออะไรแทนที่จะเป็นค่าบิวด์อิน ไดรเวอร์ที่จำเป็นในการเข้าถึงที่ยังต้องถูกสร้างไว้ในเคอร์เนล

...

ในที่สุดวันนี้เรามี initramfs สิ่งนี้คล้ายกับ initrd แต่แทนที่จะเป็นอิมเมจระบบไฟล์บีบอัดที่โหลดลงใน ramdisk จะเป็นไฟล์เก็บถาวร cpio ที่ถูกบีบอัด tmpfs ถูกเมาท์เป็นรูทและไฟล์เก็บถาวรถูกแตกออกมา แทนที่จะใช้ pivot_root ซึ่งถือเป็นแฮ็คที่สกปรกสคริปต์การเริ่มต้นระบบจะเมาท์รูทจริงใน / root ลบไฟล์ทั้งหมดในรูท tmpfs จากนั้น chroot เป็น / root และ exec / sbin / init

ระบบไฟล์ที่ไม่ต้องการ fstab

โปรดทราบด้วยว่าเคอร์เนล Linux มีระบบไฟล์อื่นที่อยู่ในหน่วยความจำ - โดยปกติผู้ใช้เหล่านี้จะไม่สามารถใช้งานได้ซึ่งบางส่วนไม่มีจุดเมานท์เลยในขณะที่บางระบบอาจเปิดรับผู้ใช้ เคอร์เนลไม่จำเป็นต้องอ้างอิง/etc/fstabสำหรับสิ่งเหล่านั้น ตัวอย่างนั่นคือ/proc- มันเป็นระบบไฟล์เสมือนที่เปิดเผยข้อมูลส่วนใหญ่เกี่ยวกับกระบวนการและบางสิ่งเกี่ยวกับฮาร์ดแวร์และระบบที่ควรอยู่ในนั้น/sys- ระบบไฟล์เสมือนอื่น

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