Có một huyền thoại phổ biến là các ổ đĩa Linux không bao giờ cần chống phân mảnh. Trong hầu hết các trường hợp, điều này là đúng, do phần lớn các hệ thống tệp nhật ký tuyệt vời mà Linux sử dụng (ext2, 3, 4, btrfs, v.v.) để xử lý hệ thống tệp. Tuy nhiên, trong một số trường hợp cụ thể, sự phân mảnh vẫn có thể xảy ra. Nếu điều đó xảy ra với bạn, giải pháp là may mắn rất đơn giản.

Phân mảnh là gì?

Sự phân mảnh xảy ra khi một hệ thống tập tin cập nhật các tập tin theo từng phần nhỏ, nhưng những đoạn này không tạo thành một toàn bộ liền kề và nằm rải rác xung quanh đĩa. Điều này đặc biệt đúng đối với các hệ thống tệp FAT và FAT32. Nó đã được phần nào giảm nhẹ trong NTFS và hầu như không bao giờ xảy ra trong Linux (extX). Đây là lý do tại sao.

Trong các hệ thống tập tin như FAT và FAT32, các tập tin được viết ngay cạnh nhau trên đĩa. Không còn chỗ để phát triển hoặc cập nhật tệp:

NTFS để lại nhiều chỗ hơn giữa các tập tin, do đó, có chỗ để phát triển. Vì khoảng cách giữa các phần bị giới hạn, sự phân mảnh sẽ vẫn xảy ra theo thời gian.

Hệ thống tập tin ghi nhật ký của Linux có cách tiếp cận khác. Thay vì đặt các tập tin bên cạnh nhau, mỗi tập tin nằm rải rác trên đĩa, để lại một lượng lớn không gian trống giữa mỗi tập tin. Có đủ chỗ để cập nhật tập tin / tăng trưởng và phân mảnh hiếm khi xảy ra.

Ngoài ra, nếu phân mảnh xảy ra, hầu hết các hệ thống tập tin Linux sẽ cố gắng trộn các tập tin và các khối xung quanh để làm cho chúng tiếp giáp một lần nữa.

Phân mảnh đĩa trên Linux

Đĩa phân mảnh hiếm khi xảy ra trong Linux trừ khi bạn có một ổ đĩa cứng nhỏ, hoặc nó đang hết dung lượng. Một số trường hợp phân mảnh có thể bao gồm:

  • nếu bạn chỉnh sửa tệp video lớn hoặc tệp hình ảnh thô và dung lượng ổ đĩa bị giới hạn
  • nếu bạn sử dụng phần cứng cũ hơn như một máy tính xách tay cũ và bạn có một ổ cứng nhỏ
  • nếu ổ đĩa cứng của bạn bắt đầu lấp đầy (trên 85% được sử dụng)
  • nếu bạn có nhiều phân vùng nhỏ làm lộn xộn thư mục chính của bạn

Giải pháp tốt nhất là mua một ổ cứng lớn hơn. Nếu không thể, đây là nơi việc phân mảnh trở nên hữu ích.

Cách kiểm tra phân mảnh

Lệnh fsck sẽ làm điều này cho bạn - tức là, nếu bạn có cơ hội chạy nó từ một CD trực tiếp, với tất cả các phân vùng bị ảnh hưởng chưa được gắn kết.

Điều này là rất quan trọng: RUNNING FSCK TRÊN MỘT PHẦN MOUNTED CÓ THỂ VÀ S SE DỄ DÀNG DAMAGE DỮ LIỆU VÀ DISK CỦA BẠN.

Bạn đa được cảnh bao. Trước khi tiếp tục, hãy sao lưu toàn bộ hệ thống.

Disclaimer : Tác giả của bài viết này và Make Tech Easier không chịu trách nhiệm về bất kỳ thiệt hại nào đối với tệp, dữ liệu, hệ thống hoặc bất kỳ thiệt hại nào khác do hành động của bạn gây ra sau khi làm theo lời khuyên này. Bạn có thể tự chịu rủi ro. Nếu bạn tiếp tục, bạn chấp nhận và thừa nhận điều này.

Bạn chỉ nên khởi động vào một phiên làm việc trực tiếp (như đĩa cài đặt, đĩa CD cứu hộ hệ thống, v.v.) và chạy fsck trên phân vùng UNMOUNTED của bạn. Để kiểm tra mọi sự cố, hãy chạy lệnh sau với quyền root:

 fsck -fn [/ path / to / your / partition] 

Bạn có thể kiểm tra xem [/path/to/your/partition] là gì bằng cách chạy

 sudo fdisk -l 

