Có phải `/ etc / fstab` được sử dụng để nối lại các ổ đĩa không?


9

Tôi có một thiết bị được cài đặt với Ubuntu 14.04.5 có một ổ cứng duy nhất với hệ thống tệp ext4.

Bằng cách đọc tài liệu Hệ thống tập tin Ext4 tôi đã học được rằng chế độ dữ liệu mặc định orderedchỉ bảo vệ siêu dữ liệu. Trong dự án của tôi, chúng tôi muốn thay đổi nó để journalbảo vệ dữ liệu tệp vì an toàn dữ liệu có giá trị cao hơn.

Điều đầu tiên tôi đã cố gắng là sửa đổi các /etc/fstabtập tin. Tôi đã cố gắng thay đổi

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

đến

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

bằng cách thêm data=journalvào trường tùy chọn.

Tuy nhiên, khi tôi khởi động lại thiết bị, tôi đã nhận được thông báo lỗi cannot change data mode on remount. Tôi đã kiểm tra dmesgvà thấy một thông báo trước đó về việc gắn ổ đĩa với orderedchế độ dữ liệu.

Trong một thời gian dài lúng túng, tôi nghĩ /etc/fstabđược sử dụng để ghi đè các tùy chọn gắn mặc định để các ổ đĩa chỉ được gắn một lần. Nhưng bây giờ có vẻ sai: ổ đĩa được gắn kết bằng các tùy chọn gắn kết mặc định của nó, sau đó /etc/fstabđược chọn để kết nối lại.

Câu hỏi của tôi là :

  • Đây có phải là "mount-remout" thiết kế hệ thống không? Tôi đọc Fstabtrang wiki nhưng không thấy nó đề cập đến điều "gắn kết".
  • Nếu /etc/fstabthực sự được sử dụng để đếm lại, thì bước đầu tiên của quá trình khởi động là ổ đĩa được gắn lần đầu tiên? Nó được thực hiện trong /etc/init.d? Tôi đã thấy một số tập lệnh /etc/init.dđược gọi umountfsumountroot, nhưng, lướt qua nội dung của chúng, chúng trông không liên quan.

2
Tôi nghĩ đó là vấn đề "con gà và quả trứng" được đề cập ở đây ( /etc/fstabnằm trên hệ thống tập tin gốc, nhưng nó không thể được đọc cho đến khi tập tin được gắn vào): initramfs có sử dụng / etc / fstab không?
Steeldo

Câu trả lời:


8

Từ man ext4:

data = {tạp chí | đã đặt hàng | viết lại}
              Chỉ định chế độ ghi nhật ký cho dữ liệu tệp. Siêu dữ liệu luôn
              Nhật ký. Để sử dụng các chế độ khác ngoài thứ tự trên tệp gốc
              tem, chuyển chế độ cho kernel làm tham số khởi động, ví dụ root
              cờ = dữ liệu = tạp chí.

Xóa data=orderedkhỏi fstab-line của bạn và chỉnh sửa /etc/default/grubthay thế. Trong /etc/default/grubsự thay đổi dòng

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

đến

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

chạy sudo update-grubvà khởi động lại.


5

Khi / etc / fstab được sử dụng

Nếu bạn chạy, sudo strace -e open,openat mount -o remount,rw /bạn sẽ thấy lệnh thực tế mở /etc/fstab. Đây là lệnh phổ biến nhất bạn sẽ thấy, thường được tham khảo trong các bài viết về làm việc từ shell recovery.

Để trích dẫn câu trả lời của sourcejedi's (xuất phát từ mount(8)hướng dẫn sử dụng):

gắn kết -o remount, rw / dir

Sau cuộc gọi này, mount đọc fstab và hợp nhất các tùy chọn này với các tùy chọn từ dòng lệnh (-o) . Nếu không tìm thấy điểm gắn kết trong fstab, thì việc cho phép với nguồn không xác định được cho phép.

Tuy nhiên, điều đó không có nghĩa /etc/fstablà luôn luôn được sử dụng. Đặc biệt, khi bạn cũng chỉ định tệp thiết bị; tham khảo mount(8)hướng dẫn :

Chức năng remount tuân theo cách tiêu chuẩn cách lệnh mount hoạt động với các tùy chọn từ fstab. Điều đó có nghĩa là lệnh mount không đọc fstab (hoặc mtab) chỉ khi một thiết bị và thư mục được chỉ định đầy đủ.

gắn kết -o remount, rw / dev / foo / dir

Sau cuộc gọi này, tất cả các tùy chọn gắn kết cũ được thay thế và các công cụ tùy ý từ fstab bị bỏ qua , ngoại trừ tùy chọn loop = được tạo và duy trì bên trong bởi lệnh mount.

Điều này có ý nghĩa, vì /dircó thể là tùy ý - kết nối một thiết bị với các điểm gắn kết khác nhau.

Điều /etc/fstabnày cũng không được tham chiếu khi gắn /hệ thống tập tin vào kernel thời gian khởi động không biết gì về /etc/fstab. Để trích dẫn câu trả lời của psusi :

Cuối cùng, bộ tải khởi động đã xuất hiện và có thể truyền một dòng lệnh đến kernel. Nếu đối số root = được thông qua, điều đó đã nói với kernel nơi fs gốc thay vì giá trị tích hợp. Các trình điều khiển cần thiết để truy cập vẫn phải được tích hợp vào kernel

...

Cuối cùng, hôm nay chúng ta có initramfs. Điều này tương tự như initrd, nhưng thay vì là một hình ảnh hệ thống tập tin nén được tải vào một ramdisk, nó là một kho lưu trữ cpio nén. Một tmpfs được gắn kết như là root, và kho lưu trữ được trích xuất ở đó. Thay vì sử dụng p Pivot_root, được coi là hack bẩn, các tập lệnh khởi động initramfs gắn root thực trong / root, xóa tất cả các tệp trong root tmpfs, sau đó chroot vào / root và exec / sbin / init

Hệ thống tập tin không cần fstab

Cũng lưu ý rằng, nhân Linux đó có các hệ thống tệp khác nằm trong bộ nhớ - những hệ thống này không có sẵn cho người dùng thông thường, một số trong đó không có điểm gắn kết nào cả, trong khi một số được hiển thị cho người dùng. Kernel không phải tham khảo /etc/fstabcho những cái đó. Ví dụ về điều đó là /proc- đó là một hệ thống tệp ảo hiển thị hầu hết thông tin về các quy trình và một số nội dung về phần cứng và hệ thống thực sự nên có /sys- một hệ thống tệp ảo khác.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.