马上注册,获取阅读精华内容及下载权限
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 tnzx 于 2014-8-22 14:11 编辑
本人现在在开发多种android设备,PC上装的都是linux系统。有些安卓设备烧写固件要在XP下面操作,所以就在linux系统中装个windows XP虚拟机。昨天搞智能手表,固件无法在虚拟机中烧写,在办公室找来一台不用的旧电脑。竟然开不了机,揭开机箱,用个平板电脑的喇叭接到主板的喇叭接口上,不停地叫,重插内存可以开机了,装上相应的软件和驱动后,成功烧写手表固件。
且把闲话修说直说正话,看到那个机箱里面有块闲着的多余硬盘,st的500G 7200.12串口硬盘,电源和数据线都没有连,于是我就把线都连上,开机竟然提示S.M.A.R.T status BAD,要按F1继续。检查那个盘上的XP可用,linux不能用,在启动时卡死在检查文件系统那个界面上过不去。硬盘过保了,公司的电脑维护人员技术菜得很,看到小毛病就直接换盘了。
从好盘启动,用HD Tune查看坏盘的健康值,“重映射扇区计数”竟然是4035,但扫描整个磁盘未见有坏道。网上有人说,开机bios显示那种提示是G表满了。临时查查G表和P表的概念,P表是出厂前写的坏扇区记录;G表也用来记录坏扇区,但是跟P表有本质的区别,出厂后发现某个扇区坏了就写个记录到其中,并且还要把这个坏扇区重新映射到一个备用的好扇区。不管是P表还是G表记录的坏扇区,磁盘扫描工具是无法检测到的,因为它们由硬盘屏蔽了。如果是G表满了,再出现坏扇区后就无法再映射到其它的备用好扇区了,只能由操作系统的文件系统自己去禁止使用这个扇区了,普通的磁盘扫描工具可以扫描到这类坏扇区的,但是HD Tune的确没有扫描到坏道,难道这个“重映射扇区计数”值是虚假的?把G表清理后再扫描就可以彻底知道真相了。用com口修ST硬盘以前也有听闻,今天也来玩玩。嘿嘿!
直接把串口的tx和rx接到硬盘上。下载了一个stcomtool,选好com口,坏硬盘插上电源,文字窗口竟然无反应。把连到硬盘的tx和rx调换后,重新插拔坏硬盘的电源线,终于看到接收到乱码了,波特率调成38400再试终于看到硬盘返回的文字了。 点"查看P表",出了一大堆文字,出了好几分钟才结束。再点"查看G表",硬盘怎么也无反应了。重新插拔电源有反应了。重试了几次,每次点"查看G表"后,硬盘必定要死,必须断开硬盘电源十几秒钟再通电才有反应。之后就试试"清健康值","清SMART"也点了,再关机重启,不再报错直接进系统。操作竟然生效了,HD Tune里面的健康值也改变了。嘿嘿! 下图是"清健康值""清SMART"之后HD Tune显示的硬盘健康值。
我以为既然查看G表硬盘会死,那么清G表硬盘也会必死无疑。但是还是抱着一线希望去尝试点一下"清空G表",竟然成功了,再点"查看G表",竟然出数据了,没有死了。
之后用hd tune扫描也未见有坏道,扫描完毕,g表也仍然是空的。试一下,那个硬盘上的XP和linux系统都可以正常使用了。个人理解:应该只是硬盘上的核心数据被破坏了,而存储这些核心数据的介质并没有坏,以这个硬盘为例,应该是G表数据被破坏了,本来完好的扇区被无故重定向,这里说明一下,这种因G表数据破坏所引起的飞来横祸般的重定向,跟硬盘发现坏扇区之后执行的重定向有本质的区别,硬盘发现坏扇区之后执行的重定向不仅仅修改了一个G表项,还把数据写入到重定向之后的扇区,而前者仅仅只是破坏G表项,并没有把原扇区的内容写入重定向之后的扇区。这样操作系统的数据完整性被破坏,一个操作系统即使有一个bit的数据改变了都可能无法使用了,更何况那么多扇区数据被改变了呢。清理G表后,使用原来本来就完好的扇区数据,数据的一致性也恢复了,linux系统可以正常工作了。到底这些G表数据在flash上还是在磁碟上,我也一无所知。反正我只知道硬盘和我开发的各种安卓设备一样有cpu有内存有永久存储介质,很多因素会引起永久存储介质上的数据被破坏,破坏后需要修复就能正常使用。菜鸟之愚见,大牛勿喷。
|