Có một cách để chạy fsck (tương đối) một cách an toàn trên một phân vùng gắn kết - đó là bằng cách sử dụng chuyển đổi -n . Điều này sẽ dẫn đến việc kiểm tra hệ thống tệp chỉ đọc mà không cần chạm vào bất kỳ thứ gì. Tất nhiên, không có sự đảm bảo an toàn ở đây, và bạn chỉ nên tiến hành sau khi tạo bản sao lưu. Trên hệ thống tệp ext2, đang chạy

 sudo fsck.ext2 -fn / path / đến / your / partition 

sẽ dẫn đến nhiều đầu ra - hầu hết trong số đó là thông báo lỗi do thực tế là phân vùng được gắn kết. Cuối cùng nó sẽ cung cấp cho bạn thông tin liên quan đến phân mảnh.

Nếu phân mảnh của bạn vượt quá 20%, bạn nên tiến hành chống phân mảnh hệ thống của mình.

Cách dễ dàng chống phân mảnh hệ thống tập tin Linux

Tất cả những gì bạn cần làm là sao lưu TẤT CẢ các tệp và dữ liệu của bạn vào ổ đĩa khác (bằng cách sao chép chúng theo cách thủ công), định dạng phân vùng và sao chép các tệp của bạn (không sử dụng chương trình sao lưu cho điều này). Hệ thống tập tin journalling sẽ xử lý chúng như là các tập tin mới và đặt chúng gọn gàng vào đĩa mà không bị phân mảnh.

Để sao lưu các tệp của bạn, hãy chạy

 cp -afv [/ path / to / source / partition] / * [/ đường dẫn / đến / đích / thư mục] 

Tâm trí asterix (*); nó quan trọng.

Lưu ý : Nói chung là đồng ý rằng để sao chép các tệp lớn hoặc một lượng lớn dữ liệu, lệnh dd có thể là tốt nhất. Đây là một hoạt động cấp độ rất thấp và sao chép tất cả mọi thứ "như là", bao gồm cả không gian trống rỗng, và thậm chí cả rác còn sót lại. Đây không phải là những gì chúng tôi muốn, vì vậy nó có lẽ là tốt hơn để sử dụng cp .

Bây giờ bạn chỉ cần xóa tất cả các tệp gốc.

 sudo rm -rf [/ path / đến / source / partition] / * 

Tùy chọn: bạn có thể điền vào khoảng trống bằng số không. Bạn có thể đạt được điều này với định dạng là tốt, nhưng nếu ví dụ bạn không sao chép toàn bộ phân vùng, chỉ các tệp lớn (có nhiều khả năng gây ra phân mảnh nhất), điều này có thể không phải là một tùy chọn.

 sudo dd nếu = / dev / zero = [/ path / to / source / partition] /temp-zero.txt 

Đợi nó kết thúc. Bạn cũng có thể theo dõi tiến độ với pv.

 sudo apt-get cài đặt pv sudo pv -tpreb | của = [/ path / to / source / partition] /temp-zero.txt 

Khi nó được thực hiện, chỉ cần xóa các tập tin tạm thời.

 sudo rm [/path/to/source/partition]/temp-zero.txt 

Sau khi bạn đã xóa không gian trống (hoặc chỉ bỏ qua bước đó hoàn toàn), sao chép các tệp của bạn trở lại, đảo ngược lệnh cp đầu tiên:

 cp -afv [/ path / to / original / destination / thư mục] / * [/ path / to / original / source / partition] 

Sử dụng e4defrag

Nếu bạn thích cách tiếp cận đơn giản hơn, hãy cài đặt e2fsprogs,

 sudo apt-get cài đặt e2fsprogs 

và chạy e4defrag làm gốc trên phân vùng bị ảnh hưởng. Nếu bạn không muốn hoặc không thể tháo gắn kết phân vùng, bạn có thể sử dụng điểm gắn kết của nó thay vì đường dẫn của nó. Để chống phân mảnh toàn bộ hệ thống của bạn, hãy chạy

 sudo e4defrag / 

Nó không được bảo đảm để thành công trong khi được gắn kết (bạn cũng nên ngừng sử dụng hệ thống của bạn trong khi nó đang chạy), nhưng nó dễ dàng hơn nhiều so với việc sao chép tất cả các tập tin đi và ngược lại.

Phần kết luận

Phân mảnh hiếm khi là một vấn đề trên một hệ thống Linux do việc xử lý dữ liệu hiệu quả của hệ thống tập tin rác. Nếu bạn chạy vào phân mảnh do bất kỳ trường hợp nào, có những cách đơn giản để tái phân bổ không gian đĩa của bạn như sao chép tất cả các tệp đi và quay lại hoặc sử dụng e4defrag . Tuy nhiên, điều quan trọng là giữ dữ liệu của bạn an toàn, vì vậy trước khi thử bất kỳ thao tác nào có thể ảnh hưởng đến tất cả hoặc hầu hết các tệp của bạn, hãy đảm bảo bạn tạo bản sao lưu chỉ ở bên an toàn.