Các hệ thống tập tin nhật ký có đảm bảo chống tham nhũng sau khi mất điện không?


28

Tôi đang hỏi câu hỏi này thay mặt cho một người dùng khác đã nêu vấn đề trong phòng trò chuyện Ubuntu.

Các hệ thống tập tin nhật ký có đảm bảo rằng sẽ không xảy ra tham nhũng nếu mất điện?

Nếu câu trả lời này phụ thuộc vào hệ thống tập tin, vui lòng cho biết cái nào bảo vệ chống tham nhũng và cái nào không.

Câu trả lời:


21

Không có gì đảm bảo. Một hệ thống tệp nhật ký có khả năng phục hồi nhanh hơn và ít bị tham nhũng hơn, nhưng không miễn dịch.

Tất cả một tạp chí là một danh sách các hoạt động gần đây đã được thực hiện cho hệ thống tập tin. Phần quan trọng là mục nhật ký được thực hiện trước khi các hoạt động diễn ra. Hầu hết các hoạt động có nhiều bước. Việc xóa một tệp, ví dụ có thể đòi hỏi phải xóa mục nhập của tệp trong mục lục của hệ thống tệp và sau đó đánh dấu các cung trên ổ đĩa là miễn phí. Nếu có điều gì đó xảy ra giữa hai bước, một hệ thống tệp được ghi có thể báo ngay lập tức và thực hiện việc dọn dẹp cần thiết để giữ mọi thứ nhất quán. Đây không phải là trường hợp với một hệ thống tệp không được ghi nhật ký mà phải xem xét toàn bộ nội dung của ổ đĩa để tìm lỗi.

Trong khi nhật ký này ít bị tham nhũng hơn nhiều so với không viết nhật ký, tham nhũng vẫn có thể xảy ra. Ví dụ, nếu ổ cứng bị trục trặc về mặt cơ học hoặc nếu ghi vào nhật ký thì chính nó bị hỏng hoặc bị gián đoạn.

Tiền đề cơ bản của việc ghi nhật ký là việc viết một mục nhật ký nhanh hơn nhiều so với giao dịch thực tế mà nó mô tả. Vì vậy, khoảng thời gian giữa hệ điều hành yêu cầu ghi (nhật ký) và ổ cứng hoàn thành nó ngắn hơn nhiều so với ghi thông thường: cửa sổ hẹp hơn cho những thứ bị lỗi, nhưng vẫn còn một cửa sổ.

đọc thêm


Bạn có thể vui lòng giải thích một chút về lý do tại sao điều này là đúng? Có lẽ bạn có thể đưa ra một ví dụ về cách tham nhũng sẽ xảy ra trong một kịch bản nhất định.
Nathan Osman

1
@George Edison Xem câu trả lời mở rộng của tôi.
Andrew Lambert

2
Đó là bit cuối cùng là không chính xác; không có cửa sổ cho những thứ đi sai Vì nó ghi lại những gì nó sắp làm trước khi bắt đầu thực hiện, nên hoạt động có thể được khởi động lại sau khi mất điện, bất kể nó xảy ra ở điểm nào trong quá trình vận hành. Đó là vấn đề đặt hàng, không phải thời gian.
psusi

@psusi vẫn còn một cửa sổ để ghi vào nhật ký bị gián đoạn. Nhật ký ghi có thể xuất hiện nguyên tử cho HĐH nhưng chúng vẫn ghi vào đĩa.
Andrew Lambert

5
@Amazed họ là nguyên tử vì họ có số thứ tự và / hoặc tổng kiểm tra, vì vậy mục nhật ký được viết hoàn toàn hoặc không. Nếu nó không được viết hoàn toàn, nó chỉ bị bỏ qua sau khi hệ thống khởi động lại và không có thay đổi nào được thực hiện cho fs để nó vẫn nhất quán.
psusi

18

Không.

Loại nhật ký phổ biến nhất, được gọi là nhật ký siêu dữ liệu, chỉ bảo vệ tính toàn vẹn của hệ thống tệp chứ không phải dữ liệu. Điều này bao gồm xfs, và ext3/ ext4trong data=orderedchế độ mặc định .

Nếu một hệ thống tệp không ghi nhật ký bị sự cố, nó sẽ được kiểm tra bằng cách sử dụng fscktrong lần khởi động tiếp theo. fsckquét mọi inode trên hệ thống tệp, tìm kiếm các khối được đánh dấu là đã sử dụng nhưng không thể truy cập (nghĩa là không có tên tệp) và đánh dấu các khối đó là không sử dụng. Làm điều này mất một thời gian dài.

Với một hệ thống tệp nhật ký siêu dữ liệu, thay vì thực hiện fsck, nó biết khối nào đang ở giữa thay đổi, vì vậy nó có thể đánh dấu chúng là miễn phí mà không cần tìm kiếm toàn bộ phân vùng cho chúng.

Có một loại nhật ký ít phổ biến hơn, được gọi là nhật ký dữ liệu, đó là những gì ext3sẽ làm nếu bạn gắn nó với data=journaltùy chọn.

Nó cố gắng bảo vệ tất cả dữ liệu của bạn bằng cách viết không chỉ là một danh sách các hoạt động logic, mà còn toàn bộ nội dung của mỗi lần ghi vào tạp chí. Nhưng vì nó ghi dữ liệu của bạn hai lần, nên nó có thể chậm hơn nhiều.

