Respuestas:
Puede ejecutar fsck.ext2 de forma segura en un sistema de archivos ext2 ext3 o ext4 incluso si está montado de esta manera
sudo fsck.ext2 -fn /dev/sdXY
Si la unidad está montada, generará muchos errores, pero el argumento -n le dice que no toque la unidad.
$ 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
y reinicie.
La moderna familia de sistemas de archivos ext tiene en cuenta el equilibrio y la contigüidad al asignar archivos. En ext3 y ext4, el equilibrio generalmente se realiza aplicando entradas de diario en orden, y en ext4 específicamente, preasignando extensiones del sistema de archivos para aumentar los bloques contiguos. Es posible que no valga la pena perseguir niveles de fragmentación inferiores al 20%, especialmente si su sistema accede a algunos archivos repetidamente. Sugiero seguir estas tácticas para aumentar la velocidad de lectura para un solo sistema de disco:
aumentar ram: esto aumenta el caché del sistema de archivos
aumentar el tamaño del bloque: al pasar de 1k a 4k tamaños de bloque, obtendrá un mejor rendimiento en las lecturas de archivos cercanos o mayores que el tamaño de su bloque
si eres pedante, puedes organizar archivos grandes y pequeños en particiones por su tamaño de bloque, es posible que solo quieras hacer esto si almacenaste fotos, videos y código fuente en directorios separados
aumente su configuración de lectura anticipada usando hdparm y / o la utilidad de modo portátil
copia de seguridad y restaurar su sistema de archivos de forma lineal, como con tar
Si tiene varios discos y está utilizando bandas de banda y / o LVM, debe considerar otros factores, como el tamaño de la banda.
Sí, hay una fsck
invocación específica (como root o sudo):
$ fsck /dev/sdXY
Reemplace X e Y con los parámetros correctos para su caso (por ejemplo /dev/sda1
).
¡NO EJECUTE ESTO EN UNA PARTICIÓN MONTADA! Puede dañar seriamente su sistema de archivos.
Para obtener más información sobre Linux y la desfragmentación, consulte mi respuesta aquí .
Si no necesita ejecutar específicamente fsck, pero solo desea verificar la fragmentación de su unidad, el siguiente script (tomado de aquí ) debería ser el truco:
#!/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");
Luego puede ejecutarlo en el directorio (o punto de montaje) en cuestión:
$ frag_check.pl $HOME/
1.32410691664555% non contiguous files, 1.05380668862427 average fragments.
Puede usar una herramienta como e2defrag para obtener esta información.
Tenga en cuenta que, debido a la naturaleza de los sistemas de archivos de Linux, la desfragmentación suele ser innecesaria.
e4defrag -c
, pero no funcionó.
-c
opción como último argumento. ¿Y ... "no funcionó"? ¿Cuál es el error que obtienes?