Odpowiedzi:
Możesz bezpiecznie uruchomić fsck.ext2 na systemie plików ext2 ext3 lub ext4, nawet jeśli jest tak zamontowany
sudo fsck.ext2 -fn /dev/sdXY
Jeśli dysk jest zamontowany, wyświetli wiele błędów, ale argument -n mówi mu, aby nie dotykał dysku.
$ 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
i uruchom ponownie.
Nowoczesna rodzina systemów plików ext bierze pod uwagę równoważenie i ciągłość przy przydzielaniu plików. W ext3 i ext4 równoważenie odbywa się na ogół poprzez stosowanie pozycji dziennika w kolejności, a szczególnie w ext4, przez wstępne przydzielanie rozszerzeń systemu plików w celu zwiększenia ciągłych bloków. Ściganie poziomów fragmentacji niższych niż 20% może nie być warte twojego czasu, szczególnie jeśli twój system stale uzyskuje dostęp do kilku plików. Proponuję zastosować taktykę zwiększania prędkości odczytu dla systemu z jednym dyskiem:
wzrost pamięci RAM: zwiększa pamięć podręczną systemu plików
zwiększ rozmiar bloku: przechodząc z rozmiaru bloku 1k na rozmiar 4k, uzyskujesz lepszą wydajność odczytów dla plików bliskich lub większych niż rozmiar bloku
jeśli jesteś pedantyczny, możesz organizować duże pliki i małe pliki w partycje według rozmiaru bloku, możesz to zrobić tylko wtedy, gdy przechowujesz zdjęcia, filmy i kod źródłowy w osobnych katalogach
zwiększ swoje ustawienie odczytu z wyprzedzeniem za pomocą narzędzia hdparm i / lub trybu laptopa
kopie zapasowe i przywracanie systemu plików w sposób liniowy, na przykład za pomocą tar
Jeśli masz wiele dysków i używasz RAID Striping i / lub LVM, musisz wziąć pod uwagę inne czynniki, takie jak rozmiar paska.
Tak, istnieje specyficzne fsck
wywołanie (jako root lub sudo):
$ fsck /dev/sdXY
Zamień X i Y na odpowiednie parametry dla twojego przypadku (np /dev/sda1
.).
NIE URUCHAMIAJ TEGO NA URZĄDZENIU ZAMONTOWANYM! Może to spowodować poważne uszkodzenie systemu plików.
Aby uzyskać więcej informacji o systemie Linux i defragmentacji, zobacz moją odpowiedź tutaj .
Jeśli nie musisz specjalnie uruchamiać fsck, ale po prostu chcesz sprawdzić fragmentację dysku, poniższy skrypt (pobrany stąd ) powinien załatwić sprawę:
#!/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");
Następnie możesz uruchomić go w danym katalogu (lub punkcie instalacji):
$ frag_check.pl $HOME/
1.32410691664555% non contiguous files, 1.05380668862427 average fragments.
Aby uzyskać te informacje, możesz użyć narzędzia takiego jak e2defrag.
Pamiętaj, że ze względu na naturę systemów plików Linux defragmentacja jest zwykle niepotrzebna.
e4defrag -c
, ale to nie zadziałało.
-c
opcją jako ostatni argument. I… „nie działał”? Jaki masz błąd?