Bad superblock on /dev/mapper/sda2

Bonjour,
Je n’arrive plus à monter une partition de mon disque. La dernière opération que j’ai faite dessus est une sauvegarde qui a rempli cette partition à 100% de sa capacité, puis plus tard, j’ai arrêté et éteint la machine. (sauf erreur, j’ai normalement fermé la partition).
Maintenant, je la décrypte avec cryptsetup, mais au montage j’ai ce message d’erreur :
mount /dev/mapper/sda2 /mnt/sda2
mount: wrong fs type, bad option, bad superblock on /dev/mapper/sda2,
missing codepage or helper program, or other error

In some cases useful info is found in syslog - try
dmesg | tail or so.
J’ai tenté de copier cette partition sur un autre disque avec dd mais il s’arrêtte au bout de 5 secondes.
J’aimerai récupérer les données, vous pouvez m’aider ?
Merci.

Qu’affichent blkid et lsblk ?
Quels sont les derniers messages du noyau affichés par dmesg juste après la tentative de montage ?

Avec une erreur ?

Merci,
root@MK808-deb:~# blkid
/dev/mtdblock2: UUID=“2835dc0b-65c9-4bde-9465-17b8704ee643” TYPE=“swap”
/dev/mtdblock3: UUID=“3013ef51-dc46-4143-aaaa-88a01b94ac32” TYPE=“ext4”
/dev/mmcblk0: PTTYPE=“dos”
/dev/mmcblk0p1: LABEL=“linuxroot” UUID=“17da2a1f-6bbe-4636-9511-f4239c70b537” TYPE=“ext4”
/dev/sda1: UUID=“e8be907a-7c9d-48f5-b699-0d5e9aadb6eb” TYPE=“crypto_LUKS” PARTUUID=“a4f7236a-01”
/dev/sda2: UUID=“87390ab2-97f6-4251-9f42-5e3fd010058d” TYPE=“crypto_LUKS” PARTUUID="a4f7236a-02"
/dev/sda3: UUID=“f1d7a567-e449-43d3-a941-ac7495fab330” TYPE=“crypto_LUKS” PARTUUID=“a4f7236a-03”
/dev/sda4: UUID=“678644b7-aa5c-4af8-b098-58966cf9b548” TYPE=“crypto_LUKS” PARTUUID=“a4f7236a-04”
/dev/sdb1: UUID=“de516c33-5c28-469f-a769-6134ec4449be” TYPE=“crypto_LUKS” PARTUUID=“516e5282-01”
/dev/sdb2: UUID=“dcd46ab6-f644-4eac-b9b6-426b87b6e3ff” TYPE=“crypto_LUKS” PARTUUID=“516e5282-02”
/dev/sdb3: UUID=“f3ec7d61-a30d-4a6f-8bb4-96ad35a3c522” TYPE=“crypto_LUKS” PARTUUID=“516e5282-03”

Message d’erreur DD :
dd: erreur de lecture /dev/sda2: Input/output error
4096+0enregistrements lus
4096+0enregistrements crits
2097152octets (2,1 MB) copis, 27,2572s, 76,9 kB/s (j’ai supprimé les “é”)

root@MK808-deb:~# lsblk )
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
mtdblock0 31:0 0 16M 0 disk
mtdblock1 31:1 0 16M 0 disk
mtdblock2 31:2 0 528M 0 disk [SWAP]
mtdblock3 31:3 0 6,9G 0 disk
mmcblk0 179:0 0 7,4G 0 disk
-mmcblk0p1 179:1 0 7,4G 0 part / sda 8:0 0 931,5G 0 disk |-sda1 8:1 0 200G 0 part |-sda2 8:2 0 400G 0 part |-sda2 254:0 0 400G 0 crypt
|-sda3 8:3 0 200G 0 part
-sda4 8:4 0 131,5G 0 part sdb 8:16 0 1,8T 0 disk |-sdb1 8:17 0 600G 0 part |-sdb2 8:18 0 600G 0 part-sdb3 8:19 0 663G 0 part

