Cái gì không cần chống phân mảnh? Linux hay ext2 ext3 FS?


32

Tại sao bạn không phải chống phân mảnh hệ thống Linux? Bởi vì nó đang sử dụng hệ thống tệp ext2 / ext3 hoặc vì đó là Linux?

Điều đó có liên quan, vì tôi có một hệ thống khởi động kép (W7 / Ubuntu) và một phân vùng chung (NTFS) có thể được truy cập bởi cả hai hệ thống. Nếu tôi đang sử dụng phân vùng này với Linux, nó có bị phân mảnh không?

Một vấn đề khác là các thùng chứa Truecrypt. Tôi cũng truy cập chúng bằng Linux và Windows, và chúng là FAT32. Họ có bị phân mảnh bởi Linux hoạt động trên chúng không?


2
Các câu trả lời khác là tốt nhưng bỏ qua một bit quan trọng: Tất cả các hệ thống tệp: ext2 / 3/4 và NTFS sẽ phân mảnh các tệp khá nhiều khi không gian đĩa thấp. Nếu bạn muốn ngăn phân mảnh, đừng cho phép hệ thống tập tin của bạn sử dụng vượt quá 90%.
Zan Lynx

1
Nếu bạn sử dụng ext4, thì bạn sẽ ngạc nhiên khi thấy bạn có thể có bao nhiêu phân mảnh khi bạn chạy e4defrag -v .trong cây thư mục, đặc biệt là nếu nó chứa, giả sử, các tệp được tải xuống bằng máy khách torrent (mặc dù một số sử dụng fallocate/ posix_fallocate).
rbrito

Mặc dù câu hỏi tùy thuộc vào ý kiến ​​cá nhân, tôi nghĩ nó phụ thuộc nhiều hơn vào thực tế.
Julie Pelletier

Câu trả lời:


27

Đây là một bài viết về Làm thế nào để Geek về cách ext2 / ext3 phân bổ các tệp trên đĩa. Và họ cũng có một bài viết hỏi " Bạn có thực sự cần chống phân mảnh không?"


Về lý do tại sao FAT trở nên phân mảnh:

"Khi bạn lưu tệp vào hệ thống tệp FAT, [tệp được lưu] càng gần đầu đĩa càng tốt. Khi bạn lưu tệp thứ hai, [tệp được lưu] ngay sau tệp đầu tiên - và vì vậy trên. Khi các tệp gốc tăng kích thước, chúng sẽ luôn bị phân mảnh. Không có phòng nào gần đó để chúng phát triển. "
-Làm thế nào để đam mê

wikipedia có thêm thông tin về phân mảnh FAT .

Về cách EXT2,3,4 phân bổ tệp:

"Hệ thống tệp ext2, ext3 và ext4 [...] phân bổ tệp theo cách thông minh hơn. Thay vì đặt nhiều tệp gần nhau trên đĩa cứng, hệ thống tệp Linux phân tán các tệp khác nhau trên đĩa, để lại một lượng lớn không gian trống giữa chúng. "
-Làm thế nào để đam mê

(Và thêm thông tin về phân mảnh trên ext3, từ wikipedia )

"(Các) hệ thống tệp Linux hiện đại giữ phân mảnh ở mức tối thiểu bằng cách giữ tất cả các khối trong một tệp gần nhau, ngay cả khi chúng không thể được lưu trữ trong các cung liên tiếp. Một số hệ thống tệp, như ext3, phân bổ hiệu quả khối miễn phí gần nhất với khối khác chặn trong một tệp. Do đó, không cần phải lo lắng về sự phân mảnh trong hệ thống Linux. "
- TLDP


4
Câu trả lời chính xác! Nhưng bạn nên đặt thêm một chút nội dung. Ý tưởng là bất kỳ câu trả lời nào trên StackExchange đều phải đủ. Nếu các liên kết của câu hỏi của bạn bị hỏng, câu trả lời của bạn sẽ không có ích gì, vì vậy bạn nên đưa ra lời giải thích đầy đủ trong bài đăng của mình và sau đó đưa ra các liên kết để đọc thêm.
lgeorget

