这些SATA错误是危险的吗?

我会随机地遇到这些错误,但我不知道它是否正常。
[39441.061856] ata3.00: failed to read SCR 1 (Emask=0x40)
[39441.061866] ata3.01: failed to read SCR 1 (Emask=0x40)
[39441.061892] ata3.15: exception Emask 0x10 SAct 0x0 SErr 0x280100 action 0x6 frozen
[39441.061897] ata3.15: irq_stat 0x08000000, interface fatal error
[39441.061904] ata3.15: SError: { UnrecovData 10B8B BadCRC }
[39441.061910] ata3.00: exception Emask 0x100 SAct 0x0 SErr 0x0 action 0x6 frozen
[39441.061917] ata3.01: exception Emask 0x100 SAct 0xe SErr 0x0 action 0x6 frozen
[39441.061923] ata3.01: failed command: READ FPDMA QUEUED
[39441.061933] ata3.01: cmd 60/a8:08:b0:48:62/00:00:00:00:00/40 tag 1 ncq 86016 in
[39441.061940] ata3.01: status: { DRDY }
[39441.061944] ata3.01: failed command: READ FPDMA QUEUED
[39441.061953] ata3.01: cmd 60/a8:10:b0:49:62/00:00:00:00:00/40 tag 2 ncq 86016 in
[39441.061959] ata3.01: status: { DRDY }
[39441.061963] ata3.01: failed command: READ FPDMA QUEUED
[39441.061972] ata3.01: cmd 60/58:18:58:4a:62/00:00:00:00:00/40 tag 3 ncq 45056 in
[39441.061978] ata3.01: status: { DRDY }
[39441.061987] ata3.15: hard resetting link
[39441.608302] ata3.15: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[39441.609090] ata3.00: hard resetting link
[39441.929246] ata3.00: SATA link up 3.0 Gbps (SStatus 123 SControl 320)
[39441.929333] ata3.01: hard resetting link
[39442.249184] ata3.01: SATA link up 3.0 Gbps (SStatus 123 SControl 320)
[39442.263242] ata3.00: configured for UDMA/133
[39442.277570] ata3.01: configured for UDMA/133
[39442.277725] ata3: EH complete

我也贴上了sdasdbsdcsmartctl -a
提前感谢您的帮助。
11个回答

虽然我基本上同意Geppettvs D'Constanzo的答案, 但我建议你也尝试以下一些最初的方法:

  1. 检查SATA数据线是否牢固连接并插入到主板和硬盘插槽中。

  2. 更换SATA数据线。SATA数据线(相对而言)价格不贵,有时可能有“坏”的情况。通常,简单地更换数据线是诊断和解决此类问题最简单的方法。

(虽然两根数据线同时出现问题有点出乎意料。不过,检查一下是很容易的,个人认为还是值得尝试的。)

我刚才看到你过去上传的驱动器SMART数据。请注意,驱动器 sdbsdc 的CRC错误数量异常高。建议您首先检查这些驱动器的电缆和连接。

junior@mediacenter:/$ sudo  smartctl -a /dev/sda
...
Model Family:     SAMSUNG SpinPoint M7E (AFT)
Device Model:     SAMSUNG HM321HI
...
199 UDMA_CRC_Error_Count    0x0036   200   200   000   Old_age  Always -    0

junior@mediacenter:/$ sudo  smartctl -a /dev/sdb
...
Model Family:     SAMSUNG SpinPoint F4 EG (AFT)
Device Model:     SAMSUNG HD204UI
...
199 UDMA_CRC_Error_Count    0x0036   100   100   000   Old_age  Always  -  57

junior@mediacenter:/$ sudo  smartctl -a /dev/sdc
...
Model Family:     SAMSUNG SpinPoint F4 EG (AFT)
Device Model:     SAMSUNG HD204UI
...
199 UDMA_CRC_Error_Count    0x0036   100   100   000   Old_age  Always  - 398

好的。所以不是笔记本电脑了。;-) 当然,如果这是发生在笔记本电脑上,那么以上的建议都不适用,我也不确定该给出什么建议。也许可以尝试移除并重新安装硬盘?或许只需要重新插拔一下硬盘,以改善连接?
sbd和sdc连接在同一根外部e-sata电缆上(Thermaltake Duo HDD Dock)。我会更换我的e-sata电缆。
可能是由于有问题或低质量的电缆引起的。也有可能是在使用驱动器时,电缆被移动、碰撞或其他方式摇晃了。