un fsck sur le système de fichier ne résoudra pas le problème ?

root@MK808-deb:~# fsck /dev/mapper/sda2    
fsck from util-linux 2.25.2
e2fsck 1.42.12 (29-Aug-2014)
fsck.ext2: La tentative de lecture d’un bloc depuis le syst�me de fichiers a produit une lecture tronqu�e lors de la tentative d’ouverture de /dev/mapper/sda2
Peut-�tre cette partition est-elle de taille z�ro�?

Pour PascalHambourg, les noms des partitions n’est pas toujours cohérent car j’ai du rajouter et/ou retirer un disque pour faire des manips.

Je ne vois pas de périphérique /dev/mapper/sda2.

PS : pourrais-tu appliquer un format texte préformaté aux sorties des commandes afin de préserver leur mise en forme ?

Je fige la config et recommence tout. Pour le problème des caractères accentués, je n’ai pas réussi à le résoudre. Je copie le texte dans Leafpad avant de le poster ici.

Il y a 3 disques, sda, sdb et sdc. sda possède 3 partitions vides qui peuvent être disponibles pour les manips.
sdb et sdc contiennent des données. La partition dont je souhaite récupérer les données est sdb2. (Toutes les partitions sont cryptées).

root@MK808-deb:~# blkid       
/dev/mtdblock2: UUID=“2835dc0b-65c9-4bde-9465-17b8704ee643” TYPE=“swap”
/dev/mtdblock3: UUID=“3013ef51-dc46-4143-aaaa-88a01b94ac32” TYPE=“ext4”
/dev/mmcblk0p1: LABEL=“linuxroot” UUID=“17da2a1f-6bbe-4636-9511-f4239c70b537” TYPE=“ext4”
/dev/sda1: UUID=“9f342389-921f-42d4-a2f3-95f287615d49” TYPE=“crypto_LUKS” PARTUUID=“a4f7236a-01”
/dev/sda2: UUID=“d1cbc545-88f9-4fe5-9b9d-b320b78367ea” TYPE=“crypto_LUKS” PARTUUID=“a4f7236a-02”
/dev/sda3: UUID=“b9520389-83e7-4c11-81cd-6ee094aeeb10” TYPE=“crypto_LUKS” PARTUUID=“a4f7236a-03”
/dev/sdb1: UUID=“e8be907a-7c9d-48f5-b699-0d5e9aadb6eb” TYPE=“crypto_LUKS” PARTUUID=“a4f7236a-01”
/dev/sdb2: UUID=“87390ab2-97f6-4251-9f42-5e3fd010058d” TYPE=“crypto_LUKS” PARTUUID=“a4f7236a-02”
/dev/sdb3: UUID=“f1d7a567-e449-43d3-a941-ac7495fab330” TYPE=“crypto_LUKS” PARTUUID=“a4f7236a-03”
/dev/sdb4: UUID=“678644b7-aa5c-4af8-b098-58966cf9b548” TYPE=“crypto_LUKS” PARTUUID=“a4f7236a-04”
/dev/sdc1: UUID=“de516c33-5c28-469f-a769-6134ec4449be” TYPE=“crypto_LUKS” PARTUUID=“516e5282-01”
/dev/sdc2: UUID=“dcd46ab6-f644-4eac-b9b6-426b87b6e3ff” TYPE=“crypto_LUKS” PARTUUID=“516e5282-02”
/dev/sdc3: UUID=“f3ec7d61-a30d-4a6f-8bb4-96ad35a3c522” TYPE=“crypto_LUKS” PARTUUID=“516e5282-03”
/dev/mmcblk0: PTTYPE=“dos”

