系统管理指南:设备和文件系统

第 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

命令 

按照一定顺序使用以下信息源之一格式化当前磁盘: 

  1. format.dat 文件中找到的信息

  2. 来自自动配置过程的信息

  3. 不存在 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.dat 文件中的关键字

format.dat 文件包含启动 format 实用程序时该程序读取的磁盘定义。每个定义都以以下关键字之一开头:disk_typepartition。下表描述了这些关键字。

表 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 实用程序按一定顺序通过以下方法确定备用文件的位置:

  1. 如果使用 format -x 选项给定文件名称,则始终将该文件用作数据文件。

  2. 如果未指定 -x 选项,则 format 实用程序将搜索当前目录中名为 format.dat 的文件。如果该文件存在,则将其用作数据文件。

  3. 如果上述任一方法都无法产生数据文件,则 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 实用程序关联的手册页包括以下信息: