Cách chống phân mảnh hệ thống tập tin ext4


66

Tôi không muốn bất kỳ câu trả lời nói rằng không cần, xin vui lòng!

Câu trả lời:


67

Sử dụng e4defrag để chống phân mảnh tệp của bạn

Nếu hệ thống tệp ext4 của bạn được tạo bằng extenttùy chọn (mặc định trong các bản phát hành gần đây), bạn có thể sử dụng e4defragtiện ích để kiểm tra và chống phân mảnh trực tuyến, tức là không cần thông báo.

Chỉ cần kiểm tra mức độ phân mảnh với một cái gì đó như thế này (bạn cần phải root để xem chi tiết):

sudo e4defrag -c /path/to/myfiles

Đây là một ví dụ về đầu ra bạn có thể nhận được:

$ sudo e4defrag -c iso/
<Fragmented files>                             now/best       size/ext
1. /home/gerlos/iso/debian-live-7.5.0-i386-rescue.iso
                                                 7/1         111177 KB
2. /home/gerlos/iso/systemrescuecd-x86-4.4.1.iso
                                                 4/1         100897 KB
3. /home/gerlos/iso/debian-live-7.5.0-amd64-rescue.iso
                                                 6/1         116053 KB
4. /home/gerlos/iso/ubuntu-14.04.2-server-amd64.iso
                                                 8/1          76160 KB
5. /home/gerlos/iso/ubuntu-14.10-desktop-amd64.iso
                                                15/1          75712 KB

 Total/best extents             40/5
 Average size per extent            90577 KB
 Fragmentation score                0
 [0-30 no problem: 31-55 a little bit fragmented: 56- needs defrag]
 This directory (iso/) does not need defragmentation.
 Done.

Như trong ví dụ này, hầu hết thời gian sẽ cho bạn biết rằng không cần chống phân mảnh, nhưng nếu bạn muốn làm điều đó bằng mọi cách bạn có thể sử dụng (bạn không cần sử dụng sudo để chống phân mảnh các tệp của riêng bạn):

e4defrag /path/to/myfiles

Người dùng của bạn thậm chí có thể chạy nó trên các tệp của riêng họ, không cần phải root trừ khi bạn muốn làm việc trên các tệp hệ thống hoặc người dùng khác.

e4defragcó trong e2fsprogsgói và tôi đoán nó đã được cài đặt trên hệ thống Ubuntu của bạn.


2
e4defrag -c không trả về gì ngoài done. Điều đó chỉ có nghĩa là không có sự phân mảnh?
hrzhu

3
Xin lỗi, tôi quên đề cập rằng bạn cần chạy e4defrag -cvới sudohoặc root để có được thông tin chi tiết về phân mảnh tệp của bạn. Nhưng không cần phải root để chống phân mảnh chúng.
gerlos

@gerlos Nếu tôi cố gắng chống phân mảnh hệ thống tập tin gốc /thì sao?
Pavel Sayekat

2
@PavelSayekat bạn chỉ cần root (nghĩa là sử dụng sudo) để chạy e4defrag /, và không cần phải làm gì đặc biệt. e4defragsẽ kiểm tra mọi tập tin ở đó, vì vậy hãy sẵn sàng chờ ổ đĩa của bạn đọc mọi thứ. Hãy nhớ rằng nó có thể là một sự lãng phí lớn thời gian. Hầu hết thời gian, nếu bạn có đủ không gian trống trong hệ thống tệp, bạn sẽ chỉ có một vài tệp bị phân mảnh và thường chúng sẽ nằm trong thư mục nhà của bạn, liên quan đến hoạt động trình duyệt web của bạn. Ví dụ: trên máy tính để bàn mà tôi sử dụng hàng ngày e4defragbáo cáo rằng chỉ có 5 tệp bị phân mảnh, tất cả đều có cấu hình Chromium và thư mục bộ đệm.
gerlos

Điều này chỉ phân mảnh trong phạm vi bên trong các tệp, chứ không phải các tệp với nhau. Đó là, nếu tôi có một thư mục chứa ba tệp tại các vị trí vật lý khác nhau trên đĩa, thì vẫn sẽ chậm sử dụng các tệp này đồng thời sau khi chạy công cụ này. Có cách nào để sắp xếp lại các tập tin trên đĩa, hoặc "chống phân mảnh không gian trống" như đôi khi nó được gọi không?
fuzzyTew

