Восстанавливаем убитые жесткие диски, флешки и данные с них в Linux

Как «вылечить» поврежденный USB-накопитель в Linux?

Флэшки есть у всех. Маленькие, удобные – что может быть лучше для сохранения данных. Но бывает, что флэшки повреждаются или вообще отказываются работать. Если вы пользователь Linux и подобное случилось с вами, исправить все будет несложно.

Примечание:
описанные методы работают не только для USB-накопителей, но и для жестких дисков тоже.

Интересно
: Как отформатировать защищенную от записи флешку. Читаем здесь.

Содержание

Удаление бэд-блоков с USB-накопитель с помощью fsck

Простой способ починить флэш-накопитель (и вообще любой накопитель) – инструмент fsck. Он удаляет поврежденные сектора, или «бэд-блоки», из-за которых чаще всего и возникают проблемы с чтением. Чтобы удалить поврежденные сектора с флэшки, откройте терминальное окно и введите следующие команды.

Сначала нужно узнать метки дисков. Сделайте это, введя команду lsblk. Появится список всех подключенных накопителей.

Примечание:
по команде lsblk появляется список всех дисков, не только USB-накопителей. Будьте внимательны, чтобы не перепутать флэшку с жестким диском.

Чтобы удалить бэд-блок, запустите команду fsck либо в отдельном разделе (например, /dev/sdc1), либо на всем диске (например, /dev/sdc). По окончании процесса ваша флэшка будет снова полностью работоспособна в Linux.

sudo
fsck /
dev/
sdc1

Примечание:
здесь предполагается, что метка флэш-накопителя — /dev/sdc (или /dev/sdc1). У разных пользователей метки могут быть другими.

Полная очистка

Иногда USB-накопитель совершенно не читается, и спасти что-то с него уже не получится. Все, что остается в этой ситуации – очистить все данные и начать сначала. Лучший инструмент для этого – dd.

Возьмите метку накопителя, которую вы нашли прежде командой lsblk, и дальше действуйте по предыдущему алгоритму (/dev/sdc1 – раздел, /dev/sdc – весь диск):

sudo
dd
if=/
dev/
zero of=/
dev/
sdc

Читайте также:
  Восстанавливаем удаленные текстовые сообщения на Android-телефоне

Создание новой файловой системы

Очистка флэшки (или любого другого накопителя) делает все записанные данные на ней бесполезными. Это значит, что нужно создать новый раздел данных. Выберите желаемую файловую систему и введите соответствующую команду:

Fat32

sudo
mkfs.msdos -f 32 /
dev/
sdc1

Ext4

sudo
mkfs.ext4 -f /
dev/
sdc1

NTFS

sudo
mkfs.ntfs -f /
dev/
sdc1

Заключение

USB-флэшки – полезные девайсы. С ними легко переносить данные с одного компьютера на другой вне зависимости от установленной ОС. Вот почему важно знать, что делать, если флэшка вдруг стала недоступной. К счастью у Linux есть мощные инструменты, способные легко «вылечить» флэш-накопитель.

Free Download WordPress Themes
Premium WordPress Themes Download
Download WordPress Themes
Free Download WordPress Themes
online free course
download coolpad firmware
Download Premium WordPress Themes Free

Как восстановить запоротую флешку? — General — Форум

Форум — General

Был вчера в стоматологии, выгружали КТ снимки с флешки, а после повторного включения в USB, у них в компе выдавало, мол, надо флешку отформатировать.

Ну ладно, сказал я, дома разберусь.

Пришел домой и о ужас, флешка не читается.

Вот, что выдает fdisk -l

