Je ne vous le fais pas dire. J’ai recommencé en prenant le soin d’enregistrer la sortie de commandes passées dans un fichier, pour ensuite les copier sur mon portable et coller ici les bonnes feuilles de ce feuilleton
Avant même d’avoir lu votre message, j’ai lancé smartctl avec l’option --test=short
sur tout le disque d’1 T, au bout d’un peu plus de deux minutes, j’ai constaté que ce « selftest » s’était terminé sans erreur, et portait le numéro 7
J’ai lancé
badblocks -o /tmp/sda1_bblocks /dev/sda1
et j’ai été trahi par ma mauvaise vision en croyant que le fichier généré étatit vide. Voilà une sortie qui le confirme
ls -lst /tmp
4 -rw-r--r-- 1 root root 8 Feb 12 16:03 sda1_bblocks
4 drwx------ 3 root root 4096 Feb 12 15:59 cdebconf-terminal.oMH3Xq
4 -rw------- 1 root root 569 Feb 11 07:33 tmp.fQdCzBXcLN
4 -rw------- 1 root root 560 Feb 11 07:03 tmp.qlOgimoJqm
4 -rw------- 1 root root 490 Feb 10 07:33 tmp.8qXpekK2Ut
4 -rw------- 1 root root 560 Feb 10 07:03 tmp.5N8xk6D9ze
4 -rw------- 1 root root 560 Feb 9 06:33 tmp.uOyGVFJLpS
4 -rw------- 1 root root 560 Feb 8 06:03 tmp.bNfmOkVJxq
4 drwx------ 3 1000 1000 4096 Feb 7 06:35 Temp-e72f7936-f948-43f8-9139-8261fd973225
en fait 8 octets donc.
Voici comment j’ai procédé pour obtenir les messages d’erreurs :
sur _tty1 c’est un processus assez long pour arriver au montage de la racine
sur tty2 j’ouvre une console, je lance des commandes du genre
date >> /tmp/ouaoua.txt
dmesg | tail >> /tmp/ouaouatxt
sur tty4 c’est la console de sortie
Voici la fin de cette première séquence
[ 806.480011] sd 0:0:0:0: [sda] tag#10 CDB: Read(10) 28 00 00 00 08 00 00 01 00 00
[ 806.480017] blk_update_request: I/O error, dev sda, sector 2048 op 0x0:(READ) flags 0x0 phys_seg 2 prio class 0
[ 806.480060] ata1: EH complete
[ 845.369702] EXT4-fs (dm-0): recovery complete
[ 845.378444] EXT4-fs (dm-0): mounted filesystem with ordered data mode. Opts: (null)
Après le montage du répertoire racine, je peux (sur tty1) ouvrir un shell dans le système à réparer, y lancer le montage de /home, activer le swap, etc .
Mais je dois récupérer le résultat de la première séquence, donc (dans tty2)
copier cp /tmp/ouaoua.txt /target/tmp/
La suite se fait systématiquement dans tty1.
df -hTx tmpfs
Sys. de fichiers Type Taille Utilisé Dispo Uti% Monté sur
/dev/ouaoua_vg/root_lv ext4 28G 7,5G 19G 29% /
devtmpfs devtmpfs 1,9G 0 1,9G 0% /dev
/dev/mapper/ouaoua_vg-home_lv xfs 47G 4,8G 42G 11% /home
fdisk -l /dev/sda
Disque /dev/sda : 931,51 GiB, 1000204886016 octets, 1953525168 secteurs
Modèle de disque : TOSHIBA MQ01ABD1
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 4096 octets
taille d'E/S (minimale / optimale) : 4096 octets / 4096 octets
Type d'étiquette de disque : gpt
Identifiant de disque : 0DFB4264-91EE-4048-A0F1-2544B2D63495
Périphérique Début Fin Secteurs Taille Type
/dev/sda1 2048 206847 204800 100M Système EFI
/dev/sda2 206848 2050047 1843200 900M Environnement de récupérati
on Windows
/dev/sda3 2050048 2312191 262144 128M Réservé Microsoft
/dev/sda4 2312192 783718399 781406208 372,6G Données de base Microsoft
/dev/sda5 783718400 1922045951 1138327552 542,8G Données de base Microsoft
/dev/sda6 1922045952 1953523711 31477760 15G Environnement de récupérati
on Windows
/dev/sda1: ERROR: cannot read `/dev/sda1' (Input/output error)
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931,5G 0 disk
├─sda1 8:1 0 100M 0 part
├─sda2 8:2 0 900M 0 part
├─sda3 8:3 0 128M 0 part
├─sda4 8:4 0 372,6G 0 part
├─sda5 8:5 0 542,8G 0 part
│ ├─ouaoua_vg-root_lv 253:0 0 27,9G 0 lvm /
│ ├─ouaoua_vg-swap 253:1 0 5,6G 0 lvm [SWAP]
│ └─ouaoua_vg-home_lv 253:2 0 46,6G 0 lvm /home
└─sda6 8:6 0 15G 0 part
sdb 8:16 1 1,9G 0 disk
├─sdb1 8:17 1 378M 0 part
└─sdb2 8:18 1 2,5M 0 part
sr0 11:0 1 1024M 0 rom
C’est là que ça coince Pour sda1 c’est Inpu-Output error et 16 lignes d’injures dans la sortie de dmesg (voir ci-dessous)
file -s /dev/sda2
/dev/sda2: DOS/MBR boot sector, code offset 0x52+2, OEM-ID "NTFS ", sectors/cluster 8, Media descriptor 0xf8, sectors/track 63, heads 255, hidden sectors 206848, dos < 4.0 BootSector (0x80), FAT (1Y bit by descriptor); NTFS, sectors/track 63, sectors 1843199, $MFT start cluster 76800, $MFTMirror start cluster 2, bytes/RecordSegment 2^(-1*246), clusters/index block 1, serial number 0f89ccf6b9ccf22cc; contains bootstrap BOOTMGR
file -s /dev/sda3
/dev/sda3: data
file -s /dev/sda4
/dev/sda4: DOS/MBR boot sector, code offset 0x52+2, OEM-ID "NTFS ", sectors/cluster 8, Media descriptor 0xf8, sectors/track 63, heads 255, hidden sectors 2312192, dos < 4.0 BootSector (0x80), FAT (1Y bit by descriptor); NTFS, sectors/track 63, sectors 781406207, $MFT start cluster 786432, $MFTMirror start cluster 2, bytes/RecordSegment 2^(-1*246), clusters/index block 1, serial number 09616d2c616d2a711; contains bootstrap BOOTMGR
file -s /dev/sda5
/dev/sda5: LVM2 PV (Linux Logical Volume Manager), UUID: Oq3p4f-MQfz-rUPm-4mbS-F45A-SAap-xiQvbO, size: 582823706624
Toutes ces informations étaient dans le fichier ouaoua.txt que j’ai copié avec scp sur ma machine. J’ai aussi copié la sortie de dmesg
.
En parcourant le contenu des 1997 lignes de dmesggtxt on voit une répétition de blocs de ligne avec « exception » sur la première ligne et « EH complete » sur la dernière.
[ 263.848077] ata1.00: exception Emask 0x0 SAct 0x178000 SErr 0x40000 action 0x0
[ 263.848082] ata1.00: irq_stat 0x40000008
[ 263.848086] ata1: SError: { CommWake }
[ 263.848091] ata1.00: failed command: READ FPDMA QUEUED
[ 263.848101] ata1.00: cmd 60/00:78:00:08:00/01:00:00:00:00/40 tag 15 ncq dma 131072 in
res 41/40:00:00:08:00/00:01:00:00:00/40 Emask 0x409 (media error) <F>
[ 263.848104] ata1.00: status: { DRDY ERR }
[ 263.848107] ata1.00: error: { UNC }
[ 263.851412] ata1.00: configured for UDMA/100
[ 263.851470] sd 0:0:0:0: [sda] tag#15 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE cmd_age=3s
[ 263.851476] sd 0:0:0:0: [sda] tag#15 Sense Key : Medium Error [current]
[ 263.851481] sd 0:0:0:0: [sda] tag#15 Add. Sense: Unrecovered read error - auto reallocate failed
[ 263.851486] sd 0:0:0:0: [sda] tag#15 CDB: Read(10) 28 00 00 00 08 00 00 01 00 00
[ 263.851493] blk_update_request: I/O error, dev sda, sector 2048 op 0x0:(READ) flags 0x0 phys_seg 5 prio class 0
[ 263.851527] ata1: EH complete
[ 267.804128] ata1.00: exception Emask 0x0 SAct 0x800000 SErr 0x40000 action 0x0
Je lance
fgrep -A15 exception dmesg.txt > /tmp/err_execption
fp2@debpacha:~ $ wc /tmp/err_execption dmesg.txt
1941 19573 136117 /tmp/err_execption
1997 20114 140478 dmesg.txt
3938 39687 276595 total
fp2@debpacha:~ $
On a donc 121 fois les 16 lignes
En utilisant une méthode différente
fp2@debpacha:~ $ fgrep -B 13 'ata1: EH complete' dmesg.txt > /tmp/par14
fp2@debpacha:~ $ wc /tmp/par14
1876 17843 123501 /tmp/par14
fp2@debpacha:~ $
on arrive à un chiffre rond de 134 blocs de 14 lignes, chaque bloc se terminant par « ta1: EH complete »
Bref, on a une erreur irrécupérable dès qu’on veut lire le secteur 2048 au début de la partition sda1, pour lire le super-bloc par exemple
Je suis tenté de faire
dd if=/dev/zero of=/dev/sda1 bs=1M count=2
mkdosfs /dev/sda1
dosfslabel -i /dev/sda1
# copier le volume-id dans la ligne de fstab UUID=.. /boot/efi ...
# faire un fdisk pour le type de partition ?
mount /boot/efi
Qu’en pensez-vous ? Si besoin je peux écraser /dev/sda3 pour la partition EFI
Cordialement,
Regards,
Mit freundlichen Grüßen,
مع تحياتي الخالصة
F. Petitjean
Ingénieur civil du Génie Maritime.
« Je préfère le vin d’ici à l’au-delà »
Pierre Dac