Cách đây một thời gian, đã có một số cuộc thảo luận về ext4 có khả năng để lại các tệp trống sau khi một lần xóa ô uế, được tóm tắt khá tốt trong bài viết này . Về cơ bản, do phân bổ chậm, ghi có thể được giữ trong bộ đệm ghi trong thời gian dài hơn nhiều so với khoảng thời gian cam kết mặc định của tạp chí ext (5 giây).
Các vấn đề dường như đã được khắc phục trong một bản vá buộc phân bổ khối trong các tình huống nhất định, do đó buộc dữ liệu vào đĩa sau tối đa 5 giây theo mặc định.
Tôi đang tự hỏi điều gì sẽ xảy ra khi một ứng dụng ghi đè lên các phần hiện có của tệp mà không cắt bớt hoặc nối thêm tệp đó. Điều đó cũng sẽ bị buộc vào đĩa trong vòng 5 giây chứ?
Có vẻ như một tình huống khác với việc thêm vào một tệp: khi nối thêm, kích thước tệp thay đổi, đó là thay đổi siêu dữ liệu; do đó, một cam kết nhật ký sẽ cần thiết trong vòng 5 giây và vì dữ liệu = đã ra lệnh, dữ liệu sẽ phải được ghi trước đó vì lo ngại bảo mật (nếu không, các phần của các tệp đã bị xóa của người dùng khác có thể hiển thị cho chủ sở hữu của phần bổ sung tập tin).
Khi chỉ ghi đè dữ liệu tệp, không có lý do tại sao việc ghi dữ liệu phải xảy ra trước khi nhật ký siêu dữ liệu cam kết, vì dữ liệu cũ thuộc về cùng một người dùng với dữ liệu mới. Vì vậy, việc viết có xảy ra trước khi cam kết hay không, hoặc nó có thể bị trì hoãn lâu hơn khoảng thời gian cam kết tạp chí không? Nếu vậy thì bao lâu?
Cập nhật: Tôi biết rằng tất cả điều này là không liên quan khi thực hiện đúng, đó là sử dụng fsync (). (Đây là lý do chính cho tất cả các cuộc thảo luận về ext4 và mất dữ liệu - vấn đề chỉ liên quan đến các ứng dụng không phải là fsync () hoặc không đúng lúc.) Tôi không viết ứng dụng của riêng mình, tôi hỏi vì không biết liệu tất cả các ứng dụng của tôi có làm đúng hay không và tôi muốn biết một khung thời gian gần đúng cho các bài viết "nguy hiểm" như vậy. Lý do để hỏi là trình điều khiển đồ họa của tôi gây ra sự hoảng loạn hạt nhân thường xuyên và tôi muốn biết liệu tôi có phải lo lắng nhiều hơn 5 giây cuối cùng của việc ghi dữ liệu hay không.