1
Cảm ơn bạn @lgeorget - Tôi đã đưa ra câu trả lời với một số trích dẫn chỉ đường để luôn có một số nội dung để đọc về "tại sao". Tôi đánh giá cao crit đầu vào / xây dựng của bạn !!
dougBTV

"Khi bạn lưu tệp vào hệ thống tệp FAT, nó sẽ lưu". Không có ý nghĩa. Nó là gì"? FAT là một định dạng hệ thống tập tin. Nó mô tả nơi bạn có thể lưu, nhưng nó không giới hạn bạn ở một vị trí. Trong thực tế, hệ điều hành quyết định. Nhưng có nhiều hệ điều hành khác nhau có thể ghi vào FAT và mỗi hệ điều hành đưa ra quyết định riêng.
MSalters

@MSalters - đồng ý. Tôi sẽ chỉnh sửa phần trích dẫn để bỏ qua sự mơ hồ đó.
dougBTV

Sự mơ hồ chỉ được ẩn bây giờ. Tuyên bố vẫn còn khá tuyệt đối (trong đó "FAT" lưu) trong khi toàn bộ đặc tả của FAT nói không có điều đó. Trong thực tế, liên kết Wikipedia mà bạn trích dẫn trực tiếp mâu thuẫn với nó: nó đặc biệt nói rằng Windows chọn vị trí cho tệp thứ hai không trực tiếp sau tệp đầu tiên. ("chọn các khu vực tiếp giáp lớn trước")
MSalters

23

Phân mảnh luôn là một mối quan tâm cho dù hệ thống tập tin là gì. Tuy nhiên, Ext3 / Ext2 đã giảm thiểu vấn đề đến mức hầu hết các quản trị viên chỉ hoạt động như thể đó không phải là vấn đề đáng lo ngại. Điều này được giảm thiểu bằng cách sử dụng bộ lập lịch I / O có thẩm quyền và bởi hệ thống tệp để lại không gian sau mỗi tệp để phù hợp với sự phát triển. Trên hết, các mảnh bổ sung được lưu trữ gần nhau hơn nên ngay cả khi có sự phân mảnh, các hiệu ứng bị tắt tiếng nghiêm trọng. Ext4 chuyển sang phạm vi cũng được dự định để giúp giảm thiểu sự phân mảnh thậm chí xa hơn.

Phân mảnh vẫn tồn tại, ext2 có một công cụ chống phân mảnh ngoại tuyến, ext4 đang có một công cụ trực tuyến và btrfs (chỉ vì nó liên quan đến câu hỏi) đã có phân mảnh trực tuyến. Nếu bạn đang sử dụng ext3, lựa chọn thực sự duy nhất của bạn là chuyển đổi sang ext4 (thông qua tune2fs) hoặc thử xem bạn có bao nhiêu may mắn với các công cụ không gian người dùng như thế nào shake.

Tùy thuộc vào loại I / O mà hệ thống tập tin của bạn đang trải qua, nó vẫn có thể là một mối quan tâm ngay cả ở mức độ tắt tiếng của nó, đó là lý do tại sao các công cụ trực tuyến được coi là hữu ích để bắt đầu.

Đối với câu hỏi về FAT32, sự phân mảnh không xảy ra khi bạn chỉ hoạt động trên một tệp, nó xảy ra khi bạn ghi vào tệp. Để trả lời trực tiếp câu hỏi của bạn, phân mảnh là một khía cạnh của thiết kế hệ thống tệp, vì vậy hệ thống tệp FAT32 của bạn có khả năng phân mảnh bất cứ khi nào bạn viết một cái gì đó cho nó.


"Điều này được giảm thiểu bằng cách sử dụng bộ lập lịch I / O có thẩm quyền". Có một cái gì đó không hoàn toàn đúng với cụm từ đó.
Faheem Mitha

Cảm ơn đã nắm bắt điều đó. Tôi rất tệ khi sửa lại ngôn ngữ của mình mà không sửa bất kỳ vấn đề nào mà bản sửa đổi gây ra với ngữ pháp chung của câu văn.
Bratchley

