4 votes

Comment démarrer les badblocks à une partie spécifiée du disque ?

En essayant de dd les derniers blocs d'un disque dur Maxtor IDE de 200 Go, je rencontre l'erreur suivante :

$ dd if=/dev/zero of=/dev/sdc bs=4M status=progress
203901894656 bytes (204 GB, 190 GiB) copied, 7283.07 s, 28.0 MB/s
dd: error writing '/dev/sdc': Permission denied
48621+0 records in
48620+0 records out
208223076351 bytes (208 GB, 194 GiB) copied, 8379.27 s, 24.8 MB/s 

Cette erreur a persisté même après avoir essayé de reprendre dd con seek=48620 où 48620 est le nombre de blocs à sauter. Pour déterminer si cette erreur est due à des secteurs défectueux, j'aimerais exécuter la commande suivante badblocks de la même manière, d'où dd échoué.

Cela se traduirait par un badblocks comme suit :

badblocks -svw -b 4000000 -c 500000 -p 1 -o /cygdrive/b/badblocks.txt /dev/sdc 199148543 48620

...où -b 4000000 équivaut à la taille de bloc de 4M que j'ai utilisée lors de la création de l'entreprise. dd de l'entraînement, et 48620 est le first_block qui spécifie le premier bloc pour badblocks pour commencer.

Toutefois, cela entraîne l'une des deux erreurs suivantes. Soit l'erreur non fatale...

badblocks: Invalid argument during seekrs)

...apparaît tout au long de l'exécution de la commande, ou une seule erreur fatale y met fin :

Segmentation fault (core dumped)

Le site erreur ci-dessus persiste également même lorsque -c est fixé à une valeur plus saine comme 2000 .


En outre, quand j'abandonne l'idée d'essayer de courir badblocks à l'endroit exact où dd et de tenter d'augmenter simplement le first_block à un nombre suffisamment élevé :

badblocks -svw -b 4000000 -c 1000000 -p 1 -o /cygdrive/b/users/hashim/desktop/maxtorbadblocks.txt /dev/sdc 199148543 12345678 

...de nombreuses occurrences de l'erreur suivante apparaissent sans que la commande soit interrompue :

badblocks: Invalid argument during seekrs)  again get several get the same error.

Comment puis-je commencer badblocks à un endroit précis du disque, et ainsi gagner énormément de temps dans le temps d'exécution ?

3voto

agc Points 617

Une demi réponse, (pour l'instant), quant à por qué qui échoue.

Les interrupteurs de cette ligne sont incorrects :

badblocks -svw -b 4000000 -c 500000 -p 1 \
          -o /cygdrive/b/badblocks.txt /dev/sdc 199148543 48620

Le site -b est pour la taille du bloc, (combien d'octets dans un bloc), qui est généralement un multiple de 512 En général, c'est 1024 , 2048 ou 4096 . Une valeur de 4,000,000 n'est pas un multiple de 512 et est plus grand que n'importe quel disque dur actuel.

Le site -c est le nombre de blocs à tester à la fois, qui multiplié par la valeur transmise à -b donne le nombre d'octets qui seront lus à la fois -- donc -b 4000000 -c 500000 indique à l'ordinateur de lire 2,000,000,000,000 (deux trillions) d'octets à la fois.

Pire encore, l'argument 199148543 dit à badblocks que le système de fichiers contient au moins ce nombre de blocs, et puisque les blocs sont définis par le fichier -b interrupteur, badblocks estime que le système de fichiers contient au moins 796,594,172,000,000 octets, (ou 796TB (près d'un pétaoctet).

Puisque le disque entier est 200GB , badblocks s'arrête et imprime un message d'erreur.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X