Tùy chọn gắn kết nào để sử dụng cho hệ thống tệp ext3 để giảm thiểu mất dữ liệu hoặc hỏng?


15

Tôi có một thiết lập nhúng bằng cách sử dụng initramfs cho hệ thống tệp gốc nhưng sử dụng phân vùng ext3 tùy chỉnh được gắn trên ổ đĩa flash IDE nhỏ gọn. Vì tính toàn vẹn dữ liệu khi mất điện là yếu tố quan trọng nhất trong toàn bộ thiết lập, tôi đã sử dụng các tùy chọn sau để gắn kết (bên dưới là mục từ /etc/fstabtệp của tôi

<file system> <mount pt> <type> <options>                         <dump><pass>
/dev/sda2     /data      ext3   auto,exec,relatime,sync,barrier=1 0     2

Tôi đến bởi những lựa chọn này từ việc đọc trên internet. Điều tôi lo lắng là nội dung /proc/mountsđưa ra như sau:

/dev/sda2 /data ext3 rw,sync,relatime,errors=continue,user_xattr,acl,
barrier=1,data=writeback 0 0

Từ những gì tôi hiểu từ việc đọc xung quanh là tôi muốn sử dụng data=journaltùy chọn cho thú cưỡi của mình vì điều này mang lại sự bảo vệ tốt nhất chống lại tham nhũng dữ liệu. Tuy nhiên, từ trang man cho các tùy chọn ext3 cụ thể cho mountnó nói như sau về tùy chọn writBack:

Thứ tự dữ liệu không được bảo tồn - dữ liệu có thể được ghi vào hệ thống tệp chính sau khi siêu dữ liệu của nó được cam kết với tạp chí.
Đây được đồn là lựa chọn thông lượng cao nhất. Nó đảm bảo tính toàn vẹn của hệ thống tệp nội bộ , tuy nhiên nó có thể cho phép dữ liệu cũ xuất hiện trong các tệp sau khi gặp sự cố và khôi phục nhật ký.

Tôi rất bối rối về điều này - trang man dường như gợi ý rằng đối với tính toàn vẹn của hệ thống tệp tôi muốn chỉ định data=writebacktùy chọn cho mounthầu hết các tài liệu tham khảo khác mà tôi đã tìm thấy (bao gồm một số sách đã xuất bản trên linux nhúng) gợi ý rằng tôi nên sử dụng data=journal. Điều gì sẽ là cách tiếp cận tốt nhất cho tôi để sử dụng? Tốc độ ghi hoàn toàn không phải là một vấn đề - mặc dù toàn vẹn dữ liệu.


1
Cung cấp một số hướng dẫn xung quanh dữ liệu = tạp chí . Tôi có xu hướng sử dụng nó hơn bất cứ thứ gì khác vì RH chỉ hỗ trợ loại đặt hàng đó.
slm

2
@sim thực sự nó nói data=ordered: p
sourcejedi

Câu trả lời:


7

Đừng hiểu lầm bởi thực tế chỉ writebackđề cập internal filesystem integrity.
Với ext3, cho dù bạn sử dụng journal, orderedhoặc writeback, hệ thống tập tin siêu dữ liệu luôn được journalled và điều đó có nghĩa toàn vẹn hệ thống tập tin nội bộ.

Các chế độ dữ liệu cung cấp cách kiểm soát dữ liệu thông thường được ghi vào hệ thống tệp.
Trong writebackchế độ, thay đổi siêu dữ liệu được ghi lại đầu tiên trong tạp chí và một khối cam kết được viết. Sau khi tạp chí đã được cập nhật, siêu dữ liệu và ghi dữ liệu có thể được tiến hành. data=writeback có thể là một rủi ro bảo mật nghiêm trọng: nếu hệ thống gặp sự cố trong khi nối vào tệp, sau khi siêu dữ liệu đã được cam kết (và các khối dữ liệu bổ sung được phân bổ), nhưng trước khi dữ liệu được ghi (khối dữ liệu được ghi đè bằng dữ liệu mới), sau đó ghi nhật ký phục hồi tệp đó có thể chứa các khối chứa đầy dữ liệu từ các tệp đã bị xóa trước đó - từ bất kỳ người dùng 1 nào .

Vì vậy, nếu tính toàn vẹn dữ liệu là mối quan tâm chính của bạn và tốc độ không quan trọng, data=journallà cách để đi.


4

Như bạn đã nhận thấy, điểm chính là bạn không thể ngăn hệ thống tập tin của mình khỏi tất cả các loại sự cố.

Bạn có thể làm gì:

  1. Về phía phần mềm, bạn có thể sử dụng fdatawrites sau mỗi hoạt động quan trọng (Xem 2003 bài này từ Theodore T'so, một nhà phát triển Linux FS Kernel chính. Nó vẫn còn đúng. Ngoài ra còn có một này về một sự mất mát dữ liệu lớn ẩn trong phiên bản cũ của ext4)
  2. Giảm khoảng thời gian cam kết xuống 1 giây ( commit = 1 ) (xem bài viết này từ LWN, đó là về ext4 nhưng chứa thông tin thực sự hữu ích về ext3). NB: Không cần thiết, đồng bộ hóa .
  3. Như tài liệu của RHEL được chỉ ra bởi sim đã nói, hãy sử dụng * data_err = abort * và data = order
  4. noatime sẽ làm giảm các hoạt động vô ích trên hệ thống tập tin
  5. Như bạn đã nhận thấy, rào cản = 1 là một cách tốt để giảm thiểu mất dữ liệu (xem bài đăng này )
  6. đồng bộ hóa , tất nhiên, là một trong những tùy chọn "Tôi không muốn mất dữ liệu của mình".

Cuối cùng, các tùy chọn gắn kết paranoiac có thể trông như thế này:

auto,exec,relatime,sync,barrier=1,commit=1,data=ordered,data_err=abort,noatime,

Và bạn cũng có thể đảm bảo tính toàn vẹn dữ liệu với một fsck tự động ở mỗi lần khởi động.


2

Hãy thử thay đổi phần nào của trang người đàn ông mà bạn empahsize:

viết lại

Thứ tự dữ liệu không được bảo tồn - dữ liệu có thể được ghi vào hệ thống tệp chính sau khi siêu dữ liệu của nó được cam kết với tạp chí. Đây được đồn là lựa chọn thông lượng cao nhất. Nó đảm bảo tính toàn vẹn của hệ thống tệp nội bộ, tuy nhiên nó có thể cho phép dữ liệu cũ xuất hiện trong các tệp sau khi gặp sự cố và khôi phục nhật ký.

Như don_crissti đã chỉ ra, các chế độ khác không có "tuy nhiên".

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.