En Linux, ¿cómo verifica si un disco está fragmentado?


28

En el arranque, fsck a veces informa la frgmentación de un disco: "5.3% no contiguo".

¿Cómo puedo obtener esta información yo mismo? ¿Hay una invocación específica de fsck?

Respuestas:


27

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

¡Gracias! fsck.ext2 encontró varios errores en mi partición de inicio. Ahora me gustaría repararlo. Esto plantea la pregunta: ¿cómo reparo la partición de mi casa, que necesito mantener montada para iniciar sesión?
— Michael

3
@Michael Si su unidad está montada, ejecutar una verificación siempre reportará errores. De todos modos, si desea verificar el sistema de archivos en el próximo reinicio, ejecute esto sudo tune2fs -C 16000 /dev/sda1y reinicie.
— Rucent88

1
fsck comprueba lo que hay en el disco / almacenamiento, pero si está montado, habrá cosas en progreso (medio escrito). Es por eso que verá errores, no son errores reales, son errores falsos. Ingnóralos.
— ctrl-alt-delor

8

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.


4

Sí, hay una fsckinvocació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.

Eso es solo llamar a fsck en la partición, y como ambos sabemos, destruirá una partición montada. ¿Hay alguna manera de usar fsck en una forma de solo lectura, dime-cómo-fragmentado-mi-disco-es?
— Peltier

No que yo sepa, @Peltier. Estaba pensando que puede arrancar en un nivel de ejecución inferior, desmontar el disco relevante y ejecutar fsck. En cualquier caso, en serio, casi seguro puede ignorar la fragmentación en la mayoría de los sistemas Linux.
— terdon

@Peltier, mira mi respuesta actualizada.
— terdon

1
Sí, es lento Eso sí, tardó ~ 2-3 minutos en mi 500 GB / inicio / partición. Una vez más, recalco, la fragmentación del disco ya no es realmente un problema. Especialmente si está utilizando un sistema de archivos EXT3-4.
— terdon

1
@KentFredric ¡Ah! Si, de hecho. Ahora entiendo lo que quieres decir. Edité en consecuencia, gracias. Eliminemos los comentarios para eliminar el desorden.
— terdon

0

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.


¿Te importaría detallar tu respuesta? Intenté obtener esa información e4defrag -c, pero no funcionó.
— Peltier

@Peltier Apunte a un punto moint Ext3 o Ext4 después de la -copción como último argumento. ¿Y ... "no funcionó"? ¿Cuál es el error que obtienes?
— gertvdijk

Dice "Hecho". Sin embargo, no lo apunté directamente al dispositivo, sino al punto de montaje. Estoy intentando nuevamente con el dispositivo.
— Peltier

Tenga en cuenta que lleva mucho tiempo, mientras que fsck es muy rápido.
— Peltier

Solo lo intenté nuevamente con el dispositivo, solo dice "Listo".
— Peltier
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.