我的Seagate Momentus XT混合硬盘驱动器损坏了Linux上的文件。我希望得到任何人的帮助,但是我特别想知道其他Momentus XT用户是否能够重现此问题。我在Seagate社区论坛上提供了重现此问题的分步说明。
到目前为止,已有四个用户在以下便携式计算机和操作系统/发行版上重现了此问题:
- 五台笔记本电脑:联想Thinkpad T60,T61,T510,MSI MS-1656-ID1和MacBook Pro(15英寸,2009年末)。
- 四种操作系统/发行版:Ubuntu 11.04,Fedora 15,openSUSE和Mac OSX。
- 创建一个大型测试文件,将其保存到另一个存储设备(不是 Momentus XT),然后计算SHA-1校验和。
- 将测试文件写入Momentus XT。
- 从Momentus XT读取测试文件,计算SHA-1,并将此校验和与原始校验和进行比较。我们应该有一场比赛。如果它们不匹配,我们可能会重现该问题。(仅“可能”,因为其他问题可能会导致不匹配。请参阅Seagate线程,以通过将文件与进行比较来识别此特定问题
cmp -l
。) - 从步骤(2)重复。
在希捷线程有更多的细节。这是我测试中的一些注意事项(我已经能够在三个连续的Momentus XT驱动器上重现此问题;我RMA进行了两次,现在是第三次):
- 似乎正在发生的事情是,Momentus XT有时会忽略将数据写入驱动器,因此,当我从驱动器中读取数据时,会得到该扇区中原来的内容,而不是正确的数据。这发生在不同大小的块中。典型大小为1 MiB和512 KiB。
- ext2,ext4,Btrfs,NTFS和FAT32出现问题。奇怪的是,我无法在ext3上重现此问题。
- 使用
oflag=direct
输出标志写入dd
可以避免此问题。快速将数据提交到磁盘while true; do sync; sleep 0.01; done
也可以防止该问题。 - 我只能通过SATA和eSATA接口重现此问题。USB连接似乎可以防止此问题。(不确定这是否是由于传输速度引起的。)
- 大文件(> 2 GB)时,问题经常发生。文件小于85 MB时,我无法产生问题。
- 我无法在带有NTFS的Windows XP上重现该问题。
- 希捷论坛上的Gazoi 无法在带有UFS2的FreeBSD 8.2上重现该问题。
- Momentus XT通过了扩展的SMART测试
badblocks -w
,没有任何问题。 - 我的笔记本电脑(MS-1656-ID1)已成功通过24小时的Memtest86 +,Memtest86,memtester和MPrime。
- 我已经用相同的步骤测试了另外两个存储设备(Seagate Momentus 7200.4和Intel 320系列SSD),它们都通过了测试。
如果您有Momentus XT,请尝试重现此问题,并让我知道会发生什么。
我还能做些什么来诊断问题?
iflag=direct
带有dd 的输入标志来绕过页面缓存。当我不使用dd时,我使用sudo sh -c "sync && echo 1 > /proc/sys/vm/drop_caches"