硬盘坏了?

硬盘坏了?

嗨 @moo @Elder Geek @heynnema (欢迎其他人),我发布了一个问题聊天

fdisk -l 和 testdisk 均未显示此 Seagate 驱动器,尽管 gno​​me-disk-utility 显示它说“无介质”。这是朋友的 Windows(7?)。

ls /dev/disk/by-id/*  (my own usual uuids replaced by ... below)    
...        ...          wwn-0x5000c5001ef815d2
...  ata-ST3750528AS_6VP2NFKJ    wwn-0x5000cca37ce23cbb
...  ...  wwn-0x5000cca37ce23cbb-part1
...  ...      wwn-0x5000cca37ce23cbb-part2
...  ...         wwn-0x5000cca37ce23cbb-part3
...                   ...  wwn-0x5000cca37ce23cbb-part4
...             wwn-0x50000f001b110412
...                wwn-0x50000f001b110412-part1

ls /dev/disk/by-uuid/
09ecdff0-44fe-437e-8063-deabc6feb00e
7323407c-7d0b-4acd-8299-c8f3787111ff
a434a28e-a4b9-4db0-b40e-b93010ed6ceb
66392631-7c4f-4773-8614-4c5ea0913890
7b9d93fc-6898-4085-8117-7f1c76fd8a28
e80baa09-5e4b-4c29-9d0b-bc265f8384f4

cat /etc/fstab
UUID=09ecdff0-44fe-437e-8063-deabc6feb00e /               ext4    errors=remount-ro 0       1
UUID=e80baa09-5e4b-4c29-9d0b-bc265f8384f4 /home           ext4    defaults        0       2
UUID=7323407c-7d0b-4acd-8299-c8f3787111ff /srv            ext4    defaults        0       2
UUID=7b9d93fc-6898-4085-8117-7f1c76fd8a28 /tmp            ext4    defaults        0       2
UUID=a434a28e-a4b9-4db0-b40e-b93010ed6ceb /var            ext4    defaults        0       2
UUID=66392631-7c4f-4773-8614-4c5ea0913890 none            swap    sw              0       0

smartctl -a /dev/sdc
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.13.0-110-generic] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org
Smartctl open device: /dev/sdc failed: Permission denied
~$ sudo smartctl -a /dev/sdc
[sudo] password for me: 
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.13.0-110-generic] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Model Family:     Seagate Barracuda 7200.12
Device Model:     ST3750528AS
Serial Number:    6VP2NFKJ
LU WWN Device Id: 5 000c50 01ef815d2
Firmware Version: CC44
Rotation Rate:    7200 rpm
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ATA8-ACS T13/1699-D revision 4
SATA Version is:  SATA 2.6, 3.0 Gb/s
Local Time is:    Sat Mar  4 17:52:16 2017 CET
==> WARNING: A firmware update for this drive may be available,
see the following Seagate web pages:
http://knowledge.seagate.com/articles/en_US/FAQ/207931en
http://knowledge.seagate.com/articles/en_US/FAQ/213891en
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
Read SMART Data failed: scsi error aborted command
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: UNKNOWN!
SMART Status, Attributes and Thresholds cannot be read.
Read SMART Log Directory failed: scsi error aborted command
Read SMART Error Log failed: scsi error aborted command
Read SMART Self-test Log failed: scsi error aborted command
Selective Self-tests/Logging not supported

[ 2483.391005] ata5.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
[ 2483.391014] ata5.00: irq_stat 0x40000001
[ 2483.391019] ata5.00: failed command: FLUSH CACHE
[ 2483.391029] ata5.00: cmd e7/00:00:00:00:00/00:00:00:00:00/a0 tag 19
[ 2483.391029]          res 51/04:00:00:00:00/00:00:00:00:00/a0 Emask 0x1 (device error)
[ 2483.391034] ata5.00: status: { DRDY ERR }
[ 2483.391038] ata5.00: error: { ABRT }
[ 2483.424566] ata5.00: configured for UDMA/133 (device error ignored)
[ 2483.424578] ata5.00: device reported invalid CHS sector 0
[ 2483.424619] end_request: I/O error, dev sdc, sector 0
[ 2483.424659] ata5: EH complete

编辑:正如 moo 所问,更多信息(尽管 smart 已经在最初的帖子中,但我重新发布并添加了错误代码返回):

sudo fdisk -l /dev/sdc
~$ echo $?
0

~$ sudo smartctl -a /dev/sdc
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.13.0-112-generic] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Seagate Barracuda 7200.12
Device Model:     ST3750528AS
Serial Number:    6VP2NFKJ
LU WWN Device Id: 5 000c50 01ef815d2
Firmware Version: CC44
Rotation Rate:    7200 rpm
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ATA8-ACS T13/1699-D revision 4
SATA Version is:  SATA 2.6, 3.0 Gb/s
Local Time is:    Thu Mar  9 10:55:14 2017 CET

==> WARNING: A firmware update for this drive may be available,
see the following Seagate web pages:
http://knowledge.seagate.com/articles/en_US/FAQ/207931en
http://knowledge.seagate.com/articles/en_US/FAQ/213891en

SMART support is: Available - device has SMART capability.
SMART support is: Enabled

Read SMART Data failed: scsi error aborted command

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: UNKNOWN!
SMART Status, Attributes and Thresholds cannot be read.

Read SMART Log Directory failed: scsi error aborted command

Read SMART Error Log failed: scsi error aborted command

Read SMART Self-test Log failed: scsi error aborted command

Selective Self-tests/Logging not supported

~$ echo $?
4

。[编辑] 我放弃了,把驱动器还给了我的朋友。使用以下方法重置 MaxLBA 字段SeaChest_Configure -d /dev/sg2 --setMaxLBA 1481663420失败了。也许我可以通过串行连接成功重置驱动器上的智能分区,但当时我没有串行适配器,我受够了,而且有些网站说这种方式只适用于 7000.11 驱动器(不适用于 7200.12)。不过还是感谢你的帮助。再见。

答案1

注意:您需要提供更多信息,以便任何人都能够为您提供更多帮助!

假设:

  • 您正在从安装了 Windows 7 操作系统的 HDD 中恢复数据,即,该 HDD 上可能有 NTFS 分区。

  • 您正在尝试在 Ubuntu 系统上恢复此数据

您可以提供的其他信息:

  • 假设有问题的硬盘是 /dev/sdc,尝试使用以下命令的输出更新您的问题(您在运行命令时没有使用 sudo!):

    sudo fdisk -l /dev/sdc
    sudo smartctl -a /dev/sdc
    sudo parted /dev/sdc print
    sudo dd if=/dev/sdc bs=512 count=2 | xxd
    
  • 使用 Gparted 获得的分区布局屏幕截图对于诊断很有用。在 ubuntu 上,我相信您可以使用以下方式安装 gparted:

    sudo apt-get install gparted
    
  • 您可以提供的有关硬盘发出的声音的其他信息将有助于诊断:磁盘旋转、使用 dd 从磁盘读取时进行的磁盘活动、硬盘发出的重复咔嗒声。

建议:

  • 首先使用以下方法对硬盘进行映像处理德雷库ddrescue 手册页) 或者。根据硬盘的问题,您打开硬盘的时间越长,丢失所有数据的风险就越大。理想情况下,您需要专注于对其进行映像处理,然后直接在硬盘映像上进行恢复。对于机械损坏的硬盘尤其如此。您可以使用以下命令在 ubuntu 上安装 ddrescue:

    sudo apt-get install gddrescue
    
  • 如果你必须尝试在不创建映像的情况下进行恢复,则首先尝试将硬盘上的分区安装为只读

    mkdir /tmp/mnt1 /tmp/mnt2
    sudo mount -o ro /dev/sdc1 /tmp/mnt1
    sudo mount -o ro /dev/sdc2 /tmp/mnt2
    
  • 尝试使用磁盘恢复工具,例如测试盘

    sudo testdisk /dev/sdc
    
  • 如果您认为这是固件问题,请尝试使用以下驱动器可用的固件更新您的驱动器:http://knowledge.seagate.com/articles/en_US/FAQ/213891en。您可以使用 ISO 或 Windows 可执行文件来更新固件(另请参阅同一页上的说明)。

笔记:

  • fdisk仅读取位于驱动器开头的分区表(前 512 个字节内)。如果它不返回任何信息,则表示分区表不可读(要么是因为它已被清除,要么是因为硬件问题而无法读取)

  • ddrecue并且dd几乎做同样的事情。它们从磁盘逐块读取。ddrescue 对于恢复非常有用,因为它比 dd 更容易控制。例如,您可以定制首先要恢复磁盘上的哪些区域,并忽略导致硬盘锁定的坏区域。

  • 始终使用 SATA 连接器将 HDD 直接连接到主板。不要使用 USB 转 Sata 适配器通过 USB 连接 HDD。

答案2

这听起来很奇怪,我可能会得到一些反对票(请不要)为此,但我是一个老前辈,已经存在一段时间了,我会告诉你一些我们过去尝试过的小技巧,它确实为我们节省了一些数据......

如果读/写磁头粘在盘片上,驱动器甚至无法旋转(也可能是驱动电机损坏)。取出裸驱动器并迅速地围绕驱动电机轴旋转驱动器。如果发生这种情况,必须快速旋转才能打破“粘连”。重试驱动器。

您可以尝试的另一件事...

将裸机放入冰箱,没错,就是冰箱。用密封袋封好,以防水分进入。清除袋子中的多余空气。冰箱技巧适用于许多其他故障模式,包括焊点不良、电路蚀刻不良、达到温度后立即失效的芯片、电机轴承和数据头执行器等。

首先尝试 10-15 分钟。之后,将其从冰箱中取出并立即将驱动器重新连接到计算机,看看是否可以使用任何可用的方法(包括其他答案中描述的方法)恢复数据。

让我们知道它是否对您有用。

答案3

如果在启动驱动器时听到刮擦声,则表明磁头已撞击盘片,并且可能无法再进行恢复。

如果您听到重复的咔嗒声,则表示驱动器无法读取特定扇区并正在重试。您会听到磁头反复寻道的声音。恢复是可能的。

如果您除了盘片旋转的嗡嗡声什么也听不到,则可以进行恢复。

如果您听不到任何声音(即驱动器没有旋转),您可以尝试启动主轴或冻结驱动器,具体方法如下heynnema 答案如果成功,就从这里继续。

如果有问题的设备是:

Model Family:     Seagate Barracuda 7200.12
Device Model:     ST3750528AS
Serial Number:    6VP2NFKJ

这个问题可能是由固件故障或升级固件尝试失败

您可以使用以下命令确定驱动器的固件版本sudo smartctl -x /dev/sdd | grep -i firmware改变/dev/sdd 到相关设备。)

编辑:正如所提到的 血红蛋白。 冷冻驱动器可能有助于您实现此目的。事实上,如果您能将温度降至约 -20 摄氏度,这实际上可以提高磁场强度提高从薄弱部门恢复数据的几率。

根据发生的情况,数据恢复工作可能失败了。无论发生什么,我首先要尝试的是使用以下方法将此故障驱动器映像到映像文件中:ddrescue

准备:

您将需要另一个驱动器,该驱动器具有格式化的分区,并且有足够的可用空间来容纳整个 750GB 映像。从现在开始,我将把它称为恢复分区。注意:您必须在此恢复分区上使用能够容纳 750 GB 文件的文件系统(FAT16 或 FAT 32 不会)首选 ext2/3/4

你需要启用 Universe 存储库

您需要安装gddrescue 包适用于您的 Ubuntu 版本,其中ddrescue包含ddrescuelog

通过发出命令sudo apt-get install gddrescue

使用命令创建一个目录来挂载恢复分区sudo mkdir /mnt/recover,然后使用以下命令将恢复分区挂载到 /mnt/recovermount device dir 其中设备是您的恢复分区并且 dir 是您的挂载点。

例如:sudo mount /dev/sdX /mnt/recover然后使用命令切换到该目录cd /mnt/recover

创建故障驱动器的映像

发出命令

$sudo ddrescue-r 3源目标日志

其中 source 是源驱动器,例如 /dev/sdc(您的可能不同),target 是目标映像文件,log 是跟踪进度的日志文件。

例子:sudo ddrescue -r 3 /dev/sdc recovery.img recovery.log

-r 3 开关告诉系统在放弃失败的传输之前重试 3 次。

您还可以使用-b n(扇区大小选项)

-b, --sector-size=<bytes>
              sector size of input device [default 512]

-c n(集群大小选项)

-c, --cluster-size=<sectors>
              sectors to copy at a time [128]

如果你愿意的话(我个人对默认设置很满意)

ddrecover将拆分无法读取的块,以尝试恢复尽可能多的数据。请注意,如果驱动器状况不佳,此过程可能需要很长时间。(您可以通过减少上述重试次数来减少时间和效率。

分析并挂载映像

有多种方法可以做到这一点,如下所述这里

根据需要执行数据恢复

testdisk是一个不错的选择 关于使用 testdisk 的详细答案这里

如果对此(或我的任何其他答案)有任何不清楚的地方,请随时给我留言,我会尽我所能澄清。

资料来源:

http://knowledge.seagate.com/articles/en_US/FAQ/213891en

http://tuhsphysics.ttsd.k12.or.us/Research/IB09/HougBlat/index.htm

我如何启用“Universe”存储库?

http://packages.ubuntu.com/search?keywords=gddrescue&searchon=names&suite=all§ion=all

从整个磁盘(设备)的映像中挂载单个分区

安装时断电后分区消失

答案4

我无法直接解决您的问题,但我可以为您指明正确的方向。

你听说过“spinrite”吗?我用过它(虽然是 Windows 的),而且它对我来说很有用(显然它也适用于 Linux)。

https://www.grc.com/sr/spinrite.htm

(我与这家公司没有任何关联,并且除了如果您不知道这件事而它最终解决了您的问题时可能会感觉良好之外,我不会得到任何好处)。

相关内容