Câu trả lời:
Bạn có thể chạy fsck.ext2 một cách an toàn trên hệ thống tệp ext2 ext3 hoặc ext4 ngay cả khi nó được gắn kết như thế này
sudo fsck.ext2 -fn /dev/sdXY
Nếu ổ đĩa được gắn kết, nó sẽ xuất ra rất nhiều lỗi, nhưng đối số -n bảo nó không chạm vào ổ đĩa.
$ sudo fsck.ext2 -fn /dev/sda1
e2fsck 1.42 (29-Nov-2011)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Ubuntu_Rescue: 291595/1222992 files (0.2% non-contiguous), 1927790/4882432 blocks
sudo tune2fs -C 16000 /dev/sda1
và khởi động lại.
Nhóm hệ thống tập tin mở rộng hiện đại có sự cân bằng và liên tục được xem xét khi phân bổ tệp. Trong việc cân bằng ext3 và ext4 thường được quan tâm bằng cách áp dụng các mục nhật ký theo thứ tự và cụ thể là ext4 bằng cách phân bổ trước các mức độ của hệ thống tệp để tăng các khối liền kề. Theo đuổi mức phân mảnh thấp hơn 20% có thể không đáng để bạn dành thời gian, đặc biệt nếu hệ thống của bạn truy cập một vài tệp liên tục. Tôi khuyên bạn nên theo đuổi các chiến thuật này để tăng tốc độ đọc cho một hệ thống đĩa đơn:
tăng ram: điều này làm tăng bộ đệm hệ thống tập tin
tăng kích thước khối: bằng cách di chuyển từ 1k sang kích thước khối 4k, bạn sẽ có hiệu suất tốt hơn khi đọc các tệp gần hoặc lớn hơn kích thước khối của bạn
nếu bạn là người phạm tội, bạn có thể sắp xếp các tệp lớn và tệp nhỏ thành các phân vùng theo kích thước khối của chúng, bạn có thể chỉ muốn làm điều này nếu bạn lưu trữ ảnh, video và mã nguồn trong các thư mục riêng biệt
tăng cài đặt đọc trước của bạn bằng cách sử dụng tiện ích hdparm và / hoặc chế độ máy tính xách tay
sao lưu và khôi phục hệ thống tập tin của bạn theo kiểu tuyến tính, chẳng hạn như với tar
Nếu bạn có nhiều đĩa và đang sử dụng phân chia đột kích và / hoặc LVM, bạn cần xem xét các yếu tố khác, chẳng hạn như kích thước sọc.
Có, có một fsck
lời mời cụ thể (dưới dạng root hoặc sudo):
$ fsck /dev/sdXY
Thay thế X và Y bằng các tham số chính xác cho trường hợp của bạn (ví dụ /dev/sda1
).
KHÔNG CHẠY NÀY TRÊN MỘT PHẦN THAM GIA! Nó có thể làm hỏng nghiêm trọng hệ thống tập tin của bạn.
Để biết thêm thông tin về Linux và chống phân mảnh, xem câu trả lời của tôi ở đây .
Nếu bạn không cần phải chạy fsck một cách cụ thể, mà chỉ muốn kiểm tra sự phân mảnh ổ đĩa của bạn, tập lệnh sau (được lấy từ đây ) nên thực hiện thủ thuật:
#!/usr/bin/perl -w
#this script search for frag on a fs
use strict;
#number of files
my $files = 0;
#number of fragment
my $fragments = 0;
#number of fragmented files
my $fragfiles = 0;
#search fs for all file
open (FILES, '-|', "find '$ARGV[0]' -xdev -type f -print0");
$/ = "\0";
while (defined (my $file = <FILES>)) {
open (FRAG, "-|", "filefrag", $file);
my $res = <FRAG>;
if ($res =~ m/.*:\s+(\d+) extents? found/) {
my $fragment = $1;
$fragments += $fragment;
if ($fragment > 1) {
$fragfiles++;
}
$files++;
} else {
print ("$res : not understand for $file.\n");
}
close (FRAG);
}
close (FILES);
print ( $fragfiles / $files * 100 . "% non contiguous files, " . $fragments / $files . " average fragments.\n");
Sau đó, bạn có thể chạy nó trên thư mục (hoặc điểm gắn kết) trong câu hỏi:
$ frag_check.pl $HOME/
1.32410691664555% non contiguous files, 1.05380668862427 average fragments.
Bạn có thể sử dụng một công cụ như e2defrag để có được thông tin này.
Hãy nhớ rằng vì bản chất của các hệ thống tệp Linux, việc chống phân mảnh thường là không cần thiết.
e4defrag -c
, nhưng nó không hoạt động.
-c
tùy chọn làm đối số cuối cùng. Và ... "không hoạt động"? Lỗi bạn nhận được là gì?