Câu hỏi Cách chống phân mảnh hệ thống tệp ext4


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


53
2017-11-23 19:52


gốc




Các câu trả lời:


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

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

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 được root để xem chi tiết):

sudo e4defrag -c /path/to/myfiles

Dưới đây là 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 nó sẽ cho bạn biết rằng không cần phân mảnh, nhưng nếu bạn muốn thực hiện nó, 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 tin 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 riêng của họ, không cần phải là người chủ 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.

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


54
2018-05-08 08:55



e4defrag -c không trả về gì ngoài done. Điều đó có nghĩa là không có sự phân mảnh? - hrzhu
Xin lỗi, tôi quên đề cập rằng bạn cần phải chạy e4defrag -c với sudo hoặc là người chủ để 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 gốc /? - Pavel Sayekat
@PavelSayekat bạn chỉ cần root (tức là sử dụng sudo) chạy e4defrag /và không cần phải làm gì đặc biệt. e4defrag sẽ kiểm tra mọi tệp ở đó, 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í 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 chí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 của tôi mà tôi sử dụng hàng ngày e4defrag báo cáo rằng chỉ có 5 tệp phân mảnh, tất cả trong cấu hình Chromium và thư mục bộ nhớ cache. - gerlos
Điều này chỉ chống phân mảnh các phần mở rộng bên trong các tệp, chứ không phải các tệp trong số các tệp khác. Tức 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ý cực kỳ khác nhau trên đĩa, nó sẽ vẫn chậm khi sử dụng các tệp này cùng một lúc sau khi chạy công cụ này. Có cách nào để sắp xếp lại các tệp trên đĩa hay "chống phân mảnh không gian trống" vì đôi khi nó được gọi không? - fuzzyTew


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


28
2017-11-23 20:13



Đ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 mức -O, không phải là mặc định. - dobey
Anh chàng trả lời về phân mảnh, nó có thể được posible với e4defrag, các cuestion không specity một bên ngoài journaling hay không, anh ta không xứng đáng một -1. - Felipe Alcacibar
@dobey Ubuntu 12.04 (.3) LTS chứa extent bên trong ext4 stanza 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 tin được kết nối, bạn tốt nhất nên tự kiểm tra hệ thống tập tin: tune2fs -l </dev/with/ext4> | grep extent (hoặc nhìn vào dòng "tính năng hệ thống tập tin" trong đầu ra tune2fs hoàn chỉnh). Tâm trí bạn, tôi chỉ cần chạy e4defrag -c ... trên hệ thống tệp 1TB đầy đủ 100% với extentvà chỉ có 5 tệp phân mảnh và "điểm phân mảnh" 0. YMMV. - Richard Michael
@RichardMichael FYI: e2defrag -c /path chỉ in 5 tập tin phân mảnh đầu tiên được tìm thấy (không phải là những tệp bị phân mảnh nhiều nhất). Chạy e2defrag -v /path để xem cách nó giảm số lượng phạm vi. - Tino


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 Đã phân đoạn để chống phân mảnh hệ thống tệp của bạn (ext2, ext 4, nfts, 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ó nhiều không gian không sử dụng có sẵn hơn không gian được 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 có chứa dữ liệu bạn muốn chống phân mảnh chỉ hơn số lượng dữ liệu của bạn.
  • Hãy chắc chắn rằng 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ó nếu chỉ có một phân vùng trên ổ đĩa).

Với phân vùng bạn muốn phân mảnh là 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.
  • Sau khi hoàn tất, thu nhỏ phân vùng đó về kích thước trước đó.
  • Nếu bạn đã tạo một phân vùng trống để có nhiều phân vùng trên đĩa, bây giờ bạn có thể xóa nó.
  • Di chuyển phân vùng của bạn trở lại thứ tự ban đầu và tạo lại phân vùng bạn muốn chống phân mảnh trở lại kích thước đầy đủ của nó.

Nó bây giờ đã được phân mảnh.

Và tôi biết 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 tới tại sao-là-chống phân mảnh-không cần thiết dù sao.


17
2017-11-23 21:34



Sau khi co lại và di chuyển sang phải, tại sao bạn lại phát triển lại sau đó co lại một lần nữa 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 phát triển, dữ liệu đã được di chuyển sang trái một lần nữa (được chứng minh bằng dữ liệu chuyển động được gparted, xác minh bằng kiểm tra trực tiếp thiết bị khối sau đó), trừ khi đó là hành vi phụ thuộc vào phiên bản / hệ thống tập tin shrink + regrow có thể được bỏ qua. Nó xuất hiện 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
Việc di chuyển phân vùng đơn giản mà bạn muốn chống phân mảnh đến cuối cùng không nhất thiết phải di chuyển phân vùng đó đến đầu HD thực tế. Việc phát triển phân vùng ở bên trái sang 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 cuối ổ đĩa cứng. - James
Di chuyển nó sang bên phải làm di chuyển nó vào cuối ổ đĩa cứng. Thanh phân vùng ở trên cùng của GUI được phân tách thực sự là một biểu diễn chính xác về bố trí dữ liệu (tốt, ít nhất là hiển thị với hệ điều hành, các thiết bị flash ví dụ như bản đồ hợp lý đế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 một điển hình HDD, nó là chính xác). Điều này có thể được xác minh 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 nói sai. Bạn có nghĩa là sắp xếp lại phân vùng để nó là cuối cùng. y tôi la di chuyển phân vùng đến cuối của ổ đĩa, và đó là những gì tôi nghĩ bạn có nghĩa là tốt (bạn có thể di chuyển phân vùng xung quanh trên ổ đĩa với gparted độc lập của sắp xếp lại chúng). :) - Jason C


Ubuntu 14.04 LTS không đặt (ít nhất là ổ đĩa chính) vào phân vùng EXT4 khi được cài đặt trên một cài đặt sạch (không nằm trên đỉnh của 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 định dạng mới trên một hệ thống cũ và sau đó đã làm một cài đặt sạch, sau đó theo mặc định với 14.04 LTS, bạn có một phân vùng EXT4 tại /dev/sda1.

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

sudo e4defrag -c /dev/sda1

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

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, chỉ cần vào TRANG CHỦ và nhập df -T. Hãy xem xem những phân vùng sda * của bạn được đặt thành (thử điều này trong 14.04LTS, và bạn sẽ thấy EXT4 trừ khi bạn chọn một kiểu phân vùng khác khi thiết lập ổ đĩa cứng).


2
2018-03-06 19:52



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


Defragmenting ext4 file system in linux Tôi đang thêm câu trả lời này cũng cho thấy cách chúng ta có thể tìm thấy các công cụ Linux tích hợp khác nhau để thực hiện một số hoạt động 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 cần ngắt kết nối.

Sử dụng lệnh apropos

e4defrag -vc /path #verbose output with count

1
2018-02-21 05:16