第 16 章 format 实用程序(参考)
本章介绍 format 实用程序的菜单和命令。
以下是本章中参考信息的列表。
有关何时使用 format 实用程序的概述,请参见format 实用程序。
有关使用 format 实用程序的建议和要求
您必须是超级用户或承担等效角色才能使用 format 实用程序。否则,尝试使用 format 实用程序时,将显示以下错误消息:
$ format
Searching for disks...done
No permission (or no disks found)!
|
使用 format 实用程序并需要保留现有数据时,请牢记以下原则:
format 菜单和命令说明
format 主菜单的显示与以下内容类似:
FORMAT MENU:
disk - select a disk
type - select (define) a disk type
partition - select (define) a partition table
current - describe the current disk
format - format and analyze the disk
fdisk - run the fdisk program (x86 only)
repair - repair a defective sector
label - write label to the disk
analyze - surface analysis
defect - defect list management
backup - search for backup labels
verify - read and display labels
save - save new disk/partition definitions
inquiry - show vendor, product and revision
volname - set 8-character volume name
!<cmd> - execute <cmd>, then return
quit
format>
|
下表描述了 format 实用程序的主菜单项。
表 16–1
format 实用程序的主菜单项说明
|
菜单项
|
命令或菜单?
|
说明
|
|
disk
|
命令
|
列出系统的所有驱动器。此外,还可用于选择要在后续操作中使用的磁盘。该磁盘称为当前磁盘。
|
|
type
|
命令
|
标识当前磁盘的制造商和型号。另外,还可显示已知驱动器类型列表。可用于为所有 SCSI-2 磁盘驱动器选择 Auto configure 选项。
|
|
partition
|
菜单
|
创建和修改片。有关更多信息,请参见partition 菜单。
|
|
current
|
命令
|
显示以下有关当前磁盘的信息:
-
设备名称和设备类型
-
柱面、备用柱面、磁头和扇区的数目
-
物理设备名称
|
|
format
|
命令
|
按照一定顺序使用以下信息源之一格式化当前磁盘:
-
在 format.dat 文件中找到的信息
-
来自自动配置过程的信息
-
不存在 format.dat 项时在提示符下键入的信息
此命令不适用于 IDE 磁盘。IDE 磁盘由制造商进行格式化。
|
|
fdisk
|
菜单
|
仅限于 x86 平台:运行 fdisk 程序可创建 Solaris fdisk 分区。
在容量超过 1 TB 且带有 EFI 标号的磁盘上,不能使用 fdisk 命令。
|
|
repair
|
命令
|
修复当前磁盘上的特定块。
|
|
label
|
命令
|
将新标号写入当前磁盘。
|
|
analyze
|
菜单
|
运行读取、写入和比较测试。有关更多信息,请参见analyze 菜单。
|
|
defect
|
菜单
|
检索并显示缺陷列表。有关更多信息,请参见defect 菜单。此功能不适用于 IDE 磁盘。IDE 磁盘会自动管理缺陷。
|
|
backup
|
命令
|
VTOC-搜索备份标号。
EFI-不支持。
|
|
verify
|
命令
|
显示以下有关当前磁盘的信息:
-
设备名称和设备类型
-
柱面、备用柱面、磁头和扇区的数目
-
分区表
|
|
save
|
命令
|
VTOC-保存新的磁盘和分区信息。
EFI-不适用。
|
|
inquiry
|
命令
|
仅限于 SCSI-显示当前磁盘的供应商、产品名称和修订版级别。
|
|
volname
|
命令
|
使用指定的由八个字符组成的新卷名标记磁盘。
|
|
quit
|
命令
|
退出 format 菜单。
|
partition 菜单
partition 菜单的显示与以下内容类似:
format> partition
PARTITION MENU:
0 - change `0' partition
1 - change `1' partition
2 - change `2' partition
3 - change `3' partition
4 - change `4' partition
5 - change `5' partition
6 - change `6' partition
7 - change `7' partition
select - select a predefined table
modify - modify a predefined partition table
name - name the current table
print - display the current table
label - write partition map and label to the disk
quit
partition>
|
下表描述了 partition 菜单项。
表 16–2
partition 菜单项的说明
|
子命令
|
说明
|
|
change `n' partition
|
用于指定新分区的以下信息:
|
|
select
|
用于选择预定义的分区表。
|
|
modify
|
用于更改分区表中的所有片。此命令优先于各个 change `x' partition 命令。
|
|
name
|
用于为当前分区表指定名称。
|
|
print
|
显示当前分区表。
|
|
label
|
将分区映射和标号写入当前磁盘。
|
|
quit
|
退出 partition 菜单。
|
x86: fdisk 菜单
fdisk 菜单仅出现在基于 x86 的系统上,其显示与以下内容类似。
format> fdisk
Total disk size is 14169 cylinders
Cylinder size is 2510 (512 byte) blocks
Cylinders
Partition Status Type Start End Length %
========= ====== ============ ===== === ====== ===
1 Active x86 Boot 1 9 9 0
2 Solaris2 10 14168 14159 100
SELECT ONE OF THE FOLLOWING:
1. Create a partition
2. Specify the active partition
3. Delete a partition
4. Change between Solaris and Solaris2 Partition IDs
5. Exit (update disk configuration and exit)
6. Cancel (exit without updating disk configuration)
Enter Selection:
|
下表描述了 fdisk 菜单项。
表 16–3 x86:
fdisk 菜单项的说明
|
菜单项
|
说明
|
|
Create a partition
|
创建 fdisk 分区。必须为每个 OS(如 Solaris 或 DOS)创建单独的分区。每个磁盘最多包含四个分区。系统会提示以磁盘百分比形式输入 fdisk 分区的大小。
|
|
Specify the active partition
|
用于指定要用于引导的分区。此菜单项可标识第一阶段引导程序查找第二阶段引导程序的位置。
|
|
Delete a partition
|
删除以前创建的分区。此命令将破坏分区中的所有数据。
|
|
Change between Solaris and Solaris2 Partition IDs
|
将分区 ID 从 130 (0x82) 更改为 191 (0xbf) 或执行相反操作。
|
|
Exit (update disk configuration and exit)
|
写入新版本的分区表并退出 fdisk 菜单。
|
|
Cancel (exit without updating disk configuration)
|
退出 fdisk 菜单,而不修改分区表。
|
analyze 菜单
analyze 菜单的显示与以下内容类似。
format> analyze
ANALYZE MENU:
read - read only test (doesn't harm SunOS)
refresh - read then write (doesn't harm data)
test - pattern testing (doesn't harm data)
write - write then read (corrupts data)
compare - write, read, compare (corrupts data)
purge - write, read, write (corrupts data)
verify - write entire disk, then verify (corrupts data)
print - display data buffer
setup - set analysis parameters
config - show analysis parameters
quit
analyze>
|
下表描述了 analyze 菜单项。
表 16–4
analyze 菜单项的说明
|
子命令
|
说明
|
|
read
|
读取当前磁盘上的每个扇区。缺省情况下会修复有缺陷的块。
|
|
refresh
|
读取当前磁盘上的数据然后再将数据写入磁盘,而不损害数据。缺省情况下会修复有缺陷的块。
|
|
test
|
将一组模式写入磁盘,而不损害数据。缺省情况下会修复有缺陷的块。
|
|
write
|
将一组模式写入磁盘,然后读回磁盘上的数据。破坏磁盘上的现有数据。缺省情况下会修复有缺陷的块。
|
|
compare
|
将一组模式写入磁盘,读回数据,然后将其与写缓冲区中的数据进行比较。破坏磁盘上的现有数据。缺省情况下会修复有缺陷的块。
|
|
purge
|
从磁盘中删除所有数据,以便不能通过任何方式检索数据。通过在整个磁盘(或磁盘的一部分)范围写入三种不同的模式来删除数据。 如果验证通过,则将在整个磁盘(或磁盘的一部分)范围内写入十六进制位模式。
缺省情况下会修复有缺陷的块。
|
|
verify
|
第一遍将特殊数据写入整个磁盘上的每个块。 第二遍读取并验证这些数据。破坏磁盘上的现有数据。缺省情况下会修复有缺陷的块。
|
|
print
|
显示读/写缓冲区中的数据。
|
|
setup
|
用于指定以下分析参数:
Analyze entire disk? yes
Starting block number: depends on drive
Ending block number: depends on drive
Loop continuously? no
Number of passes: 2
Repair defective blocks? yes
Stop after first error? no
Use random bit patterns? no
Number of blocks per transfer: 126 (0/n/nn)
Verify media after formatting? yes
Enable extended messages? no
Restore defect list? yes
Restore disk label? yes
|
|
config
|
显示当前分析参数。
|
|
quit
|
退出 analyze 菜单。
|
defect 菜单
defect 菜单的显示与以下内容类似:
format> defect
DEFECT MENU:
primary - extract manufacturer's defect list
grown - extract manufacturer's and repaired defects lists
both - extract both primary and grown defects lists
print - display working list
dump - dump working list to file
quit
defect>
|
下表描述了 defect 菜单项。
表 16–5
defect 菜单项说明
|
子命令
|
说明
|
|
primary
|
从磁盘驱动器读取制造商的缺陷列表并更新内存中的缺陷列表。
|
|
grown
|
读取产生的缺陷列表,然后更新内存中的缺陷列表。产生的缺陷是指在分析过程中检测到的缺陷。
|
|
both
|
读取制造商的缺陷列表和产生的缺陷列表。然后更新内存中的缺陷列表。
|
|
print
|
显示内存中的缺陷列表。
|
|
dump
|
将内存中的缺陷列表保存到文件中。
|
|
quit
|
退出 defect 菜单。
|
format.dat 文件
Solaris OS 附带的 format.dat 文件支持许多标准磁盘。如果 format.dat 文件中未列出您的磁盘驱动器,则可以执行以下操作:
如果将在整个站点中使用磁盘驱动器,则向 format.dat 文件添加项可以节省时间。要使用其他系统上的 format.dat 文件,请将该文件复制到每个将使用特定磁盘驱动器(已添加到 format.dat 文件中)的系统。
如果具有以下设备之一,则可能需要修改系统的 /etc/format.dat 文件:
注 –
请勿修改 /etc/format.dat 文件中的缺省项。如果要修改缺省项,请复制该项,并为该项指定不同的名称,再进行相应更改以避免混淆。
/etc/format.dat 不适用于带有 EFI 标号的磁盘。
format.dat 文件的内容
format.dat 包含 format 实用程序使用的磁盘驱动器信息。format.dat 文件中定义了以下三项:
format.dat 文件的语法
以下语法规则适用于 /etc/format.dat 文件:
-
井号 (#) 是注释字符。format 实用程序不会解释一行中在井号后面的任何文本。
-
format.dat 文件中的每个定义都出现在单独的逻辑行中。如果定义长度超过一行,则定义的所在行(最后一行除外)都必须以反斜杠 (\) 结束。
-
定义包含一系列赋值,这些赋值的左侧是标识符,右侧是一个或多个值。赋值运算符是等号 (=)。定义中的多个赋值必须以冒号 (:) 分隔。
-
format 实用程序会忽略空格。如果要所赋的值包含空格,请将整个值用双引号 (") 引起来。此语法将导致引号中的空格作为赋值的一部分保留下来。
-
有些赋值的右侧可能有多个值。请使用逗号分隔这些值。
format.dat 文件中的关键字
format.dat 文件包含启动 format 实用程序时该程序读取的磁盘定义。每个定义都以以下关键字之一开头:disk_type 或 partition。下表描述了这些关键字。
表 16–6
format.dat 文件的关键字说明
|
关键字
|
说明
|
|
disk_type
|
定义控制器和磁盘型号。每个 disk_type 定义都包含有关磁盘物理几何参数的信息。缺省数据文件包含 Solaris OS 支持的控制器和磁盘的定义。
仅当使用不支持的磁盘时,才需要添加新的 disk_type 定义。可以向数据文件中添加任意数目的 disk_type 定义。
|
|
partition
|
为特定磁盘类型定义分区表。分区表包含分区信息以及可在 format 实用程序中引用的名称。缺省的 format.dat 文件包含多种磁盘驱动器的缺省分区定义。如果在系统中的任何磁盘上重新创建了分区,请添加分区定义。可以向数据文件中添加任意数目的分区定义。
|
磁盘类型 (format.dat)
format.dat 文件中的 disk_type 关键字定义了控制器和磁盘型号。每个 disk_type 定义都包含有关磁盘物理几何参数的信息。缺省的 format.dat 文件包含 Solaris OS 支持的控制器和磁盘的定义。仅当使用不支持的磁盘时,才需要添加新的 disk_type。可以向数据文件中添加任意数目的 disk_type 定义。
可将磁盘类型名称指定给关键字本身。该名称出现在磁盘的标号中,并且在运行 format 实用程序时用于标识磁盘类型。 使用双引号将该名称引起来可保留名称中的所有空格。下表描述了在所有的 disk_type 定义中还必须被赋值的标识符。
表 16–7 所需的
disk_type 标识符 (
format.dat)
|
标识符
|
说明
|
|
ctlr
|
标识磁盘类型的控制器类型。当前,支持的值为 SCSI 和 ATA。
|
|
ncyl
|
指定磁盘类型中的数据柱面的数目。这将确定允许系统访问的逻辑磁盘柱面数目。
|
|
acyl
|
指定磁盘类型中的备用柱面的数目。这些柱面供 format 实用程序用于存储信息(如驱动器的缺陷列表)。应始终保留至少两个柱面进行备用。
|
|
pcyl
|
指定磁盘类型中的物理柱面的数目。此数字用于计算磁盘介质的范围。此数字通常等于 ncyl 加上 acyl。
|
|
nhead
|
指定磁盘类型中的磁头的数目。此数字用于计算磁盘介质的范围。
|
|
nsect
|
指定磁盘类型中每个磁道的数据扇区的数目。此数字用于计算磁盘介质的范围。请注意,此数字仅包括数据扇区。任何备件都不会反映在每个磁道的数据区段数目中。
|
|
rpm
|
指定磁盘类型的每分钟旋转次数。此信息将置于标签中,随后由文件系统用于计算文件数据的最佳保存位置。
|
其他标识符可能是必需的,具体取决于控制器。下表描述了 SCSI 控制器所需的标识符。
表 16–8 SCSI 控制器
format.dat 所需的
disk_type 标识符
|
标识符
|
说明
|
|
fmt_time
|
指定一个数字,用于指明格式化给定驱动器所需的时间。有关更多信息,请参见控制器手册。
|
|
cache
|
指定一个数字,用于控制 format 实用程序运行时执行的板载高速缓存操作。有关更多信息,请参见控制器手册。
|
|
trks_zone
|
指定一个数字,用于标识每个缺陷区域中存在的要在备用扇区映射中使用的磁道数。有关更多信息,请参见控制器手册。
|
|
asect
|
指定一个数字,用于标识给定缺陷区域中可用于备用映射的扇区。有关更多信息,请参见控制器手册。
|
示例 16–1 SCSI 控制器 (format.dat) 所需的 disk_type 标识符
以下是 disk_type 定义的示例:
disk_type = "SUN1.3G" \
: ctlr = SCSI : fmt_time = 4 \
: trks_zone = 17 : asect = 6 : atrks = 17 \
: ncyl = 1965 : acyl = 2 : pcyl = 3500 : nhead = 17 : nsect = 80 \
: rpm = 5400 : bpt = 44823
disk_type = "SUN2.1G" \
: ctlr = SCSI : fmt_time = 4 \
: ncyl = 2733 : acyl = 2 : pcyl = 3500 : nhead = 19 : nsect = 80 \
: rpm = 5400 : bpt = 44823
disk_type = "SUN2.9G" \
: ctlr = SCSI : fmt_time = 4 \
: ncyl = 2734 : acyl = 2 : pcyl = 3500 : nhead = 21 : nsect = 99 \
: rpm = 5400
|
分区表 (format.dat)
format.dat 文件中的分区表为特定磁盘类型定义了片表。
将分区表的名称指定给 format.dat 文件中的 partition 关键字。使用双引号将该名称引起来可保留名称中的所有空格。下表描述了所有分区表中必须赋值的标识符。
表 16–9 分区表 (
format.dat) 所需的标识符
|
标识符
|
说明
|
|
disk
|
为此分区表定义的 disk_type 的名称。此名称必须与 disk_type 定义中显示的完全相同。
|
|
ctlr
|
可与此分区表连接的磁盘控制器的类型。当前,对于 ATA 控制器,支持的值为 ATA;对于 SCSI 控制器,支持的值为 SCSI。另外,还必须为在 disk_type 定义中指定的 disk_type 定义此处指定的控制器类型。
|
片定义中的其他标识符描述了实际的分区信息。标识符是 0 到7 之间的数字。这些标识符是可选的。未显式指定的任何分区长度都设置为 0。其中每个标识符的值都是以逗号分隔的一对数字。第一个数字是分区的起始柱面。第二个数字是片中的扇区数目。
示例 16–2 分区表 (format.dat ) 所需的标识符
以下是一些片信息示例:
partition = "SUN1.3G" \
: disk = "SUN1.3G" : ctlr = SCSI \
: 0 = 0, 34000 : 1 = 25, 133280 : 2 = 0, 2672400 : 6 = 123, 2505120
partition = "SUN2.1G" \
: disk = "SUN2.1G" : ctlr = SCSI \
: 0 = 0, 62320 : 1 = 41, 197600 : 2 = 0, 4154160 : 6 = 171, 3894240
partition = "SUN2.9G" \
: disk = "SUN2.9G" : ctlr = SCSI \
: 0 = 0, 195426 : 1 = 94, 390852 : 2 = 0, 5683986 : 6 = 282, 5097708
|
为 format 实用程序指定备用数据文件
format 实用程序按一定顺序通过以下方法确定备用文件的位置:
-
如果使用 format -x 选项给定文件名称,则始终将该文件用作数据文件。
-
如果未指定 -x 选项,则 format 实用程序将搜索当前目录中名为 format.dat 的文件。如果该文件存在,则将其用作数据文件。
-
如果上述任一方法都无法产生数据文件,则 format 实用程序将使用 /etc/format.dat 文件作为数据文件。此文件是 Solaris OS 附带的,并且会始终提供此文件。
format 命令的输入规则
使用 format 实用程序时,需要提供各种信息。本节介绍这类信息的规则。有关在指定数据时使用 format 的帮助功能的信息,请参见获取有关 format 实用程序的帮助。
为 format 命令指定数字
format 实用程序中的多个位置都要求使用数字作为输入。必须指定相应数据,或从选项列表中选择一个数字。在任一情况下,帮助功能都会导致 format 显示预期的数字上限和下限。只需输入合适的数字即可。如果未将基数显式指定为数字的一部分(例如,0x 表示十六进制),则假定该数字采用十进制格式。
以下是整数输入的示例:
Enter number of passes [2]: 34
Enter number of passes [34] Oxf
|
为 format 命令指定块编号
每次要求指定磁盘块编号时,都可以使用两种方式来执行此操作:
-
将块编号指定为整数
-
采用柱面/磁头/扇区格式指定块编号
可以将该信息指定为表示逻辑块编号的整数。可以指定任何基数的编号,但缺省值为十进制。另外,还可以在此处使用最大值运算符(美元符号 $),以便 format 实用程序可以选择合适的值。SunOS 磁盘驱动器会在错误消息中使用逻辑块格式。
另一种指定块编号的方法是使用柱面/磁头/扇区格式。使用此方法时,必须显式指定块编号的三个逻辑组成部分:柱面、磁头和扇区值。这些值仍然为逻辑值。但是,可以使用这些值来定义与介质布局相关的磁盘区域。
如果未指定任何柱面/磁头/扇区编号,则假定该值为零。另外,还可以使用最大值运算符来代替任何编号。这样,format 实用程序即可选择合适的值。以下是一些柱面、磁头和扇区值的示例:
Enter defective block number: 34/2/3
Enter defective block number: 23/1/
Enter defective block number: 457//
Enter defective block number: 12345
Enter defective block number: Oxabcd
Enter defective block number: 334/$/2
Enter defective block number: 892//$
|
format 实用程序始终采用这两种格式显示块编号。另外,帮助功能也会采用这两种格式显示预期块编号的上限和下限。
指定 format 命令名称
只要 format 实用程序显示菜单提示,就需要将命令名称作为输入。可以缩写命令名称,只要键入的内容可充分唯一标识所需命令即可。
例如,使用 p 访问 format 菜单中的 partition 菜单。那么,键入 p 显示当前的片表。
format> p
PARTITION MENU:
0 - change `0' partition
1 - change `1' partition
2 - change `2' partition
3 - change `3' partition
4 - change `4' partition
5 - change `5' partition
6 - change `6' partition
7 - change `7' partition
select - select a predefined table
modify - modify a predefined partition table
name - name the current table
print - display the current table
label - write partition map and label to the disk
quit
partition> p
|
为 format 命令指定磁盘名称
在 format 实用程序的某些位置,必须指定一些名称。在这些情况下,可以自由指定名称所需的任何字符串。如果名称中包含空格,则必须使用双引号 (") 将整个名称引起来。否则,仅使用名称的第一个单词。
例如,如果要标识磁盘的特定分区表,则可以使用 partition 菜单中可用的 name 子命令:
partition> name
Enter table name (remember quotes): "new disk3"
|
获取有关 format 实用程序的帮助
format 实用程序提供了 format 实用程序每次要求输入时可以使用的帮助功能。通过键入问号 (?),可以请求有关要求的输入的帮助。format 实用程序可显示所需输入类型的简短说明。
如果在菜单提示下键入 ?,则将显示可用命令的列表。
与 format 实用程序关联的手册页包括以下信息: