J'ai un disque dur qui semble avoir développé une sorte de problème matériel dans le journal. Cela empêche le lecteur d'être chargé. L'exécution des mount -r -t ext4 /dev/sda5 /mnt/root
résultats dans le crachat du noyau suivant:
[ 1420.671055] ata1.00: exception Emask 0x0 SAct 0x1000000 SErr 0x0 action 0x0
[ 1420.673862] ata1.00: irq_stat 0x40000008
[ 1420.676600] ata1.00: failed command: READ FPDMA QUEUED
[ 1420.679326] ata1.00: cmd 60/40:c0:a8:9d:0a/00:00:08:00:00/40 tag 24 ncq 32768 in
[ 1420.679326] res 41/40:40:e1:9d:0a/00:00:08:00:00/00 Emask 0x409 (media error) <F>
[ 1420.685014] ata1.00: status: { DRDY ERR }
[ 1420.687858] ata1.00: error: { UNC }
[ 1420.761064] ata1.00: configured for UDMA/133
[ 1420.763863] sd 0:0:0:0: >[sda] Unhandled sense code
[ 1420.766653] sd 0:0:0:0: >[sda]
[ 1420.769364] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[ 1420.772104] sd 0:0:0:0: >[sda]
[ 1420.774780] Sense Key : Medium Error [current] [descriptor]
[ 1420.777491] Descriptor sense data with sense descriptors (in hex):
[ 1420.780249] 72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00
[ 1420.783175] 08 0a 9d e1
[ 1420.785972] sd 0:0:0:0: >[sda]
[ 1420.788730] Add. Sense: Unrecovered read error - auto reallocate failed
[ 1420.791545] sd 0:0:0:0: >[sda] CDB:
[ 1420.794331] Read(10): 28 00 08 0a 9d a8 00 00 40 00
[ 1420.797242] end_request: I/O error, dev sda, sector 134913505
[ 1420.800072] ata1: EH complete
[ 1420.800077] JBD2: Failed to read block at offset 2748
[ 1420.812529] JBD2: recovery failed
[ 1420.815275] EXT4-fs (sda5): error loading journal
Je comprends à peine ce que cela signifie, mais cela ressemble à un problème matériel empêchant le chargement du journal. Est-il possible de contourner cela? Le journal peut-il, par exemple, être déplacé vers un décalage différent tout en laissant le reste du lecteur presque intact? Je n'ai aucune intention de continuer à utiliser le lecteur; Je veux juste le monter pour pouvoir copier quelques fichiers cruciaux.
hard-disk
data-recovery
ext4
JSB ձոգչ
la source
la source
fsck
le système de fichiers?Réponses:
Pour le monter en lecture seule, sans relire le journal afin que vous puissiez accéder à vos fichiers (vous perdrez probablement quelques modifications qui n'ont pas encore été validées dans le fs normal):
mount -o ro,noload
...la source
Jetez un oeil à la sortie de
smartctl -a /dev/sda
. Si ce n'est pas un problème de câble, le disque est peut-être en train de mourir. Si vous n'avez pas de sauvegarde récente, vous devriez essayer de copier le contenu du périphérique de bloc (sans montage) à l'aide de dd_rescue ou dd avec les options respectives.Après cela, vous pouvez essayer
hdparm --write-sector
(toujours drôle ces options "TRÈS DANGEREUSES ...).Une autre option consiste à créer un appareil DM qui contourne les secteurs défectueux. Bien sûr, cela ne récupère pas leur contenu. Vous devez convertir le décalage sda (134913505) en décalage sda5 (connaître le numéro du premier secteur de sda5 et le soustraire). Supposons que le décalage sda5 soit 12345. Vous créez un périphérique de bloc dont le secteur 12345 n'est pas mappé sur sda5 mais ailleurs (par exemple, périphérique de boucle). La définition de périphérique (pour dmsetup create) ressemble à ceci:
Vous n'aurez pas la chance qu'il n'y ait qu'un seul secteur défectueux. Vous pouvez en cartographier autant que vous le souhaitez (ce qui permet au périphérique DM de fournir des zéros pour ces secteurs mais en écriture), mais le calcul des décalages dans loop0 peut devenir amusant. Une autre option serait d'utiliser un périphérique virtuel de la même taille pour le remappage et d'utiliser soit l'allocation dynamique ou un instantané (avec une petite taille de bloc, 1 secteur par exemple) d'un périphérique cible zéro.
Modifier 1
Le périphérique de boucle ne doit pas pointer vers un fichier sur le même disque (sda), bien sûr.
la source
--write-sector
est loin de "dangereux". En fait, c'est en fait l' idéal option pour utiliser chaque fois que certains corrompus simples secteurs vous empêchent d'obtenir une continue l' image du secteur brut (dd
renflouerait avec « Device erreur E / S », certains hdds vais même demander de cycle d'alimentation de la machine ( !) pour être à nouveau reconnu par l'OS). Cependant, vous devez connaître les scripts shell si vous souhaitez les utiliser--write-sector
pour les plages de secteurs .Vous pouvez démarrer en mode de récupération, dans lequel le FS sera monté en lecture seule, et copier vos trucs.
la source