root@MK808-deb:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
mtdblock0 31:0 0 16M 0 disk
mtdblock1 31:1 0 16M 0 disk
mtdblock2 31:2 0 528M 0 disk [SWAP]
mtdblock3 31:3 0 6,9G 0 disk
mmcblk0 179:0 0 7,4G 0 disk
-mmcblk0p1 179:1 0 7,4G 0 part / sda 8:0 0 931,5G 0 disk |-sda1 8:1 0 220G 0 part |-sda2 8:2 0 490G 0 part-sda3 8:3 0 221,5G 0 part
sdb 8:16 0 931,5G 0 disk
|-sdb1 8:17 0 200G 0 part
|-sdb2 8:18 0 400G 0 part
| -sdb2 254:0 0 400G 0 crypt |-sdb3 8:19 0 200G 0 part-sdb4 8:20 0 131,5G 0 part
sdc 8:32 0 1,8T 0 disk
|-sdc1 8:33 0 600G 0 part
|-sdc2 8:34 0 600G 0 part
`-sdc3 8:35 0 663G 0 part

le fichier mountsdb2 qui suit contient :
cryptsetup luksOpen /dev/sdb2 sdb2
mount /dev/mapper/sdb2 /mnt/sdb2

root@MK808-deb:~# ./mountsdb2
Saisissez la phrase secr�te pour /dev/sdb2�:  
mount: wrong fs type, bad option, bad superblock on /dev/mapper/sdb2,
missing codepage or helper program, or other error

In some cases useful info is found in syslog - try
dmesg | tail or so.

root@MK808-deb:~# dmesg | tail
[ 1609.966826] Buffer I/O error on device dm-0, logical block 0
[ 1610.081971] DWC_OTG: hc_xfer_timeout: timeout on channel 0
[ 1610.094413] DWC_OTG: start_hcchar_val 0x00d89200
[ 1612.835303] sd 1:0:0:0: [sdb] Unhandled sense code
[ 1612.847557] sd 1:0:0:0: [sdb] Result: hostbyte=0x10 driverbyte=0x08
[ 1612.860130] sd 1:0:0:0: [sdb] Sense Key : 0x3 [current]  
[ 1612.872517] sd 1:0:0:0: [sdb] ASC=0x11 ASCQ=0x0
[ 1612.884738] sd 1:0:0:0: [sdb] CDB: cdb[0]=0x28: 28 00 19 00 18 02 00 00 02 00
[ 1612.897307] end_request: critical target error, dev sdb, sector 419436546
[ 1612.909894] EXT4-fs (dm-0): unable to read superblock
(j’ai effacé tous les “&,#,160,;”)
root@MK808-deb:~#

root@MK808-deb:~# dd if=/dev/sdb2 | pv -s 2G| dd of=/dev/sda2
dd: erreur de lecture ��/dev/sdb2��: Input/output error ] 0% ETA 1:42:18
2MO 0:00:06 [ 320kB/s] [> ] 0%
4096+0�enregistrements lus
4096+0�enregistrements �crits
2097152�octets (2,1 MB) copi�s, 6,4102�s, 327 kB/s
4096+0�enregistrements lus
4096+0�enregistrements �crits
2097152�octets (2,1 MB) copi�s, 6,49213�s, 323 kB/s
root@MK808-deb:~#

Ce n’est toujours pas un format de texte préformaté.

C’est une erreur du disque. Je n’en connais pas la raison. Il faudrait peut-être remonter plus haut que 10 lignes dans les les messages.

Je ne sais pas comment faire pour le texte…
ça peut être le secteur n° 419436546 qui est défectueux ? On peut l’exclure de la copie avec dd ?

Sinon voici quelques lignes de debug au dessus :

[   11.684339] mmc_rescan_try_freq..1678..  ===== Initialize SDIO successfully. [mmc1]
[   11.752703] RK29 Watchdog Timer, (c) 2011 Rockchip Electronics
[   11.902114] usb 1-1.1: new high speed USB device number 6 using usb20_host
[   11.924972] CFGP2P-ERROR) wl_cfgp2p_supported : wl p2p error -23
[   12.022639] scsi 1:0:0:0: Direct-Access        Mass  Storage Device        PQ: 0 ANSI: 0
[   12.027840] usb 1-1.1: New USB device found, idVendor=1058, idProduct=1021
[   12.032859] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[   12.039278] sd 1:0:0:0: [sdb] 1953525166 512-byte logical blocks: (1.00 TB/931 GiB)
[   12.046235] usb 1-1.1: Product: Ext HDD 1021
[   12.050974] sd 1:0:0:0: [sdb] Write Protect is off
[   12.056756] sd 1:0:0:0: [sdb] Mode Sense: 03 00 00 00
[   12.061351] usb 1-1.1: Manufacturer: Western Digital
[   12.061363] usb 1-1.1: SerialNumber: 5743415A4134313834353736
[   12.070361] sd 1:0:0:0: [sdb] No Caching mode page present
[   12.076915] sd 1:0:0:0: [sdb] Assuming drive cache: write through
[   12.082795] scsi2 : usb-storage 1-1.1:1.0
[   12.089617] sd 1:0:0:0: [sdb] No Caching mode page present
[   12.094679] sd 1:0:0:0: [sdb] Assuming drive cache: write through
[   12.114251]  sdb: sdb1 sdb2 sdb3 sdb4
[   12.120728] sd 1:0:0:0: [sdb] No Caching mode page present
[   12.125734] sd 1:0:0:0: [sdb] Assuming drive cache: write through
[   12.130492] sd 1:0:0:0: [sdb] Attached SCSI disk
[   12.307912] eth1: rxqlen 0 --> 10
[   12.312305] eth1: ax88772a - Link status is: 0
[   12.316387] eth1: rxqlen 10 --> 20
[   12.320647] eth1: rxqlen 20 --> 30
[   12.324816] eth1: rxqlen 30 --> 40
[   12.328893] eth1: rxqlen 40 --> 44
[   12.333389] ADDRCONF(NETDEV_UP): eth1: link is not ready
[   12.437202] eth1: ax88772a - Link status is: 1
[   12.444512] ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
[   13.085033] scsi 2:0:0:0: Direct-Access     WD       Ext HDD 1021     2021 PQ: 0 ANSI: 4
[   13.099836] sd 2:0:0:0: [sdc] 3907024896 512-byte logical blocks: (2.00 TB/1.81 TiB)
[   13.117011] sd 2:0:0:0: [sdc] Write Protect is off
[   13.121217] sd 2:0:0:0: [sdc] Mode Sense: 17 00 10 08
[   13.129212] sd 2:0:0:0: [sdc] No Caching mode page present
[   13.133208] sd 2:0:0:0: [sdc] Assuming drive cache: write through
[   13.142353] sd 2:0:0:0: [sdc] No Caching mode page present
[   13.146467] sd 2:0:0:0: [sdc] Assuming drive cache: write through
[   13.167034]  sdc: sdc1 sdc2 sdc3
[   13.177609] sd 2:0:0:0: [sdc] No Caching mode page present
[   13.184762] sd 2:0:0:0: [sdc] Assuming drive cache: write through
[   13.191185] sd 2:0:0:0: [sdc] Attached SCSI disk
[   22.807703] [DHD] DHD-MON: dhd_add_monitor enter, if name: mon.eth0
[   22.813592] [DHD] DHD-MON: dhd_add_monitor net device returned: 0xeb278800
[   22.818080] [DHD] DHD-MON: dhd_add_monitor found a matched net device, name eth0
[   22.823403] [DHD] DHD-MON: dhd_mon_if_open enter
[   22.828766] [DHD] DHD-MON: dhd_mon_if_set_multicast_list enter, if name: mon.eth0, matched if name eth0
[   22.833938] [DHD] DHD-MON: dhd_mon_if_set_multicast_list enter, if name: mon.eth0, matched if name eth0
[   22.872182] net_ratelimit: 2 callbacks suppressed
[   22.876347] [DHD] 
[   22.876349] Dongle Host Driver, version 5.90.125.69
[   22.876353] Compiled in drivers/net/wireless/bcmdhd on Apr 22 2017 at 18:47:17
[   22.887139] CFGP2P-ERROR) wl_cfgp2p_supported : wl p2p error -23
[   22.940988] [DHD] DHD-MON: dhd_mon_if_subif_start_xmit enter
[   22.941011] [DHD] DHD-MON: dhd_mon_if_subif_start_xmit radiotap len (should be 14): 14
[   23.032478] 802.1Q VLAN Support v1.8
[   23.074273] [DHD] wl_host_event: Invalid ifidx 0 for wl0
[   23.439913] rk_serial rk_serial.0: baud:9600
[   23.445479] serial.0 timeout:1000000
[   23.453703] rk_serial rk_serial.0: baud:9600
[   23.458691] serial.0 timeout:1000000
[   23.479938] rk_serial rk_serial.0: baud:115200
[   23.479964] serial.0 timeout:1000000
[   69.422845] sd 1:0:0:0: [sdb] Unhandled sense code
[   69.423137] sd 1:0:0:0: [sdb]  Result: hostbyte=0x10 driverbyte=0x08
[   69.423520] sd 1:0:0:0: [sdb]  Sense Key : 0x3 [current] 
[   69.423901] sd 1:0:0:0: [sdb]  ASC=0x11 ASCQ=0x0
[   69.424216] sd 1:0:0:0: [sdb] CDB: cdb[0]=0x28: 28 00 19 00 18 00 00 00 08 00
[   69.424976] end_request: critical target error, dev sdb, sector 419436544
[   69.425349] Buffer I/O error on device dm-0, logical block 0
[   72.242599] sd 1:0:0:0: [sdb] Unhandled sense code
[   72.242890] sd 1:0:0:0: [sdb]  Result: hostbyte=0x10 driverbyte=0x08
[   72.243269] sd 1:0:0:0: [sdb]  Sense Key : 0x3 [current] 
[   72.243650] sd 1:0:0:0: [sdb]  ASC=0x11 ASCQ=0x0
[   72.243966] sd 1:0:0:0: [sdb] CDB: cdb[0]=0x28: 28 00 19 00 18 00 00 00 08 00
[   72.244727] end_request: critical target error, dev sdb, sector 419436544
[   72.245104] Buffer I/O error on device dm-0, logical block 0
[   72.841963] DWC_OTG: hc_xfer_timeout: timeout on channel 14
[   72.842319] DWC_OTG: 	start_hcchar_val 0x00d89200
[   75.095612] sd 1:0:0:0: [sdb] Unhandled sense code
[   75.095706] sd 1:0:0:0: [sdb]  Result: hostbyte=0x10 driverbyte=0x08
[   75.095827] sd 1:0:0:0: [sdb]  Sense Key : 0x3 [current] 
[   75.095938] sd 1:0:0:0: [sdb]  ASC=0x11 ASCQ=0x0
[   75.096039] sd 1:0:0:0: [sdb] CDB: cdb[0]=0x28: 28 00 19 00 18 02 00 00 02 00
[   75.096230] end_request: critical target error, dev sdb, sector 419436546
[   75.101939] EXT4-fs (dm-0): unable to read superblock

Tu peux essayer avec dd_rescue, ddrescue ou dcfldd. Mais s’il contient des données, et apparemment c’est le cas puisqu’il est lu pendant la tentative de montage, ça risque de ne pas suffire.

Merci. Je me documente sur ces outils, je prépare un disque cible rempli de zero…

Je viens de regarder les logs que tu as ajoutés. C’est un disque USB ?
Et la machine, qu’est-ce que c’est ? Ça ne ressemble pas à un PC standard.

Oui c’est un disque USB. Non, ce n’est pas un PC standard.
Pour un petit résumé : A la base c’était une clé HDMI livrée avec Android puis j’ai remplacé Android par linux pour s’en servir comme un petit serveur de (stockage, point d’accés wifi, proxy et lecteur de médias et quelques petits trucs).

Coté config, Il y a dedans un vieux SoC (System On Chip), une mémoire flash NAND que j’ai repartitionné pour mettre le noyau et le swap. Le rootfs est chargé à partir d’une carte SD.
1 Eth+2USB 2.0.
Là tout de suite, Il y a 3 disques durs USB. sda est crypté et vide, je m’en sert comme disque de destination pour les manip de récupération de la partition de sdb2 .

J’ai installé l’un des outils que tu mas conseillé, voici ce qui s’affiche à l’écran :
Le copié collé est difficile à faire car ddrescue rafraîchit un peu vite l’écran…Alors, je colle une capture d’écran
image

Est-ce un disque SATA dans un boîtier USB ou un disque avec interface USB native ?
Est-il branché directement ou via un hub ? Alimenté par le port USB ou sa propre source d’alimentation ?
As-tu essayé d’y accéder en le branchant sur une autre machine ?

sdb et sdc sont des disques durs 3"5 SATA, mis dans des boîtiers qui intègrent des convertisseurs SATA/USB 2.0. Chacun des disques est alimenté par un adaptateur (5V/3A). Certes, je n’ai pas compté sur les 500mA que délivre un port USB 2.0, pour alimenter plusieurs disques. (Rien que les courants d’appel des disques au démarrage, feraient écrouler le vcc en sortie des ports USB).

La config fonctionnait normalement depuis 3 ans, je sauvegarde ou récupère régulièrement des données sur sdb2, sans jamais de problèmes. Par contre, la dernière sauvegarde à saturé sdb2 avant que le programme n’ait fini le travail. Je ne me souviens pas si j’ai fermé sdb2 avec (cryptsetup luksClose) avant d’éteindre la machine. Je ne sais pas si il y a une panne matérielle ou juste des erreurs logiques sur cette partition.

Ceci n’est pas une erreur logique liée au contenu d’une partition :

[   69.422845] sd 1:0:0:0: [sdb] Unhandled sense code
[   69.423137] sd 1:0:0:0: [sdb]  Result: hostbyte=0x10 driverbyte=0x08
[   69.423520] sd 1:0:0:0: [sdb]  Sense Key : 0x3 [current] 
[   69.423901] sd 1:0:0:0: [sdb]  ASC=0x11 ASCQ=0x0
[   69.424216] sd 1:0:0:0: [sdb] CDB: cdb[0]=0x28: 28 00 19 00 18 00 00 00 08 00
[   69.424976] end_request: critical target error, dev sdb, sector 419436544

Je ne peux pas affirmer que c’est matériel, mais en tout cas ça vient du pilote usb-storage. Le convertisseur SATA/USB ne transmet peut-être pas la nature précise de l’erreur.

Si possible il faudrait sortir le disque de son boîtier USB et le brancher directement en SATA sur un ordinateur pour voir si l’erreur se produit aussi, et dans ce cas examiner les logs du noyau à la recherche d’informations plus précises.

Edit : et utiliser smartctl pour voir les attributs SMART et les logs d’erreurs. Ça peut passer en USB, mais pas avec tous les convertisseurs.

Comme je ne l’ai pas fait, je précise que sdb1,sdb3 et sdb4 fonctionnent normalement. La panne est directement liée à une seule partition.
Je n’ai pas de PC avec port SATA interne ou externe. j’ai un PC portable mais il ne m’aidera pas à faire la manip que tu me proposes de faire. J’ai regardé “key 0x3”, si parfois le pilote est précis dans ce qu’il transmet comme erreur :

Root Cause

A sense key of 0x3 is defined by the SCSI standard as "Medium error" and relates to a hardware defect in the block device:

Sense Key
3h MEDIUM ERROR. Indicates that the command terminated with a non-recovered
error condition that was probably caused by a flaw in the medium or an error
in the recorded data. This sense key may also be returned if the target is
unable to distinguish between a flaw in the medium and a specific hardware
failure (sense key 4h).

J’essayerai smartctl dès que ddrecue termine, il est à 385/400Go depuis hier soir

“Medium error”, cela correspond à un ou plusieurs secteurs défectueux. Cette explication est vraisemblable puisque l’erreur semble localisée, et smartctl devrait le confirmer s’il fonctionne. Cela peut éventuellement se corriger en écrivant dans ces secteurs, ce qui aura pour conséquence la destruction irréversible des données présentes antérieurement. Si c’est un superbloc, il en existe des copies dans d’autres secteurs.