1sbdsdc都连接在同一根外部e-sata电缆上(Thermaltake Duo HDD Dock)。我将更换我的e-sata电缆。 - Marcos Junior
确实,对我也是一样。一个硬盘中有一个坏的SATA线缆,另一个硬盘中有一个坏的电源线。这个命令帮我很多,用来定位RAID磁盘:find -L /sys/bus/pci/devices/*/ata*/host*/target* -maxdepth 3 -name "sd*" 2>/dev/null | egrep block |egrep --colour '(ata[0-9]*)|(sd.*)' - Marcelo Scofano Diniz

看起来你的SATA电源/数据线质量不好/损坏了。这可能导致CRC错误。它们并不会造成任何伤害,你可以继续使用,但是很快你将会丢失大量的数据。
你的硬盘的SMART报告看起来正常,所以根据我在设置5个硬盘驱动器时的经验,我认为是电源供应问题。我最后使用了一个外部电源(475W)为2个驱动器供电,而机箱的600W则为整个机箱包括GPU、光驱和硬盘驱动器供电。
无论如何,我建议你在做任何其他操作之前先进行完整备份。如果可能的话,克隆你的硬盘驱动器,然后检查你的电缆和电源电压。

出于好奇,那个GPU是不是一个庞大而贪婪的功耗GPU? - irrational John
1nVidia Quadro 4000,确实不那么饥饿。 - Geppettvs D'Constanzo
1有趣。 我有一台400w的Antec(Neo-Eco)电源,5个硬盘,2个光驱以及一块NVIDIA GeForce 9500 GT显卡,我不认为我有任何与电源相关的问题。 我确实有一些驱动器CRC错误,但我认为它们是我一段时间前犯下的愚蠢用户错误造成的。(例如碰到电缆等)我没有注意到我的内核消息中有任何警告日志。 不过,我想为了安全起见,我应该更加关注它。 - irrational John
11xIDE DVD-RW,1xSATA DVD-RW和1xSATA蓝光ROM光驱在这边。4个SATA和1个IDE硬盘驱动器,GPU功耗为142瓦特。我不能说我绝对确定是电源问题,但当我添加了新的电源后,问题都解决了。顺便说一下,我的驱动器似乎很健康。但还是谢谢你让我明白这一点。非常感谢你在这方面的意见。谢谢! - Geppettvs D'Constanzo
1哦,一个显卡需要142瓦特的功率...真是个大家伙。我的整个系统(通常情况下)使用的电量都比这要少。就在我打字的时候,我的台式机只消耗了约117瓦特的电量。(根据我刚刚发现还插着的Kill-A-Watt测量仪显示的数据;-) - irrational John
sdbsdc都是外部硬盘,连接在另一个电源上。 - Marcos Junior
你没有提到那件事。但是谢谢你澄清。祝你好运! - Geppettvs D'Constanzo
1@GeppettvsD'Constanzo 这是一个很好的回答,但在更换电缆并确保适当的电压之后,我会"克隆您的硬盘驱动器",而不是之前。由于链接时断时续,要在问题的根本原因仍然存在的情况下获得准确的克隆将需要更长时间且更加困难。干杯! - Elder Geek

一些内核版本和一些SATA控制器之间似乎存在问题。

最近我在运行Scientific Linux的Web服务器上遇到了一个非常类似的问题(不确定是否完全相同)。

关于这个问题,我找到的最准确和完整的信息是这个launchpad bug

简而言之:对于遇到这个问题的用户来说,禁用NCQ似乎是最好的解决方法。


3禁用 NCQ 是解决有问题硬件常见的临时方法。内核似乎没有 bug。 - psusi
天啊!这真的起作用了!所有的错误信息都消失了,我的系统也不再崩溃了!我完全不同意说这不是内核bug,因为我可以使用旧版本的内核(至少从2.6系列开始)而没有任何崩溃。我简直不敢相信我之前没找到这个问题! - reukiodo

这个错误不太可能损坏您的硬盘,但很有可能损坏您的文件系统。首先确定哪个驱动器出现了错误。可以通过多种方法轻松确定,例如:
1)输入命令dmesg | grep ata3并查找硬盘的制造商和型号。(在您的情况下,ata3是出现错误的端口。请相应调整)这将提供类似于以下输出:
dmesg | grep ata3
[    4.756081] ata3: SATA max UDMA/133 abar m2048@0xf7f26000 port 0xf7f26200 irq 135
[    5.071981] ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[    5.077850] ata3.00: HPA detected: current 1953523055, native 1953525168
[    5.077959] ata3.00: ATA-8: SAMSUNG HD103SJ, 1AJ10001, max UDMA/133
[    5.077960] ata3.00: 1953523055 sectors, multi 16: LBA48 NCQ (depth 32), AA
[    5.084057] ata3.00: configured for UDMA/133

