Відповіді:
Ви можете безпечно запускати fsck.ext2 у файловій системі ext2 ext3 або ext4, навіть якщо вона встановлена так
sudo fsck.ext2 -fn /dev/sdXY
Якщо накопичувач встановлений, він видасть багато помилок, але аргумент -n говорить йому не торкатися диска.
$ 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
та перезавантажте.
Сучасне сімейство файлових систем ext враховує балансування та сумісність при розподілі файлів. У балансуванні ext3 та ext4 зазвичай забезпечують застосування записів журналу в порядку, а конкретно в ext4 шляхом попереднього виділення розширень файлової системи для збільшення суміжних блоків. Переслідування рівнів фрагментації нижче 20% може не коштувати вашого часу, особливо якщо ваша система неодноразово отримує доступ до декількох файлів. Я пропоную дотримуватися цих тактик для збільшення швидкості читання для однієї дискової системи:
збільшення оперативної пам'яті: це збільшує кеш файлової системи
збільшити розмір блоку: переміщуючись від 1k до розмірів блоків 4k, ви отримуєте кращу продуктивність для читання файлів, близьких або більших, ніж розмір блоку
якщо ви педантичні, ви можете організувати великі файли та невеликі файли в розділи за розміром їх блоку, ви можете це зробити, лише якщо ви зберігали фотографії, відео та вихідний код в окремих каталогах
збільшити налаштування читання вперед за допомогою утиліти hdparm та / або ноутбука
резервне копіювання та відновлення вашої файлової системи лінійним способом, наприклад, з tar
Якщо у вас є кілька дисків і ви використовуєте рейд-стриптиз та / або LVM, слід врахувати й інші фактори, наприклад розмір смуги.
Так, існує fsck
виклик (як root, або sudo):
$ fsck /dev/sdXY
Замініть X і Y правильними параметрами для вашого випадку (наприклад /dev/sda1
).
НЕ ДАЙТЕ ЦЕ НА МОНЕТОВАНІЙ ПАРТІЇ! Це може серйозно пошкодити вашу файлову систему.
Для отримання додаткової інформації про Linux та дефрагментацію дивіться мою відповідь тут .
Якщо вам не потрібно спеціально запускати fsck, а просто хочете перевірити фрагментацію вашого диска, слід виконати наступний скрипт (взятий звідси ):
#!/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");
Потім ви можете запустити його у відповідному каталозі (або точці монтажу):
$ frag_check.pl $HOME/
1.32410691664555% non contiguous files, 1.05380668862427 average fragments.
Ви можете використовувати такий інструмент, як e2defrag, щоб отримати цю інформацію.
Майте на увазі, що через характер файлових систем Linux дефрагментація зазвичай не потрібна.
e4defrag -c
, але це не вийшло.
-c
опції як останнього аргументу. І ... "не працювало"? Яку помилку ви отримаєте?