29

Hãy xem trên e2fspross . Điều này cũng có sẵn trong các gói Ubuntu. Nó cung cấp chương trình e4defrag.


5
Điều này thực sự chỉ hữu ích trên các hệ thống tệp ext4 được tạo với phạm vi -O, không phải là mặc định.
dobey

Anh chàng trả lời về việc chống phân mảnh, có thể thấy rõ với e4defrag, sự gợi ý không phải là một tạp chí bên ngoài hay không, anh ta không xứng đáng với -1.
Felipe Alcacibar

8
@dobey Ubuntu 12.04 (.3) LTS chứa extenttrong khổ ext4thơ của [fs_types]phần trong /etc/mke2fs.conf- do đó, nó là "mặc định". Mặc dù, bất kể cấu hình thời gian tạo của máy mà hệ thống tệp được kết nối, tốt nhất bạn nên tự kiểm tra hệ thống tệp: tune2fs -l </dev/with/ext4> | grep extent(hoặc xem dòng "Tính năng hệ thống tệp " trong đầu ra Tune2fs hoàn chỉnh). Nhắc bạn, tôi chỉ chạy e4defrag -c ...trên hệ thống tệp 1TB đầy đủ 100% extentvà chỉ có 5 tệp bị phân mảnh và "điểm phân mảnh" 0. YMMV.
Richard Michael

@RichardMichael FYI: e2defrag -c /pathchỉ in 5 tệp bị phân mảnh đầu tiên được tìm thấy (thậm chí không phải là các tệp bị phân mảnh nhất). Chạy e2defrag -v /pathđể xem làm thế nào nó làm giảm số lượng phạm vi.
Tino

17

Sử dụng Gparted để chống phân mảnh hệ thống tệp của bạn

Nếu bạn có đủ dung lượng trên ổ cứng, bạn có thể sử dụng Gparted để chống phân mảnh hệ thống tệp của mình ( ext2, ext 4, nraft, v.v. ). Bạn phải khởi động từ đĩa khởi động CD / DVD / USB vì ổ đĩa bạn đang làm việc phải được ngắt kết nối. Bạn cũng phải có sẵn nhiều không gian chưa sử dụng hơn không gian đã sử dụng để làm việc này và có thể mất một lúc.

  • Khởi động từ đĩa khởi động.
  • Chạy gparted và thu nhỏ phân vùng chứa dữ liệu bạn muốn phân mảnh để chỉ vượt quá số lượng dữ liệu của bạn.
  • Đảm bảo phân vùng bạn muốn chống phân mảnh là phân vùng cuối cùng trên ổ đĩa bằng cách di chuyển nó đến cuối (bạn có thể phải tạo một phân vùng trống khác ở phía trước nếu chỉ có một phân vùng trên ổ đĩa).

Với phân vùng bạn muốn chống phân mảnh làm phân vùng cuối cùng trên ổ đĩa:

  • phát triển phân vùng bên trái của nó đến kích thước tối đa. Điều này sẽ di chuyển dữ liệu phân vùng của bạn đến cuối ổ đĩa.
  • Khi đã xong, thu nhỏ phân vùng đó trở lại kích thước trước đó.
  • Nếu bạn đã tạo một phân vùng trống để có nhiều hơn một đĩa trên đĩa, bây giờ bạn có thể xóa nó.
  • Di chuyển các phân vùng của bạn trở lại thứ tự ban đầu và lấy lại phân vùng bạn muốn phân mảnh trở lại kích thước đầy đủ của nó.

Bây giờ nó được phân mảnh.

Và tôi biết rằng bạn không quan tâm đến lý do tại sao / tại sao không chống phân mảnh Ubuntu, nhưng tôi sẽ đăng liên kết đến lý do tại sao-không phân mảnh-không cần thiết .


Sau khi thu nhỏ và di chuyển sang phải, tại sao bạn lại mọc bên trái rồi lại co lại thay vì chỉ di chuyển sang trái?
Jason C