Đây là một câu trả lời tốt. Tôi sẽ thêm một cái gì đó về CoW (sao chép trên ghi). Nó có một mối quan hệ chặt chẽ với việc các fs có bị phân mảnh hay không.
Martin Sugioarto

4

Trả lời câu hỏi của bạn, từng người một:

Tại sao bạn không phải chống phân mảnh hệ thống Linux? Bởi vì nó đang sử dụng hệ thống tệp ext2 / ext3 hay vì đó là Linux?

Vì ext2 / 3/4 có cách tiếp cận khác nhau về các tệp và thư mục, vì vậy chúng hầu như không bị phân mảnh. Những người khác đã trả lời về nó, và bạn có thể đọc thêm chi tiết ở đây

Điều đó có liên quan, bởi vì có một hệ thống khởi động kép (W7 / Ubuntu) và một phân vùng chung (NTFS) có thể được truy cập bởi cả hai hệ thống. Nếu tôi đang sử dụng phân vùng này với Linux, nó có bị phân mảnh không?

Vâng, nó có thể bị phân mảnh. Không có vấn đề gì nếu Windows hoặc Linux hoặc bất cứ thứ gì khác truy cập vào nó, đó là cách mỗi hệ thống tệp xử lý kích thước tệp, cách lưu trữ tất cả các khối đó, cho dù nó có để trống khoảng trống giữa mỗi tệp ...

Một vấn đề khác là các thùng chứa Truecrypt. Tôi cũng truy cập chúng bằng Linux và Windows, và chúng là FAT32. Họ có bị phân mảnh bởi Linux hoạt động trên chúng không?

Các thùng chứa Truecrypt là một tệp, cho tất cả các vấn đề thực tế. Khi bạn tạo một thùng chứa bằng TrueCrypt, bạn đang tạo một tệp có kích thước bạn chọn. Đối với hệ điều hành của bạn, nó cũng giống như bất kỳ tệp nào khác. Nếu bạn tạo các bản sao của nó, v.v., có lẽ các bản sao cuối cùng có thể được lưu lại bị phân mảnh.

Nhưng, hãy nhớ rằng, không bao giờ tốt khi có nhiều bản sao của cùng một container, điều đó có thể giúp giảm tính bảo mật của nó. Luôn luôn làm một container mới.

Khi bạn lưu, xóa, sao chép, di chuyển, v.v. bên trong vùng chứa, các hệ điều hành không biết về nó, nó cũng giống như mở, chỉnh sửa và lưu bất kỳ tệp nào khác mà không thay đổi kích thước của nó.

Và nếu bạn lo lắng về bảo mật truecrypt về phân mảnh, hãy thực hiện một số nghiên cứu về việc sử dụng truecrypt với SSD: vì SSD cố gắng tận dụng sự hao mòn của tất cả bộ nhớ bên trong nó, bạn có thể có cùng tác dụng sao chép bộ chứa xung quanh.


3

Cuối cùng, nó thuộc về trình điều khiển hệ thống tệp trong HĐH.

Hệ thống tệp ext2 và FAT là cả hai phương pháp để ghi lại các khối trên đĩa thuộc về tệp nào. Khi không phải tất cả các khối của một tệp liền kề nhau, tệp được gọi là phân mảnh. Nhưng rõ ràng, sự phân mảnh là do chiến lược phân bổ khối khi viết một tệp chứ không phải do cách bạn ghi lại các khối đó.

Điều làm nên sự khác biệt là trình điều khiển hệ thống tập tin có thể nhìn xa đến mức nào. Nếu người lái xe biết có thêm 10 khối để viết, nó có thể chọn một khu vực trống tiếp giáp và tránh sự phân mảnh trong tương lai. Điều này phụ thuộc vào kiến ​​trúc trình điều khiển, đặc trưng cho hệ điều hành. Nhưng việc tìm kiếm không gian trống chính xác tương tự có thể được thực hiện trên FAT và ext2.

Trên thực tế, ext2 và FAT không thực sự khác biệt như bạn nghĩ. Tôi đã viết phần ext2 của bộ tải khởi động lên trên mã FAT hiện có và yêu cầu ít hơn 100 dòng mã.

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.