快速一瞥可以看出,连接到ata3的驱动器是三星HD103SJ。
2)执行以下命令:
find -L /sys/bus/pci/devices/*/ata*/host*/target* -maxdepth 3 -name "sd*" 2>/dev/null | egrep block |egrep --colour '(ata[0-9]*)|(sd.*)'

这将在同一行上提供突出显示的端口和设备名称,如下所示:

output

很容易看出连接到ata3的设备被分配了设备名称sdb。
3)使用sudo apt install lsscsi安装lsscsi,并输入命令lsscsi
$ lsscsi
[0:0:0:0]    cd/dvd  ATAPI    iHAS124   F      CL9M  /dev/sr0 
[1:0:0:0]    disk    ATA      WDC WD2003FZEX-0 1A01  /dev/sda 
[2:0:0:0]    disk    ATA      SAMSUNG HD103SJ  0001  /dev/sdb 
[3:0:0:0]    disk    ATA      ST6000VN0033-2EE SC60  /dev/sdc 

请注意,每行上方的第一个条目是scsi_host、channel、target_number和LUN。这些条目被放在括号内,每个元素之间用冒号分隔。当有多个SCSI设备时,它们的条目按升序排列。
只需将输出每行中的第一个数字加1,即可得到ATA端口号。您可以在这里找到更详细的信息:lsscsi 这里 这里
由于你的情况下,在3.00和3.01上都出现了错误,说明你连接了多个驱动器到同一个ATA端口。你需要仔细检查ata3.00和ata3.01的连通性。这可能是连接到同一条电缆的多槽驱动器盒。由于两个驱动器都出现了错误,更换前述多驱动器盒的电缆应该可以解决两个驱动器的问题。这些设备通常有外部电源,这也可能是问题的根源,需要更换,但电缆(作为最薄弱的环节)很可能是问题的最有可能的根本原因。
参考来源:
经验

https://linux.die.net/man/8/lsscsi

http://sg.danny.cz/scsi/lsscsi.html

https://serverfault.com/questions/244944/linux-ata-errors-translating-to-a-device-name/868943#868943


1好的,准确而且信息丰富的回答,应该得到更多的赞赏... - Marcelo Scofano Diniz

遇到了同样的问题 - 在我的情况下,这是因为4针转SATA电源适配器没有插紧。

不得不将电源适配器取下并重新安装。 - Samik R

这几乎总是一个糟糕的驱动器,我们有成千上万个使用的驱动器,尽管这些错误从未导致驱动器故障,但它们确实导致了文件系统损坏。我认为这真的与驱动器上的控制器板有问题有关。
我已经尝试了一切来解决这个问题,解决方法是更换驱动器,然后在相同的电缆和控制器上运行。
祝好运。

4在我过去30多年的职业生涯中,我一直在解决这些问题,我可以向您保证,根据我的经验,这几乎总是由于有问题的电缆引起的。而且它们价格便宜,所以您可以先尝试更换电缆。 - Elder Geek

我知道这个帖子很旧了,但是我遇到了同样的问题,从谷歌搜索过来的。
在启动KUBUNTU 16.04 livecd时出现了“ata3.01: failed command: READ FPDMA QUEUED”的错误。
WINDOWS 7的表现不稳定,在一段时间内工作正常,但在观看YouTube后会冻结。
更换SATA电缆没有任何效果。 更换电源后问题消失了。

我知道这个帖子很旧,但最近我在一台新买的机器上遇到了同样的问题,它有6个SATA插槽。我将光驱和硬盘安装在两个相邻的SATA插槽上,然后开始安装Ubuntu,没有出现错误,直到重新启动时,我看到了ata8:硬重置链接错误。机器在这一点上停止运行,无法恢复。我尝试重新启动几次,但没有成功。然后我尝试将硬盘更换到另外4个可用的插槽之一,结果一切正常,没有任何麻烦。

你的意思是你更换了硬盘插入的SATA端口,对吗?还是说你用另一个完全替换了整个硬盘?我觉得应该是前者,但只是再确认一下。 - Xen2050
是前者。 - ultrajohn

我遇到了同样的问题。我尝试了一切,但只有在我的华硕P5K主板上的J- Micron端口上没有出现错误。
但是当我将驱动器连接到另一个电源时,它正常工作,错误消失了。然后我将驱动器放回原来的电源供应器,但更换了一个新的电源连接器,也能正常工作。