Ngoài ra, tôi nhận thấy rằng sau bước tăng trưởng bên trái, dữ liệu thực sự được di chuyển sang trái một lần nữa (bằng chứng là dữ liệu di chuyển theo từng phần, được xác minh bằng cách kiểm tra trực tiếp thiết bị khối sau đó), vì vậy trừ khi đó là hành vi phụ thuộc vào phiên bản / hệ thống tập tin thu nhỏ + regrow có thể được bỏ qua. Nó dường như là đủ để chỉ làm: 1) thu nhỏ và di chuyển sang phải, 2) áp dụng, 3) phát triển bên trái.
Jason C

Di chuyển đơn giản phân vùng mà bạn muốn chống phân mảnh để kéo dài không nhất thiết phải di chuyển nó đến cuối HD thực sự. Phát triển phân vùng sang trái đến kích thước tối đa, đảm bảo rằng phân vùng cuối thực sự được "di chuyển" đến tận cùng của ổ cứng.
James

Di chuyển nó sang bên phải sẽ di chuyển nó đến cuối ổ cứng. Thanh phân vùng ở trên cùng của GUI gparted thực sự là một biểu diễn chính xác của bố cục dữ liệu (tốt, ít nhất là có thể nhìn thấy đối với HĐH, các thiết bị flash, ví dụ ánh xạ logic đến các vị trí vật lý ở phía bên kia của bộ điều khiển, nhưng đối với ổ cứng thông thường, nó là chính xác). Điều này có thể được xác nhận bằng cách quan sát vị trí bắt đầu mới trong bảng phân vùng. :)
Jason C

Ah, chúng tôi đang truyền thông sai. Bạn có nghĩa là sắp xếp lại phân vùng để nó là cuối cùng. Tôi có nghĩa là di chuyển phân vùng đến cuối ổ đĩa, và đó là những gì tôi nghĩ bạn cũng có ý nghĩa (bạn có thể di chuyển các phân vùng xung quanh trên ổ đĩa với sự kết hợp độc lập với việc sắp xếp lại chúng). :)
Jason C

3

Chống phân mảnh hệ thống tập tin ext4 trong linux Tôi cũng thêm câu trả lời này để chỉ ra cách chúng ta có thể tìm thấy về các công cụ Linux tích hợp khác nhau để thực hiện một số thao tác thường được thực hiện. bạn

Ngoài ra, lưu ý rằng bạn chỉ cần làm siêu người dùng nếu bạn muốn chống phân mảnh mà không ngắt kết nối.

Sử dụng lệnh apropos

e4defrag -vc /path #verbose output with count

2

Ubuntu 14.04 LTS đặt (ít nhất là ổ đĩa chính) vào phân vùng EXT4 khi được cài đặt trên một bản cài đặt sạch (không nằm trên Win-Junk).

Trong trường hợp này, nếu bạn vừa thiết lập một hệ thống mới hoặc được định dạng mới trên một hệ thống cũ và sau đó cài đặt sạch, thì theo mặc định với 14.04 LTS, bạn có Phân vùng EXT4 tại /dev/sda1.

Bây giờ, chỉ cần mở Terminal ( CTRL- ALT- T) và gõ:

sudo e4defrag -c /dev/sda1

và kiên nhẫn cho đến khi hoàn thành 'kiểm tra' và bạn nhận lại báo cáo phân mảnh.

Nếu bạn không tự tin về việc có Phân vùng EXT4 trên ổ đĩa hệ điều hành của mình, chỉ cần vào TRANG CHỦ và nhập df -T. Nhìn để xem phân vùng sda * của bạn được đặt thành gì (hãy thử trong 14.04LTS và bạn sẽ thấy EXT4 trừ khi bạn chọn loại phân vùng khác khi thiết lập ổ cứng).


Có một chút lạc đề và hầu như không thêm bất kỳ giá trị nào cho câu hỏi, đặc biệt với câu nói cuối cùng.
Fernando Silveira

Bạn có thể chống phân mảnh nhiều hơn một phân vùng bằng cùng một lệnh: sudo e4defrag / dev / sda1 / dev / sda2
ProgAndPlay

1

e2fsck -D /dev/sda1 tối ưu hóa các Thư mục bằng cách sắp xếp và giới thiệu lại chúng thường làm tăng tốc mọi thứ. Có thể không được coi là phân mảnh hệ thống tập tin đầy đủ, nhưng không phải tất cả các hệ thống đều có e4defrag.

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.