~$ sudo fdisk -l [sudo] password for lexxus:   Disk /dev/sda: 931,5 GiB, 1000204886016 bytes, 1953525168 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xd488d871  Device     Boot Start        End    Sectors   Size Id Type /dev/sda1  *     2048 1953521663 1953519616 931,5G  7 HPFS/NTFS/exFAT  Disk /dev/sdb: 931,5 GiB, 1000204886016 bytes, 1953525168 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x000d314d  Device     Boot      Start        End    Sectors   Size Id Type /dev/sdb1  *          2048 1761032191 1761030144 839,7G 83 Linux /dev/sdb2       1761034238 1953523711  192489474  91,8G  5 Extended /dev/sdb5       1936812032 1953523711   16711680     8G 82 Linux swap / Solaris /dev/sdb6       1761034240 1936812031  175777792  83,8G 83 Linux  Partition table entries are not in disk order. Disk /dev/sdc: 7,4 GiB, 7910457344 bytes, 15450112 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes     

/dev/sdc — это и есть моя флешка. Как её восстановить, чтобы она начала читаться. У меня там личные файлы. :(((

P.S. Ну или хотя бы, как её форматнуть, т.к. partionmagic (из KDE) её не видит тоже 🙁

~# hdparm /dev/sdc  /dev/sdc: SG_IO: bad/missing sense data, sb[]:  70 00 05 00 00 00 00 0a 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  multcount     =  0 (off)  readonly      =  0 (off)  readahead     = 256 (on)  geometry      = 1021/244/62, sectors = 15450112, start = 0 

программный ремонт usb flash накопителей в linux — ProLinux

Довольно таки часто занимался программным восстановлением usb flash накопителей на Windows
, ну и заинтересовался как можно это реализовать на Linux
. Как раз под рукой лежала флэшка JetFlash TS4GJF160
на 4Gb, которая не хотела работать

И так для начала разберемся что же есть программный ремонт. В любой флэшке установлена микросхема-контроллер. Она отвечает за передачу данных между компьютером и флэш-памятью. В случае различных сбоев питания, неправильного извлечения и других причин – происходит сбой контроллера. В результате чего контроллер блокируется и не отвечает на запросы операционной системы. Также, блокировка может произойти из-за износа микросхемы памяти — появления дефектных блоков или превышения порога циклов записи (тогда контроллер сам метит блок как неиспользуемый и часто блокирует флэш на запись). И при попытке доступа к нему из операционной системы можно увидеть следующие сообщения «Вставьте диск» или «Нет доступа к диску», «Диск не отформатирован». Но при попытке отфарматировать выдается сообщение типа «Диск защищен от записи»

Так как же боротся с этим?! Весьма просто…

  1. Вставляем usb flash накопитель в компьютер и определяем какое имя ему присваивается При подключении usb flash накопителя к компьютеру, Linux
    присваивает ему имя типа sdX
    (первому устройству присваивается sda
    , второму sdb
    и так далее. Но чтобы узнать какое имя он ему присвоил наверняка, используем 1 из способов:

    • Набираем команду:

      dmesg 
      

      Выведет следующее:

      [ 1676.752097] usb 1-1: new high speed USB device using ehci_hcd and address 2 [ 1676.885083] usb 1-1: configuration #1 chosen from 1 choice [ 1676.886065] scsi6 : SCSI emulation for USB Mass Storage devices [ 1676.886393] usb-storage: device found at 2 [ 1676.886399] usb-storage: waiting for device to settle before scanning [ 1681.885333] usb-storage: device scan complete [ 1681.886555] scsi 6:0:0:0: Direct-Access     JetFlash TS4GJF160        0.00 PQ: 0 ANSI: 2 [ 1681.887796] sd 6:0:0:0: Attached scsi generic sg3 type 0 [ 1681.892418] sd 6:0:0:0: [sdc] 8028160 512-byte logical blocks: (4.11 GB/3.82 GiB) [ 1681.893352] sd 6:0:0:0: [sdc] Write Protect is off [ 1681.893361] sd 6:0:0:0: [sdc] Mode Sense: 00 00 00 00 [ 1681.893368] sd 6:0:0:0: [sdc] Assuming drive cache: write through [ 1681.895713] sd 6:0:0:0: [sdc] Assuming drive cache: write through [ 1681.895725]  sdc: sdc1 [ 1681.972724] sd 6:0:0:0: [sdc] Assuming drive cache: write through [ 1681.972738] sd 6:0:0:0: [sdc] Attached SCSI removable disk 
      

      Из этого всего нам нужна только 1 строка:

      [ 1681.895725] sdc: sdc1 
      

      которая и говорит нам что присвоено имя устройству sdc1

    • Набираем команду:

      sudo tail /var/log/messages 
      

      Выведет следующее:

      Nov 13 22:25:33 espera kernel: [ 1676.752097] usb 1-1: new high speed USB device using ehci_hcd and address 2 Nov 13 22:25:33 espera kernel: [ 1676.885083] usb 1-1: configuration #1 chosen from 1 choice Nov 13 22:25:33 espera kernel: [ 1676.886065] scsi6 : SCSI emulation for USB Mass Storage devices Nov 13 22:25:38 espera kernel: [ 1681.886555] scsi 6:0:0:0: Direct-Access     JetFlash TS4GJF160        0.00 PQ: 0 ANSI: 2 Nov 13 22:25:38 espera kernel: [ 1681.887796] sd 6:0:0:0: Attached scsi generic sg3 type 0 Nov 13 22:25:38 espera kernel: [ 1681.892418] sd 6:0:0:0: [sdc] 8028160 512-byte logical blocks: (4.11 GB/3.82 GiB) Nov 13 22:25:38 espera kernel: [ 1681.893352] sd 6:0:0:0: [sdc] Write Protect is off Nov 13 22:25:38 espera kernel: [ 1681.895725]  sdc: sdc1 Nov 13 22:25:38 espera kernel: [ 1681.972738] sd 6:0:0:0: [sdc] Attached SCSI removable disk 
      

      Аналогично первой команде ищем среди последних строк:

      Nov 13 22:25:38 espera kernel: [ 1681.895725] sdc: sdc1 
      
    • Набираем команду:

      mount | column -t 
      

      Имхо самый оптимальный вариант, выведет весь список смонтированных устройств и в самом конце видим следующее:

      /dev/sdc1 on /media/A47B-0D0E type vfat (rw, nosuid, nodev, uhelper=udisks, uid=1000, gid=1000, shortname=mixed, dmask=0077, utf8=1, flush) 
      

      Думаю тут все понятно, /dev/sdc1
      то что нам и нужно

  2. Забиваем usb flash накопитель нулевыми байтами, набирая:

    sudo dd if=/dev/zero of=/dev/sdc1 
    

    После чего нам выдаст следующее:

    dd: запись в «/dev/sdc1»: На устройстве кончилось место 8028098+0 записей считано 8028097+0 записей написано скопировано 4110385664 байта (4,1 GB), 97,692 c, 42,1 MB/c 
    

    На ошибку можете не обращать внимание, мы же не указали необходимый размер

  3. Форматируем usb flash накопитель, командой:

    sudo fdisk /dev/sdc1 
    

    Выведет следующее:

    Устройство не содержит ни верной таблицы разделов DOS, ни метки диска Sun, SGI или OSF Building a new DOS disklabel with disk identifier 0x1854766c. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. ... Предупреждение: неверный флаг 0x0000 таблицы разделов 4 будет исправлен записью ... WARNING: DOS-compatible mode is deprecated. It's strongly recommended to          switch off the mode (command 'c') and change display units to          sectors (command 'u'). ... Команда (m для справки): 
    

    Создаем новый раздел, командой n
    :

    Команда (m для справки): n Действие команды    e   расширенный    p   основной раздел (1-4) p Номер раздела (1-4): 1 Первый цилиндр (1-1019, по умолчанию 1): 1 Last цилиндр, +цилиндры or +size{K,M,G} (1-1019, по умолчанию 1019): 1019 
    

    Просматриваем что получилось, командой p
    :

    Команда (m для справки): p ... Диск /dev/sdc1: 4110 МБ, 4110385664 байт 127 heads, 62 sectors/track, 1019 cylinders Units = цилиндры of 7874 * 512 = 4031488 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x1854766c ... Устр-во Загр     Начало       Конец       Блоки   Id  Система /dev/sdc1p1               1        1019     4011772   83  Linux 
    

    Так как Linux
    раздел нам никчему сменим его, командой t
    :

    Команда (m для справки): t Выбранный раздел 1 Шестнадцатеричный код (введите L для получения списка кодов): l ...  0  Пустой    24  NEC DOS         81  Minix / ста  bf  Solaris  1  FAT12           39  Plan 9          82  Linux своп  c1  DRDOS/sec (FAT-  2  XENIX root      3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-  3  XENIX usr       40  Venix 80286     84  OS/2 скрыт c6  DRDOS/sec (FAT-  4  FAT16      41  PPC PReP Boot   85  Linux расш  c7  Syrinx  5  Расшире  42  SFS             86  NTFS набор da  Данные н  6  FAT16           4d  QNX4.x          87  NTFS набор db  CP/M / CTOS / .  7  HPFS/NTFS       4e  QNX4.x 2-я ч  88  Linux plaintext de  Dell Utility  8  AIX             4f  QNX4.x 3-я ч  8e  Linux LVM       df  BootIt  9  AIX загру  50  OnTrack DM      93  Amoeba          e1  DOS access  a  OS/2 Boot-ме  51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O  b  W95 FAT32       52  CP/M            9f  BSD/OS          e4  SpeedStor  c  W95 FAT32 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS фс  e  W95 FAT16 (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  GPT  f  W95 расши  55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/ 10  OPUS            56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC 11  Скрытый  5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor 12  Compaq диаг 61  SpeedStor       a9  NetBSD          f4  SpeedStor 14  Скрытый  63  GNU HURD или ab  Darwin загр f2  DOS втори 16  Скрытый  64  Novell Netware  af  HFS / HFS+      fb  VMware VMFS 17  Скрытый  65  Novell Netware  b7  BSDI фс       fc  VMware VMKCORE 18  AST SmartSleep  70  DiskSecure Mult b8  BSDI своп   fd  Автоопр 1b  Скрытый  75  PC/IX           bb  Boot Wizard с  fe  LANstep 1c  Скрытый  80  Old Minix       be  Solaris заг  ff  BBT 1e  Скрытый Шестнадцатеричный код (введите L для получения списка кодов): 6 Системный тип раздела 1 изменен на 6 (FAT16) 
    

    Смотрим результат, командой p
    :

    Команда (m для справки): p ... Диск /dev/sdc1: 4110 МБ, 4110385664 байт 127 heads, 62 sectors/track, 1019 cylinders Units = цилиндры of 7874 * 512 = 4031488 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x1854766c ... Устр-во Загр     Начало       Конец       Блоки   Id  Система /dev/sdc1p1               1        1019     4011772    6  FAT16 
    

    Ну и записываем таблицу разделов на usb flash накопитель, командой w
    :

    Команда (m для справки): w Таблица разделов была изменена! ... Вызывается ioctl() для перечитывания таблицы разделов. ... WARNING: Re-reading the partition table failed with error 22: Недопустимый аргумент. The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) ... ПРЕДУПРЕЖДЕНИЕ: Если вы создали или изменили какие-либо разделы DOS 6.x, пожалуйста, прочтите страницу руководства fdisk для получения дополнительной информации. 
    
  4. Форматируем usb flash накопитель, командой:

    sudo mkdosfs /dev/sdc1 
    

    После форматирования в раздел FAT16
    , выведет следующее:

    mkdosfs 3.0.7 (24 Dec 2009) 
    

    Команда для форматирования в FAT32
    :

    sudo mkdosfs -F 32 /dev/sdc1 
    
  5. После выполнения этих пунктов, в WinXP usb flash накопитель выдал «Диск не отформатирован» и только после того как я отформатировал стандартными средствами Win все заработало

Вот вообщем-то и все… Удачи в восстановлении!)

Для дополнительной информации об устройстве, введите:

sudo hdparm /dev/sdb 

Выведет:

/dev/sdb:  HDIO_DRIVE_CMD(identify) failed: Invalid exchange  readonly      =  0 (off)  readahead     = 256 (on)  geometry      = 1024/0/62, sectors = 0, start = 0 
Ссылка на основную публикацию
Похожие публикации