Chống phân mảnh một phân vùng ext?


Câu trả lời:


10

Các hệ thống tệp hiện đại, đặc biệt là các hệ thống được thiết kế để hoạt động hiệu quả trong các trường hợp sử dụng đa người dùng và / hoặc đa tác vụ, làm rất tốt việc không phân đoạn dữ liệu cho đến khi hệ thống tệp gần đầy (không có con số chính xác nào cho việc "gần đầy "đánh dấu là vì nó phụ thuộc vào hệ thống tệp lớn như thế nào, sự phân bố kích thước tệp và kiểu truy cập của bạn là gì - các con số giữa 85% và 95% thường được trích dẫn) hoặc mô hình tạo và ghi tệp là bất thường hoặc hệ thống tệp là rất già nên đã thấy rất nhiều "hành động". Điều này bao gồm ext2 / 3/4, reiser, btrfs, NTFS, ZFS và những thứ khác.

Hiện tại không có cách phân cấp kernel- / filesystem- để chống phân mảnh ext3 hoặc 4 (xem http://en.wikipedia.org/wiki/Ext3#Defragmented để biết thêm một chút thông tin) mặc dù ext4 được lên kế hoạch để sớm trực tuyến chống phân mảnh.

Có các công cụ sử dụng đất (như http://vleu.net/shake/và những thứ khác được liệt kê trong bài viết trên wikipedia đó) thử chống phân mảnh các tệp riêng lẻ hoặc bộ tệp bằng cách sao chép / ghi lại chúng - nếu có một khối không gian trống đủ lớn, điều này thường dẫn đến việc tệp được cung cấp một khối liền kề. Tuy nhiên, điều này không đảm bảo các tệp ở gần nhau, vì vậy nếu bạn chạy lắc qua một cặp tệp lớn mà bạn tìm thấy sẽ dẫn đến việc hai tệp bị phân mảnh nhưng không ở gần nhau trên đĩa. Trong một hệ thống tệp nhiều người dùng, địa phương của các tệp với nhau thường không quan trọng (chắc chắn nó ít quan trọng hơn sau đó phân mảnh các tệp) vì các đầu ổ đĩa đang lật khắp nơi để phục vụ người dùng khác nhau '

Nếu bạn có một hệ thống tệp bị phân mảnh xấu theo thời gian và hiện có một dung lượng trống khá lớn thì việc chạy một cái gì đó như shaketrên tất cả các tệp của nó có thể có hiệu ứng mà bạn đang tìm kiếm. Một phương pháp khác là sao chép tất cả dữ liệu vào một hệ thống tập tin mới, xóa bản gốc và sau đó sao chép lại. Điều này giúp theo cách tương tự shakenhưng có thể nhanh hơn đối với lượng dữ liệu lớn hơn.

Đối với một lượng nhỏ phân mảnh, đừng lo lắng về nó. Tôi biết những người dành nhiều thời gian ngồi xem các thanh tiến trình chống phân mảnh hơn là họ sẽ tiết kiệm (do truy cập đĩa hiệu quả hơn) trong một số thời gian hoạt động bình thường!


Có cơ chế nào như: các tệp thường được sử dụng trong khi khởi động được đặt gần nhau để đạt được lợi ích của địa phương không? khởi động nhanh hơn?
uray

1
Không phải là tôi biết. Bạn có thể sử dụng ureadahead, như các bản dựng Ubuntu gần đây làm theo mặc định (xem ubuntuforums.org/showthread.php?t=1434502 để biết thêm thông tin), để đạt được hiệu quả tương tự. Có thể giảm một số độ trễ trong trình tự khởi động Linux bằng cách yêu cầu nó khởi động các dịch vụ đồng thời hơn nếu có thể nếu thiết lập khởi động của bạn hỗ trợ điều này (đặt CONCURRENCY = shell in / etc / defaults / rc trên Debian) và các chỉnh sửa tương tự. Để kiểm tra xem bạn có tạo ra sự khác biệt nào với những thay đổi mà bạn đã sử dụng bootchart.org để hiển thị những gì xảy ra trước khi bạn điều chỉnh mọi thứ so với sau đó.
David Spillett

@uray, tôi đã hồi sinh từ bỏ từ lâu e2defragvà thử nghiệm với nó để đạt được việc đóng gói như vậy. Bạn có thể tìm thấy nó tại launchpad.net/e2defrag .
psusi

@David: Tôi không có /etc/defaults/rcnhưng có /etc/default/rcStrên debian 6
ctrl-alt-delor

@psusi - Điều này e2defragbây giờ hỗ trợ Ext3 tốt hơn, tốt hơn shake?
Alex S

0

Không có nhiều phân mảnh miễn là đĩa không được lấp đầy quá nhiều (vì vậy đừng lấp đầy đĩa quá nhiều nếu bạn có thể tránh được).


2
Vì vậy, nếu đĩa được lấp đầy, chúng ta có cần chống phân mảnh không?
uray
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.