5.5 修复工具的用法
修复工具启动后进入主操作模式菜单,如图5-4所示。
图5-4 主操作菜单
5.5.1 伺服测试和表面扫描
与其他驱动器属系的工具不同,这个版本的修复工具没有自动隐藏受损区域的机制,所以不能隐藏和重定位缺陷。修复工具中存在这两个菜单项,只是用来确定哪些磁头有问题、哪些磁头没有问题的,因此在处理那些不是很严重的故障时不推荐使用这两个命令。执行“Servo test”(伺服测试)命令后将不能再以LBA方式读取驱动器表面,因此需要执行工厂格式化命令。
5.5.2 固件数据
选择“Firmware data”选项后进入子菜单,如图5-5所示。
图5-5 固件数据子菜单
1.存储器操作
“Work with memory”(存储器操作)子菜单如图5-6所示。
图5-6 存储器操作子菜单
“Work with ROM”(ROM操作)选项用于查看ROM头部数据或读取ROM到文件。
ROM报告包括以下参数。
“Firmware version number”参数:表示固件版本号,如“A45A”。驱动器要求ROM固件版本号中的前两个字符与记录在NV-RAM中的μ码的两个相应字符必须匹配,若不匹配,驱动器就不能使用NV-RAM初始化和启动马达。
“Firmware version code”参数:表示固件版本码,如“E75D9E90”。驱动器要求记录在ROM和NV-RAM中的此码相同,否则不能使用NV-RAM初始化和启动马达。
“Read RAM into a file”(读RAM到文件)命令:用于将驱动器微控制器的整个RAM空间或部分空间读到一个文件中,文件最大为256Mb。虽然RAM的容量实际上要小得多,但由于它被分配成了不同的页面,所以程序被设计成能够操作驱动器微处理器的所有地址空间以保证所有需要的块(BLOCKS)都能被读取。
“Work with NV-RAM”(NV-RAM操作)命令:用于查看NV-RAM报告以及将NV-RAM读到文件中或从文件写入NV-RAM。
NV-RAM报告包括以下参数。
“Identifier”(标识符)参数:驱动器要求必须是“E2PR”。
“μ-Code”参数:表示μ-Code码,如“ER4OA45A”。其中,前4个字符“ER4O”表示驱动器属系,其对应关系可从表5-2中查找,后4个字符“A45A”代表固件版本号,与记录在ROM中的固件版本号相关联,也就是说,前2个字符(这里是“A4”)必须相同,后2个字符(这里是“5A”)可能不同(详见第5.6.1节)。此外,驱动器要被正确初始化,要求记录在NV-RAM和模块列表(USAG)中的μ-Code码值也相互匹配,否则驱动器将使用与NV-RAM相同的默认值进行初始化并启动马达,但是不从磁盘表面读取固件。
表5-2 属系码
“Code of microprogram version”参数:表示微程序代码版本,如“E75D9E90”。驱动器要求记录在NV-RAM和USAG中的固件版本码相同,否则驱动器将使用与NV-RAM相同的默认值进行初始化并启动马达,但是不从磁盘表面读取固件。
“Heads map”参数:表示磁头映射,如“0 1 2 2 2 2 2 2 2 2”。该域反映了电子磁头连接与物理磁头数之间的映射关系。
2.固件区操作
“Work with firmware zone”(固件区操作)子菜单如图5-7所示。
图5-7 固件区操作子菜单
· 检查固件结构
“Check firmware structure”(检查固件结构)命令用于得到一个有关固件完整性及其内容的报告。此外,该命令还给出了主固件磁道和附加固件磁道上的模块之间的“spaces”(空白空间)的状态。空白空间的命名形式如下。
“~##xx”表示主固件磁道上的spaces, xx代表spaces号。
“~@@xx”表示附加固件磁道上的spaces, xx代表spaces号(详见第5.6.1节)。
模块信息显示在一个表中,单独报告部分包括1个RD域和1个ID域。RD域的字符“√”表示模块从驱动器磁盘成功读取,而“—”表示模块读取出错。ID域的字符“√”表示模块头中的标识和用于从各自模块列表中选择位置的标识相符,而“—”表示标识不相符。驱动器正常工作时,只允许开放模块表中的模块标识出错,即ID域的字符为“—”。这是因为其中除了其他数据外,还有一个连接至复本的链表,所以复本名与原始的模块名当然不一样,与各自的模块头信息也不匹配。此外,开放模块表包含的是模块列表(USAG)中的模块的别名。例如,“RDM1”是“RDMT”的别名,“PDM1”是“PSHT”的别名。
· 读/写固件
“Write/read firmware”(读/写固件)命令可用于创建驱动器固件的复本,或将以前保存的驱动器固件的复本重新写入驱动器。将驱动器固件保存至数据库时,NV-RAM的内容也一并被保存。也可以把NV-RAM提取出来,保存在一个独立的文件中。但当把整个固件重写至驱动器时,NV-RAM不会被写回驱动器。该命令的子菜单如图5-8所示。
图5-8 读/写固件子菜单
· 忽略读错误
“Ignore reading error”(忽略读错误)命令只对“Read modules”(读模块)命令有效。当忽略读错误位于“on”有效时,程序状态行将显示红色的“IRE”标志,这时就可以读取部分损坏的模块。在普通模式下,一旦读模块遇到错误,就会终止读操作。该模块以扩展名为“.bad”的文件的形式存储在模块目录下。这个文件只包含相应的扇区数,可以从无错误的驱动器中恢复。而在IRE模式下,当读模块遇到错误时,模块文件将使用“DE AD”签名填充相应扇区,并继续读模块。通常没有错误的模块扩展名为“.rpm”,而损坏的模块扩展名为“.bad”。在任意一个十六进制编辑器中,通过“DE AD”签名都可以很容易地识别出损坏的扇区。
· 读/写模块
“Read modules/Write modules”(读模块/写模块)命令用于独立地对模块和spaces进行操作。这个特性提供了单独修复单个模块或者一组选定的模块而不改变其他模块的操作条件。该命令还能以多种模式读取模块,因此提供了模式选择菜单,如图5-9所示。
图5-9 选择模式
“Any main copy”参数的含义为“任何正常的模块”。在该模式下,将强制读取模块复本0,如果模块复本0损坏,则读取模块复本1。是否需要读取另一个模块由修复工具分析模块的可读性决定。
“Copy 0”模式或“Copy 1”模式强制分别只读取模块复本0或复本1。在多磁头驱动器中,作为一个规则,复本1对应磁头1;在单磁头驱动器中,复本1通常位于另一个磁道。模块复本的精确位置是NV-RAM中的地址修正字节,因此若将多磁头驱动器的数据写入单磁头驱动器的NV-RAM中,固件问题将引起敲盘——驱动器试图寻找与并不存在的磁头对应的模块复本。在只有复本0损坏且只有1个模块包含垃圾数据,或者固件模块必须从一个复本中搜集一部分数据,再从另一个复本中搜集另一部分数据时,这种模式就非常有用了。固件数据损坏严重时经常需要采取这种方法。磁盘旋转很可能会把模块损坏延伸到复本1所在位置的后续扇区,但修复工具提供了使用十六进制编辑器通过从复本1传输数据来从复本0恢复该模块的机会。选择“Ignore reading errors”(忽略读错误)模式可以最大限度地利用这一机会。由于不是所有的模块都同时存在于复本1中,因此它们只在“Copy 0”读取模式下才会列出(特别是在开放模块表中列出)。而在USAG中由于没有列出的模块,因此不能通过“Copy 1”读取模式获取。
“Factory copy”(工厂复本)模式提供了对在工厂写入的、记录在驱动器没有使用的“分离”磁道上的模块的访问能力。特别要注意的是:只有USAG中列出的模块可以使用此模式。此外,虽然SRVM(柱面缺陷表)模块出现在本模式中,但是工厂复本与实际使用的模块在校正部分是不同的。显然,工厂复本的SRVM模块写入驱动器之后,驱动器又进行了最终的校准操作,从而造成了两者的不同。
· 载入模块表
“Load USAG”(加载模块表)命令用于将选定的模块目录加载到程序的内存区,而不是写入磁盘。判断驱动器的USAG模块是否损坏时,此特性非常有用。
· 重读模块表
“Re-read module tables”(重读模块表)命令用于加载USAG和开放模块表。当对固件区进行修改后,可以使用此命令来刷新,这样,修改固件区后不需要退出程序就可以继续进行其他工作了。
· 清除驱动器出错日志
“Cleaning of logs (ELG1, EVLG)”命令用于清除驱动器错误日志。“ELG1”表示错误日志(Error log), “EVLG”表示事件日志(Event log)。对60GXP和120GXP属系,其EVLG记录也将同时被清除。在交换驱动器的磁头0时,该功能非常有用。该命令运行结束后还必须执行“Clear SMART”(清除S.M.A.R.T)命令。
· 清除磁头发生的机械碰撞日志
“Clear FLYH”命令用于清除驱动器内源自飞行磁头的机械碰撞日志“FLYH, Fly Head.”。此日志存在于包括120GXP(IC35AVVA)及之前本章所列的更早的IBM驱动器型号中。
· 恢复固件区
“Restore firmware zone”(恢复固件区)命令用于尝试恢复驱动器固件区中不可读的区域。基于IBM驱动器的固件区是分散的这一事实,这个菜单项非常有用,也就是说,模块之间有空白区域,但没有包含在模块表中,所以这些区域通常既没有完全被驱动器使用,也不包含SELFSCAN(自检)模块。而同时,驱动器在初始化时会把固件磁道全部读入RAM,因此,当固件区磁道包含不可读的区域时,初始化尝试就会以出错结束。此外,在需要恢复数据时,由于大部分本地驱动器服务数据都必须恢复,因此可能遇到这种情况:必须的模块的一部分无法读取,例如结束部分没有信息。在这种情况下,可以通过使用空白空间代替之前无法读取的区域以获得所必需的模块的方法来进行修复。在有些情况下,这些区域中的实际数据也有可能被恢复。此菜单项可以处理驱动器的整个固件,速度比在IRE(忽略读错误)模式下读模块要慢一些,但其优势在于,在修复时可以根据用户的选择及修复工具本身的能力尝试读取使用物理参数无法读取的扇区。此命令更多地应用在交换了驱动器系统磁头的操作中(详见本节“更改配置”部分)。
选择此命令后会弹出一个对话框,在这里可以选择待修复的磁头、操作类型(“restoration”为修复,“clearing”为清除、“extensive clearing”为扩展清除),以及使用逻辑参数和物理参数的重试次数。如果选择“clearing”或“extensive clearing”操作类型,或者重试次数为0,固件数据区就会被填入“77h”。“extensive clearing”这种强制清除类型是PC3000 1.07版本所采用的,此方式对于损坏的驱动器来说要相对安全一些,但是耗时比普通清除长。不过有统计数据证明,恢复固件区的可读性是经常和必须要做的,因此推荐只在使用普通清除方式达不到预期效果时使用“extensive clearing”方式。
要注意,这部分操作对驱动器可能有潜在的危险。例如,当驱动器磁头有问题时进行恢复操作,磁头执行“Restore firmware zone”命令可能导致服务区被破坏或者错误地写入服务区正确的扇区。此外,选择“Cleaning or Extended Cleaning”(清除或扩展清除)选项时,微程序有可能被擦除。因此,在执行此操作之前应该从驱动器的各个磁表面最大限度地保存模块。对此,“Load USAG”(从来自兼容驱动器的~USAG.rpm文件加载工具模块表)和“Ignore reading error”(最大限度地读取模块数据,即使含有不可读区域)等命令会非常有用。要记住,微程序中有关于此驱动器的大量专用信息,从其他驱动器简单替换它会导致修复的驱动器无法工作。
· 创建LDR文件
“Create an LDR file”(创建LDR文件)命令用于将驱动器固件保存在一个IBM LDR格式的文件中,选择此项后会提示输入LDR文件名。由于文件大小的限制,缺陷表(PSHT和RDMT)被另外保存在文件名相同但扩展名为“.dld”的LDR格式的单独文件中。也就是说,当需要使用该文件恢复原始模块时,应该把它更名为*.ldr。此外,另一个具有相同文件名而扩展名为“.ldl”的包含有关驱动器信息和写入LDR文件中的模块列表的文件也同时被创建。如果有模块不可读,它们会被跳过,在操作完成后列出在报告中。
但是,这样生成的LDR文件可能与原始文件不同,因为它包含用于各个驱动器的专用模块和完整的NV-RAM块。如果希望将这样的LDR文件用于更新其他驱动器固件,需要在完成后将该驱动器“本地”的SRVM(柱面缺陷表)模块和NV-RAM数据写回。
· 安全子系统
“Security subsystem”(安全子系统)命令用于查看和清除用户的密码信息,即清除密码以访问驱动器数据。“Setup”选项用于更改位于驱动器内存中的密码模块。同属系驱动器密码模块的位置大致相同,在有些版本的固件中可能会有一些不同。
从40GV属系驱动器开始,一些版本的固件对密码模块使用了加密机制,因此密码查看程序显示的是安全模块的加密块,不能作为密码原文使用。此外,从60GXP属系驱动器开始,密码保护的驱动器禁止使用工厂模式的命令,因此密码移除运算法则就变得更复杂。在此过程中,必须短接NV-RAM芯片的数据脚(5脚和6脚)以确保驱动器不初始化其安全子系统就报告就绪。这个过程以向导的方式进行操作,因此不再详细描述。
3.更改配置
“Modify configuration”(更改配置)命令的子菜单如图5-10所示。
图5-10 更改配置子菜单
· 隔离磁头
“Isolate heads”(隔离磁头)命令用于软件停用磁头和更改接连顺序。选定此命令后会弹出用于选择驱动器磁头数和安排磁头连接顺序的窗口,如图5-11所示。此后,程序将自动更正NV-RAM中模块复本的地址修正字节,因此不用担心会出现一个需要使用不同磁道上存在的模块复本来代替磁头1的单磁头型号。
图5-11 隔离磁头
修复工具中用来更改磁头表的对话窗口从左至右显示带有内部磁头编号的单元,最左边的单元包含的是驱动器要作为0号磁头使用的物理磁头的编号。例如,在该单元写入“2”,就表示驱动器固件将把磁头-盘体组件中连接在第二个转接器线上的那个物理磁头作为0号磁头使用。
在修复工具中创建一个带有驱动器需要更正的模块的LDR文件来实际完成交换机制。系统磁头改变时,该方法的特征就是需要一个特定的过程(假设简单完成磁头切除、启动LDR文件就足够了),具体如下。
第1步 从设定好磁头数、接连顺序和文件名的给定驱动器生成LDR文件。
第2步 清除将要作为系统磁头使用的选定磁头的固件区。
第3步 运行LDR文件。
第4步 清除系统磁头(0磁头)固件区。
第5步 关闭驱动器电源再打开。
第6步 运行LDR文件。
第7步 关闭驱动器电源再打开。
第8步 运行LDR文件。
操作完成后不要忘记重读模块表,方法是依次选择“Work with firmware zone”(固件区操作)、“Re-read module tables”(重读模块表)命令。
之所以需要多次运行LDR文件,是因为它包含实现交换的整个复杂的行为,同时,这个过程需要分几步来完成,因此,中间几次运行LDR文件的操作可能带错完成。如果最后一次运行LDR文件也带错完成,可能发生了以下某种情况。
LDR文件启动时没有重写NV-RAM。
LDR文件启动时固件区的某个模块没有重写。
驱动器某一原始模块包含垃圾数据。
如果是因任一模块无法重写而导致的出错(可以通过查看固件结构报告来检验),可以尝试从第5步开始重复该过程。如果原始驱动器的某些模块不可读或者不可写,必须随后从相应型号的驱动器中复制一套模块。这里要注意更改少数几个模块的机制。写入从其他驱动器复制的那些模块后,需要再次重复该过程。属于这种情况的模块包括ZONE、SRVM、MLBA和CNSL。可能会有这么一种情形:当没有一个模块可读(系统磁头损坏)时,LDR文件里只包含正确的NV-RAM,这就需要执行第3步到第6步,从数据库或模块组向驱动器写入相应固件。关闭驱动器电源再打开,然后从第2步开始执行,完成整个交换过程。
· 更改磁头映射
“Head map change”(更改磁头映射)命令用于在不调整驱动器其他结构的情况下只更改NV-RAM中的磁头映射。这样定义的磁头映射需要填满,例如,后面全都填写相同的编号。当固件区有缺陷扇区时,使用这一命令来修复驱动器非常有用,其对话窗口如图5-12所示。
图5-12 更改磁头映射
· 转换固件区访问方式
“Switch SA access”(转换固件区访问方式)命令用于对NV-RAM中固件版本标识字节的高位取反。当固件区损坏,导致普通方式启动驱动器时不是挂起就是磁头发出敲击声时,这个操作能够访问驱动器固件模块。先前为实现同样的目的曾经给出了寻找虽然版本不同,但包含与当前NV-RAM相同的磁头映射关系的类似NV-RAM的方法。此命令的功能如同一个“开关”,连续运行两次就会恢复到原始NV-RAM。
· 隔离区域
“Isolate zones”(隔离区域)命令只能将从驱动器起始处开始的区域隔离。选定此命令后会出现对话窗口。必须在该对话窗口中输入驱动器的第一个操作区域的编号,如图5-13所示,此前隔离的区域将被跳过。
图5-13 隔离区域
成功完成此操作后,需要单独使用PC-3000AT的“Set Max LBA”命令设置正确的最大LBA值。新的最大LBA值可以通过以下两种方法之一获得。
从原来的最大LBA值中减去隔离的值。
运行逻辑扫描,假设新的最大LBA值之后是连续的IDNF错误区域。
若要重新激活隔离的驱动器区域,只需在“Write modules”(写模块)对话窗口中单独写入它的ZONE模块,然后必须在PC-3000AT中恢复正确的最大LBA值。修复工具在对话框中显示默认的最大LBA值,只需确认这个值,不需要做任何修改。
4.运行LDR文件
“Run an LDR file”(运行LDR文件)命令用于启动一个更新固件的脚本。该命令的功能虽然与Quantum驱动器的有点类似,但是有几个根本性的不同。这个功能仅用于对已初始化的驱动器更新固件版本,不能通过写信息到RAM中来达到暂时初始化驱动器的目的。LDR文件名根据固件的μ-Code码替代当前固件版本,如“TX2DA59A.LDR”。μ-Code码的结构如下。
TX:驱动器属系标识。
2:磁头数量。
A59A:固件版本。
μ-Code码的前6个字符不能改变,如“TX2DA50A”可以被“TX2DA59A”替换,但是不能被“TX2DA69A”替换。
5.重算译码表
“Translator recalculation”(重算译码表)命令用于将G-List中的缺陷转入P-List。由于缺陷隐藏不是通过将缺陷扇区重定位到保留扇区,而是从译码空间中移除缺陷扇区来完成的,因此这个过程会丢失用户数据区的数据。这样,在隔离缺陷扇区时,从第一个缺陷开始,驱动器所有扇区的编号都将改变。由于固件操作的一些特性,在此过程中那些所谓的“候选”缺陷(读取不稳定的扇区)将被忽略。
6.主轴停转
“Spindle stop”(主轴停转)命令用于热交换操作。
7.启用写缓存
在修复工具中,只有DTLA、AVER和AVVA型号的驱动器才有“Enable write cache”(启用写缓存)菜单项,因为它实际上只是一个用来修正错误的补丁。旧版本的程序初始化这些型号的驱动器的G-List(RDMT)不够完善,往往导致停用写缓存。从技术上说,可以简单地使用当前版本的工具清除G-List,但是用户仍然希望保持送修驱动器的原始G-List,以便更完全地恢复数据。
5.5.3 驱动器ID
“Drive ID”(驱动器ID)命令用于更改驱动器ID请求返回的信息。驱动器ID在PC启动过程中由系统BIOS读取。可以将记录在固件区中的标识信息与驱动器标签上的信息进行比较。
5.5.4 格式化
“Formatting”(格式化)命令用于重建译码表和用扇区缓存中的随机码快速覆盖LBA表面,该过程在遇到严重损坏区域时以错误结束。为执行格式化过程,需要在格式化范围域输入要格式化的初始值和LBA扇区数。此外,还可以设定遇到错误时修复工具要执行的操作,具体如下。
遇到错误时停止格式化。
遇到错误时跳过一些扇区(由用户在对话窗口中填入跳过的扇区数)并继续对先前划定的范围进行格式化。
60GXP和更新型号的驱动器预定需要使用第二种模式,这是因为它们需要完成全部用户数据区可读LBA的格式化,才可以使用这些数据正常进行后续工作。
格式化结束后会输出因出错而跳过的区域的列表报告。必须对这些跳过的区域进行附加写测试的逻辑扫描。
此外,此菜单项可以探测伺服域损坏的缺陷区域,并可随后将其加入柱面缺陷表(Cylinder Table)。柱面缺陷表的相关内容将在第5.5.7节详细介绍。
由于IBM驱动器固件存在一个错误,磁盘结尾的一些LBA不能被格式化,出于安全原因,虽然可以让工具定义比用户输入更大的块范围,但目前却没有修改程序的算法,因此,在格式化完成后需要使用逻辑参数(Logical Parameter)将驱动器结尾部分添加进去(每个磁头有2~3个磁道)。
“Formatting”命令强制使用P-List格式化扇区,但是实际上是对除SRVM中列出的柱面之外的整个磁盘表面进行格式化,因此,将缺陷写入P-List不能避免格式化出错(伺服域损坏、磁盘表面刮擦等)。
最后一种解决方法是:只能在把缺陷添加到P-List后手动从损坏区域外面的位置开始运行格式化过程,把损坏区域从用户数据空间隔离。对于这种情况,建议实际操作中将损坏区的前、后各1个磁道也加入P-List。
5.5.5 逻辑扫描
“Logical scanning”(逻辑扫描)命令使用逻辑参数扫描磁盘表面,并将缺陷写入G-List。
这个版本的PC3000不会阻止驱动器自动指派特性,因此,驱动器可以自动把发现的缺陷添加到G-List中。当然,也可以手动编辑RDMT(G-List)和SRVM(柱面缺陷表)。
5.5.6 S.M.A.R.T表
“S.M.A.R.T. table”(S.M.A.R.T表)命令下的菜单项用于查看S.M.A.R.T参数值,从型号模块中加载它们,重置S.M.A.R.T参数及控制磁头和盘体(HDA)的热量模式。在此过程中,还可以监视任意位置的温度变化。“Latency Period”(潜伏周期)参数用于控制定位到随机LBA位置的延迟时间。
5.5.7 缺陷表
“Defects table”(缺陷表)子菜单如图5-14所示。
图5-14 缺陷表子菜单
“View defects tables”(查看缺陷表)命令用于查看Cylinder Defects Table(SRVM,柱面缺陷表)、P-List(PSHT)和G-List(RDMT)。使用【Space】键可以选择必须的表。如果没有选择表,按【Enter】键将显示当前光标位置所对应的表。
由于工具的一些界面特性的限制,最多只能显示32 767行内容,因此如果P-List包含更多的记录,将不能全部显示,但是报告头部的缺陷总数是正确的。
“Editor”(编辑器)菜单包括“Cylinder table editor”(柱面缺陷表编辑器)、“RDMT editor”(G-List编辑器)和“Load from defectoscope”(从DEFECTOSCOPE载入)选项。
柱面缺陷表编辑器选项用于手工输入或移除柱面缺陷。驱动器固件操作的特性是列入柱面缺陷表中的柱面从驱动器的地址空间“消失”,因此,更改柱面缺陷表会使列在P-List和G-List中相关的缺陷记录失效,必须将它们清除。此外,60GXP和更新型号的驱动器的柱面缺陷表被用来封锁位于靠近磁盘半径中部的服务区,修复工具在遇到试图移除这些缺陷的操作时会发出“嘟嘟”声进行提示并忽略它们。
RDMT编辑器用于手工编辑RDMT(G-List)的内容。由于某些原因,编辑RDMT后需要重建译码表,该操作由工具自动执行。此菜单项用于选择对候选(Candidate)缺陷的处理方式:编辑时把它们计入缺陷总数然后忽略它们,或者先将它们输出到扩展名为“.dft”的外部文件中(DEFECTOSCOPE格式的缺陷列表)。
“Load from defectoscope”选项用于从DEFECTOSCOPE载入,以及把由DEFECTOSCOPE工具创建的缺陷列表添加到RDMT(G-List)中。由于某些原因,加载缺陷后需要重建译码表,该操作由工具自动执行。在这里也可以从G-List中选择对当前候选缺陷的处理方式。
“Clear defects table”(清除缺陷表)选项用于重置G-List(RDMT)、P-List(PSHT)和柱面缺陷表(SRVM)。在这个菜单里可以使用【Space】键选择必须的表,如果什么都没选择,就按【Enter】键显示当前光标位置所对应的表。
如果清除了柱面缺陷表,列在其他缺陷表(RDMT、PSHT)中的缺陷将无效,必须也将它们清除。
对于60GXP和更新型号的驱动器,一个特定的缺陷柱面组是用来封锁位于靠近磁盘半径中部的服务区的。清除柱面缺陷表时,修复工具不会清除这些缺陷。
5.5.8 自动模式
“Automatic mode”(自动模式)命令用于以任意顺序运行测试序列(格式化、重建译码表、使用物理参数扫描、逻辑扫描和伺服测试)并输出结果。IBM驱动器的自动模式与其他驱动器类型一样,所以不再重复介绍。
5.5.9 自检
“SEFLSCAN”(自检)菜单包括所谓“自检”程序的控制元素和状态。SELFSCAN是存储在驱动器里的设计用于自测试和自调整的工厂固件的一部分。IBM驱动器的SELFSCAN用于完成驱动器适配参数的调整和带缺陷重定位的多遍盘面扫描测试。自检过程中,驱动器第一遍扫描固件区,第二遍扫描用户数据区,并把缺陷添加到柱面缺陷表,第三遍扫描则把缺陷写入P-List。
“SELFSCAN”子菜单如图5-15所示。
图5-15 自检子菜单
“Start SELFSCAN”子菜单用于初始化SELFSCAN程序。初始化完成后应将驱动器连接到独立电源,等待自检过程结束。等待过程中可以查看SELFSCAN状态,即驱动器寄存器,以评估自检过程信息。
启动SELFSCAN程序命令可以自动清除P-List、G-List以及ELG1日志、EVLG日志,并重置S.M.A.R.T参数。
在整个SELFSCAN过程中切记不能断开驱动器电源。如果SELFSCAN过程因断电而中止,由于有些参数存储在驱动器RAM中,下次加电时SELFSCAN就将以错误参数重新启动。因此,应该使用“Stop SELFSCAN”(停止自检)命令中止错误启动的SELFSCAN过程,然后重新启动SELFSCAN。
选择“Stop SELFSCAN”(终止SELFSCAN过程)选项后将按照向导指示进行操作,终止SELFSCAN。
“View state”(查看状态)选项用于查看当前SELFSCAN过程的状态。选择此选项后,将弹出一个反映IDE寄存器内容的窗口,这样就可以识别当前SELFSCAN的阶段和表面扫描位置。SELFSCAN完成表现为驱动器寄存器lx3和lx4被设定为特定的组值。DJNA和DPTA的型号为lx3=0x40、lx4=0x11, DLTA和更新型号为lx3=0x62、lx4=0x11。
“View result”(查看结果)选项用于检查SELFSCAN完成后的关键字或错误代码,只有SELFSCAN过程完成后该选项才会被激活。
关键字可能会有以下值。
COMPFIN1、COMPLETE:SELFSCAN成功完成。
ABORTED:SELFSCAN完成,但是有错误。
SELFSCAN:SELFSCAN没有完成,被程序终止。
如果SELFSCAN完成,但是有错误,那么必须使用格式化过程手工恢复驱动器,找出大片坏扇区,并将相关信息添加到柱面缺陷表,然后执行标准的缺陷搜索过程(参见第5.8.1节)。这时可以看到一些SELFSCAN错误代码,如表5-3所示。
表5-3 SELFSCAN错误代码
“Read SELFSCAN module”(读SELFSCAN模块)选项用于读取驱动器的SELFSCAN模块,并将其保存在文件中。
读取SELFSCAN模块时也需要一并复制包含SELFSCAN参数的MFGP模块(AVER以前属系驱动器为~@@01.rpm模块)。以后,只有能够获取MFGP和SELFSCAN有效模块对时,SELFSCAN才可以正常启动。
当前版本的工具不能将SELFSCAN模块保存在数据库中,选择读模块选项后也不会读取它,因此该模块应该单独保存。此外要注意,SELFSCAN模块体可能含有空区段,这将阻止对它的读取且不会给出提示。通过“Repair_SELFSCAN_module”(修复SELFSCAN模块)选项可以修复这种问题。调用该选项时,程序将忽略读错误,读取SELFSCAN模块,然后将其写回。这样,操作后既能够读SELFSCAN模块,也可以尝试启动它。
“Write SELFSCAN module”(写SELFSCAN模块)命令用于将SELFSCAN模块写入驱动器。写入驱动器的SELFSCAN模块只属于相应的固件版本和相应的驱动器型号。向驱动器写入不相符的SELFSCAN模块可能会造成破坏性的后果(磁头敲击)。
记住,写入的SELFSCAN模块的功能是否正确,依赖于是否存在相应的包含SELFSCAN参数的MFGP模块。“相应的”模块意思是说:它必须复制自同一个驱动器,或者至少复制自同磁头数的同型号的驱动器。
在DLTA或更新型号的驱动器中,由于SELFSCAN模块对磁头数有严格的定义,因此如果存在隔离的磁头,启动SELFSCAN就会导致错误。因此,启动SELFSCAN需要从相应型号的低容量驱动器中复制SELFSCAN模块和MFGP模块。
“View MFG parameters”(查看MFG参数)选项用于显示当前SELFSCAN参数(MFG参数)报告。
“View HLRC data”(查看HLRC数据)选项用于显示一个关于驱动器测试(HLR1/HLR2模块)的工厂报告的说明。它包含基于不同测试的有关磁头状况的综合数据,这些数据有可能被自检程序更改。从60GXP(AVER)属系开始出现这些报告。
“View SRST DUMP table parameters”(查看SRST转储表参数)选项用于输出一个关于SELFSCAN测试执行和由驱动器基于运行日志编译的概要报告。
“Read SELFSCAN log”(读SELFSCAN日志)选项用于读取类似二进制文件的SELFSCAN进度日志。对此日志的分析和解释参见第5.10节。此日志也可用于开发一个独立的分析工具。
“Repair SELFSCAN module”(修复SELFSCAN模块)命令在SELFSCAN包含空区段的时候使用,它既不改变代码,也不改变模块数据。如果SELFSCAN过程不能启动,或者SELFSCAN模块不能读取,在覆盖“原始”模块或企图读SELFSCAN模块并分析它的内容之前,应先尝试执行该命令。
由于微程序的特性,SELFSCAN不记录所有缺陷,因此SELFSCAN完成后需要执行带有一系列标准缺陷搜索过程的格式化操作(参见第5.8.1节)。