web-dev-qa-db-fra.com

Récupérer une clé USB corrompue: visible dans lsblk et lsusb, nulle part ailleurs

J'ai un lecteur USB crypté par LUKS qui fonctionnait correctement jusqu'à il y a quelques jours. Après avoir démarré mon système et essayé d'accéder au lecteur un jour, il m'a demandé mon mot de passe de déchiffrement encore et encore, mais il n'a pas été monté correctement. J'ai essayé de redémarrer, mais la situation est encore pire: le disque est visible avec les commandes lsusb et lsblk sur /dev/sdc. Toutefois, si j'essaie d'utiliser dd, fdisk, fsck, ou gparted pour re-partitionner le disque, mon terminal se bloque (gparted affiche son message "analyse" pour toujours).

Je ne me soucie pas des données sur le disque, car elles sont sauvegardées ailleurs. Cependant, je voudrais créer une nouvelle table de partition et continuer à utiliser le lecteur. dmesg la sortie est la suivante:

[1813.162291] INFO: tâche blkid: 20469 bloquée pendant plus de 120 secondes. 
 [1813.162292] Altéré: P OE 4.15.0-29-generic # 31-Ubuntu 
 [1813.162293] "echo 0 >/proc/sys/kernel/hung_task_timeout_secs "désactive ce message. 
 [1813.162294] blkid D 0 20469 4989 0x00000004 
 [1813.162296] Trace d'appel: 
 [1813.162298] __schedule + 0x291/0x8a0 
 [1813.162300]? __update_load_avg_blocked_se.isra.37 + 0xd1/0x150 
 [1813.162301]? get_work_pool + 0x40/0x40 
 [1813.162303] agenda + 0x2c/0x80 
 [1813.162304] schedule_timeout + 0x1cf/0x350 
 [1813.162306]? ttwu_do_activate + 0x77/0x80 
 [1813.162308]? get_work_pool + 0x40/0x40 
 [1813.162309] wait_for_completion + 0xba/0x140 
 [1813.162310]? wake_up_q + 0x80/​​0x80 
 [1813.162311] flush_work + 0x126/0x1e0 
 [1813.162313]? worker_detach_from_pool + 0xa0/0xa0 
 [1813.162314] __cancel_work_timer + 0x131/0x1b0 
 [1813.162316]? exact_lock + 0x11/0x20 
 [1813.162318] cancel_delayed_work_sync + 0x13/0x20 
 [1813.162320] disk_block_events + 0x78/0x80 
 [1813.162321] __blkdev_get + 0x69/0x4c0 
 1813.162323]? __follow_mount_rcu.isra.26 + 0x6e/0xf0 
 [1813.162324] blkdev_get + 0x129/0x320 
 [1813.162326] blkdev_open + 0x95/0xf0 
. [1813.162328]. ____.] [1813.162329]? __inode_permission + 0x5b/0x160 
 [1813.162330]? bd_acquire + 0xd0/0xd0 
 [1813.162332] vfs_open + 0x4f/0x80 
 [1813.162333] path_openat + 0x66e/0x1770 
 [1813.162335]? nom_fichier_lookup + 0xf2/0x190 
 [1813.162337] do_filp_open + 0x9b/0x110 
 [1813.162338]? __check_object_size + 0xaf/0x1b0 
 [1813.162341]? __alloc_fd + 0x46/0x170 
 [1813.162342] do_sys_open + 0x1bb/0x2c0 
 [1813.162344]? do_sys_open + 0x1bb/0x2c0 
 [1813.162345]? _cond_resched + 0x19/0x40 
 [1813.162347] SyS_openat + 0x14/0x20 
 [1813.162349] do_syscall_64 + 0x73/0x130 
 [1813.162350] do_syscall_64 + 0x73/0x130 
 [1813.162350] 18Coordonne ] RDX: 0000000000080000 RSI: 0000557f5049a650 RDI: 00000000ff9c 
 1813.162356] R13: 00000000db611429 R14: 0000000000000000 R15: 00007f25388754c8 
 [1933.994414] INFO: tâche scsi_eh_3: 20306 bloquée pendant plus de 120 secondes. 
 [1933.994419] Indéterminée: generic # 31-Ubuntu 
 [1933.994421] "echo 0>/proc/sys/kernel/hung_task_timeout_secs" désactive ce message. 
 [1933.994423] scsi_eh_3 D 0 20306 2 0x80000000 
 [1933.994429] Trace d'appel: 
 [1933.994441] __schedule + 0x291/0x8a0 
 [1933.994444] schedule + 0x2c/0x80 
 [1933.994446] schedule_preempt_disabled + 0xe/0x10 
 [1933.994447] __mutex_lock.isra.2 + 0x18c/0x4d0 
 [1933.994449]? __switch_to_asm + 0x40/0x70 
 [1933.994451]? __switch_to_asm + 0x40/0x70 
 [1933.994453]? __switch_to_asm + 0x34/0x70 
 [1933.994455] __mutex_lock_slowpath + 0x13/0x20 
 [1933.994456]? __mutex_lock_slowpath + 0x13/0x20 
 [1933.994458] mutex_lock + 0x2f/0x40 
 [1933.994463] device_reset + 0x22/0x50 [usb_storage] 
. .] [1933.994469]? __pm_runtime_resume + 0x5b/0x80 
 [1933.994471]? scsi_try_target_reset + 0x90/0x90 
 [1933.994473] scsi_error_handler + 0x4c3/0x5b0 
 [1933.994476] kthread + 0x121/0x140 
 [1933.994479]? scsi_eh_get_sense + 0x200/0x200 
 [1933.994481]? kthread_create_worker_on_cpu + 0x70/0x70 
 [1933.994483] ret_from_fork + 0x35/0x40 
 [2047.504998] perf: l'interruption prenait trop de temps (2540> 2 500), réduisant le nombre de kernel.perf_event_max_sample_s de 80

Toute aide est appréciée

2
hellkat_

Soit la connexion est fragile, soit le lecteur a été endommagé et les données ne peuvent être ni lues ni écrites. Si le débranchement et le rebranchement de la clé USB ne fonctionnent pas, il est probable que votre périphérique USB ne fonctionne plus. L'erreur de tâche bloquée que vous voyez est provoquée par l'ordinateur qui a tenté de lire à partir du périphérique, a échoué et a essayé encore et encore. Pendant ce temps, il indique au processus qui a demandé les données d'attendre, car il s'attend à ce qu'une erreur de lecture soit temporaire et se résolve d'elle-même. Si cette attente dure assez longtemps, le système d'exploitation considère que la tâche est "suspendue" et renvoie une erreur, car le lecteur est réellement défectueux ou endommagé.

La raison pour laquelle le périphérique apparaît toujours en tant que périphérique est que le microcontrôleur interne du lecteur fonctionne toujours. Il s'annonce correctement sur l'ordinateur et indique correctement sa taille et d'autres paramètres, mais dès qu'il tente d'accéder aux données, il échoue.

S'agit-il d'un lecteur flash USB ou d'un disque dur USB externe? Si c'est le dernier cas, vous pourrez peut-être tester la santé de l'appareil en utilisant smartmontools . Ce package peut être utilisé pour indiquer au lecteur d'effectuer un test automatique pour rechercher les problèmes éventuels. Cela ne fonctionnera pas si le périphérique est un lecteur flash.

1
forest