Như những người khác đã chỉ ra, thậm chí đây không phải là một sự đảm bảo, bởi vì ổ cứng có thể đã nói với hệ điều hành rằng nó đã lưu trữ dữ liệu, khi thực tế nó vẫn còn trong bộ nhớ cache của ổ cứng.

Để biết thêm thông tin, hãy xem bài viết Hệ thống tệp nhật ký Wikipedia và phần Chế độ dữ liệu của tài liệu ext4 .


1
+1 để phân biệt giữa tham nhũng hệ thống tệp và tham nhũng dữ liệu. Sự khác biệt nhỏ đó là khá doozy trong thực tế.
SplinterReality

Xin lỗi vì sự thiếu hiểu biết hoàn toàn của tôi, nhưng không phải data=journallà một tính năng không có ý nghĩa gì cả?
boehj

Một lần nữa, HĐH biết khi nào ổ đĩa lưu trữ dữ liệu và buộc nó phải xóa nó khi cần để duy trì fs mạch lạc. Tất nhiên, tệp dữ liệu của bạn có thể bị mất hoặc bị hỏng nếu ứng dụng ghi nó khi mất điện không được thực hiện cẩn thận và điều đó áp dụng cho dù bạn có sử dụng data = tạp chí hay không.
psusi

@psusi không quan trọng là chương trình ghi dữ liệu cẩn thận đến mức nào, rất nhiều ổ đĩa cứng đã âm thầm làm hỏng dữ liệu trên READING stackoverflow.com/q
432141117/388098

@ user3338098, các ổ đĩa mà dữ liệu bị hỏng âm thầm bị hỏng khủng khiếp và không bao giờ được sử dụng và là một cuộc trò chuyện hoàn toàn khác với tham nhũng do phần mềm làm sai.
psusi

8

Một hệ thống tập tin không thể đảm bảo tính nhất quán của hệ thống tập tin của nó nếu xảy ra sự cố mất điện, vì nó không biết phần cứng sẽ làm gì.

Nếu một ổ đĩa cứng đệm dữ liệu để ghi nhưng báo cho HĐH rằng nó đã ghi dữ liệu và không hỗ trợ các rào cản ghi thích hợp, thì việc ghi không theo thứ tự có thể xảy ra khi một lần ghi trước đó không chạm vào đĩa, nhưng sau đó lại ghi có. Xem câu trả lời serverfault này để biết thêm chi tiết.

Ngoài ra, vị trí của đầu trên ổ cứng từ tính được điều khiển bằng nam châm điện. Nếu mất điện ở giữa ghi, một số dữ liệu có thể tiếp tục được ghi trong khi các đầu di chuyển, làm hỏng dữ liệu trên các khối mà hệ thống tệp không bao giờ có ý định ghi.


Phần sụn của ổ đĩa có đủ thông minh để tạm dừng ghi khi rút đầu không?
Nathan Osman

@George: Nó sẽ phụ thuộc vào ổ đĩa. Có rất nhiều ngoài kia và bạn không biết ổ đĩa (giá rẻ) của bạn làm tốt như thế nào.
camh

1
Ổ cứng thông báo cho HĐH nếu nó sử dụng ghi phía sau bộ đệm và HĐH thực hiện các biện pháp để đảm bảo chúng được xóa theo đúng thứ tự. Ngoài ra các ổ đĩa được thiết kế để khi mất điện, chúng sẽ ngừng ghi. Tôi đã thấy một số trường hợp khu vực được viết vào thời điểm mất điện trở nên hỏng vì nó không hoàn thành việc cập nhật ecc (nhưng có thể dễ dàng viết lại một cách chính xác), nhưng không bao giờ nghe thấy các khu vực ngẫu nhiên bị hỏng do mất điện.
psusi

3

ZFS, gần nhưng không chính xác là một hệ thống tập tin nhật ký, được đảm bảo bằng thiết kế chống tham nhũng sau khi mất điện.

Sẽ không có vấn đề gì nếu một bài viết đang diễn ra bị gián đoạn ở giữa như trong trường hợp như vậy, tổng kiểm tra của nó chắc chắn sẽ không chính xác nên khối sẽ bị bỏ qua. Vì hệ thống tệp được sao chép trên ghi, dữ liệu chính xác trước đó (hoặc dữ liệu meta) vẫn còn trên đĩa và sẽ được sử dụng thay thế.


2

Câu trả lời là trong hầu hết các trường hợp không:

  • Như mikel đã nói, hầu hết các hệ thống tệp nhật ký chỉ có thể bảo vệ siêu dữ liệu tệp (thông tin như tên tệp, kích thước, quyền, v.v.), không phải dữ liệu tệp (nội dung của tệp). Điều này xảy ra bởi vì bảo vệ kết quả dữ liệu tệp trong một hệ thống tệp rất chậm (trong thực tế vô dụng).
  • Vì tạp chí cũng là một loại tệp đặc biệt được lưu trữ trên đĩa cứng, nó có thể bị hỏng sau khi mất điện. Do đó, nếu tạp chí bị hỏng, hệ thống tệp không thể hoàn thành bất kỳ giao dịch chưa hoàn tất nào đang diễn ra khi mất điện.

Những sự kiện có thể dẫn đến một tạp chí tham nhũng? Điều duy nhất tôi có thể nghĩ là các khu vực xấu - còn gì nữa không?
Nathan Osman

Đúng vậy, lỗi phần cứng là trường hợp thông thường.
sakisk
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.