Câu trả lời:
Một cách mà hệ thống tệp ext4 kiểm tra phân mảnh, là với quá trình phân bổ bị trì hoãn (chế độ phân bổ mặc định của ext4).
Phân bổ bị trì hoãn hoạt động bằng cách trì hoãn ánh xạ các khối dữ liệu tệp mới ghi vào các khối đĩa trong hệ thống tệp cho đến thời gian ghi lại.
Điều này hoạt động bằng cách phân bổ hầu hết các khối cho một tệp cùng một lúc, khi tổng số khối (hoặc ít nhất là một sân bóng) trong mỗi tệp được biết. Điều này cho phép bộ cấp phát khối ( mballoc
được đề cập trong câu trả lời của MMK) thực hiện công việc tốt hơn là tìm một không gian trống có kích thước phù hợp để đặt tệp.
Trong hệ thống tệp ext3, có một bộ cấp phát khối cho đĩa cho mỗi khối, và do đó, hoàn toàn có khả năng xảy ra sự phân mảnh.
Tuy nhiên, trong hệ thống tệp ext4 có một bộ cấp phát nhiều khối có thể trì hoãn việc ghi các khối vào đĩa, do đó, nó có thể phân bổ nhiều khối cùng một lúc trong một khối đĩa để cho phép ghi liền kề - và vì vậy, ít có khả năng xảy ra sự phân mảnh (vẫn có thể xảy ra, chỉ là ít có khả năng hơn)
Ít nhất là đối với Ext2 (và Ext3 tôi nghĩ, mặc dù tôi không chắc lắm), không có gì trong định dạng / cấu trúc trên đĩa có thể ngăn chặn sự phân mảnh.
Việc thiếu nhu cầu chống phân mảnh sẽ nằm ở cấp độ triển khai, sẽ thay đổi tùy theo từng hệ điều hành. Đó là, tùy thuộc vào việc triển khai, một tệp trong Ext2 có thể hoặc không bị phân mảnh.
Nếu phân mảnh được tránh, điều đó có thể sẽ do phân bổ các khối vật lý bị trì hoãn. Đó là, ở một mức độ triển khai nào đó, hệ thống tệp sẽ lưu trữ dữ liệu (và truy cập nó thông qua số khối logic) cho đến khi được ghi / cam kết vào đĩa. Khi dữ liệu cuối cùng được ghi vào đĩa, các khối vật lý phải được phân bổ. Thuật toán phân bổ có thể (hoặc không) phân bổ một số khối vật lý có sẵn liền kề cho dữ liệu.
Hi vọng điêu nay co ich.