系统管理指南:高级管理

第 20 章 解决 UFS 文件系统不一致问题(任务)

本章介绍 fsck 错误消息以及为解决错误消息问题所能做出的可能响应。

以下是本章中信息的列表:

有关 fsck 命令以及如何使用该命令检查文件系统完整性的信息,请参见《系统管理指南:设备和文件系统》中的第 22  章 “检查 UFS 文件系统一致性(任务)”

新的 fsck 错误消息

Solaris 10 6/06:在此发行版中,运行 fsck 命令时显示的错误消息已更改。本节包括修改过的 fsck 错误消息。如果运行的版本低于 Solaris 10 6/06 发行版,请参阅本章中标记为 "Solaris 10" 的错误消息。有关当前发行版中所有 fsck 改进的详细说 明,请参见《系统管理指南:设备和文件系统》

fsck 错误消息

通常,fsck 命令在系统突然停机(其中未将最新文件系统更改写入磁盘)之后以非交互方式运行,以便整理文件系统。整理会自动修复所有基本的文件系统不一致问题,但不会尝试修复更严重的错误。整理文件系统时,fsck 命令将修复它所预期的突然停机所导致的不一致问题。对于更严重的情况,该命令将报告错误并终止。

以交互方式运行 fsck 命令时,它会报告发现的每个不一致问题并修复无害的错误。但对于更严重的错误,该命令将报告一致性问题并提示您选择响应。运行带有 -y- n 选项的 fsck 命令时,响应会预定义为执行或不执行 fsck 命令针对每种错误状态建议的缺省响应。

某些更正操作会导致数据丢失。数据丢失的数量和严重性可通过 fsck 诊断输出确定。

fsck 命令是一个多遍文件系统检查程序。每遍检查操作都将调用具有不同消息集的 fsck 命令的不同阶段。初始化之后,fsck 命令会对每个文件系统执行多遍操作,检查块和大小、路径名、连通性、引用计数和空闲块图(可能重新生成该图)。此外还会执行一些清除操作。

fsck 命令的 UFS 版本所执行的操作阶段(各遍操作)包括:

以下各节介绍在每个阶段中可能检测到的错误状态、生成的消息和提示以及可以做出的可能响应。

一般 fsck 错误消息中介绍了可能在多个阶段中出现的消息。对于其他消息,将根据消息产生的阶段按字母顺序分别加以介绍。

下表列出了 fsck 错误消息中包括的许多缩写。

表 20–1 错误消息缩写

缩写 

含义 

BLK

块编号 

DUP

重复的块编号 

DIR

目录名 

CG

柱面组 

MTIME

上次修改文件的时间 

UNREF

未引用 

许多消息还包括变量字段,例如 inode 编号,在本书中变量字段以斜体字表示,例如 inode-number。例如,以下屏幕消息:


INCORRECT BLOCK COUNT I=2529

显示为:


INCORRECT BLOCK COUNT I=inode-number

一般 fsck 错误消息

在初始化之后,任何阶段中都可能显示本节的错误消息。尽管这些消息提供了可供继续的选项,但通常最佳做法是将其视为致命错误。它们反映了严重的系统故障,应立即进行处理。遇到此类消息时,请通过输入 n(o) 终止程序。如果无法确定引起问题的原因,请与当地服务提供商或其他有资格的人员联系。


CANNOT SEEK: BLK disk-block-number (CONTINUE)

Oracle Solaris 10:


CANNOT SEEK: BLK block-number (CONTINUE)
原因

移动到文件系统中指定块编号 disk-block-number 的请求失败。此消息表示存在严重问题,很可能是硬件故障。

Oracle Solaris 10:移动到文件系统中指定块编号 block-number 的请求失败。此消息表示存在严重问题,很可能是硬件故障。

如果要继续进行文件系统检查,fsck 将重试该移动并显示无法移动的扇区编号的列表。如果块属于虚拟内存高速缓存存储区的一部分,fsck 将终止并显示致命 I/O 错误消息。

操作

如果磁盘遇到硬件问题,该问题将一直存在。再次运行 fsck,重新检查文件系统。

如果重新检查失败,请与当地服务提供商或其他有资格的人员联系。


CANNOT READ: DISK BLOCK disk-block-number: I/O ERROR 
 CONTINUE?

Oracle Solaris 10:


CANNOT READ: DISK BLOCK block-number: I/O ERROR 
 CONTINUE?
原因

读取文件系统中指定块编号 disk-block-number 的请求失败。此消息表示存在严重问题,可能是硬件故障。

Oracle Solaris 10:读取文件系统中指定块编号 block-number 的请求失败。此消息表示存在严重问题,可能是硬件故障。

如果要继续进行文件系统检查,fsck 将重试读取并显示无法读取的扇区编号列表。如果块属于虚拟内存高速缓存存储区的一部分,fsck 将终止并显示致命 I/O 错误消息。如果 fsck 尝试回写读取失败的一个块,则会显示以下消息:

WRITING ZERO'ED BLOCK sector-numbers TO DISK

操作

如果磁盘遇到硬件问题,该问题将一直存在。再次运行 fsck,重新检查文件系统。如果重新检查失败,请与当地服务提供商或其他有资格的人员联系。


CANNOT WRITE: BLK disk-block-number (CONTINUE)

Oracle Solaris 10:


CANNOT WRITE: BLK block-number (CONTINUE)
原因

写入文件系统中指定块编号 disk-block-number 的请求失败。

如果要继续进行文件系统检查,fsck 将重试写入并显示无法写入的扇区编号列表。如果块属于虚拟内存高速缓存存储区的一部分,fsck 将终止并显示致命 I/O 错误消息。

Oracle Solaris 10:写入文件系统中指定块编号 block-number 的请求失败。

如果要继续进行文件系统检查,fsck 将重试写入并显示无法写入的扇区编号列表。如果块属于虚拟内存高速缓存存储区的一部分,fsck 将终止并显示致命 I/O 错误消息。

操作

磁盘可能设置了写保护。检查驱动器上的写保护锁。如果磁盘出现硬件问题,该问题可能一直存在。再次运行 fsck,重新检查文件系统。如果写保护不会导致问题或者重新检查失败,请与当地服务提供商或其他有资格的人员联系。

初始化阶段的 fsck 消息

在初始化阶段,将检查命令行语法。在可以执行文件系统检查之前,fsck 将设置表并打开文件。

本节中的消息与命令行选项、内存请求、打开文件、文件状态、文件系统大小检查和创建临时文件所导致的错误状态相关。当 fsck 整理文件系统时,所有此类初始化错误都会使其终止。


Can't roll the log for device-name.

DISCARDING THE LOG MAY DISCARD PENDING TRANSACTIONS.
DISCARD THE LOG AND CONTINUE?
原因

fsck 在检查文件系统错误之前,无法刷新日志 UFS 文件系统的事务日志。

操作

回答是意味着在日志中但尚未应用于文件系统的文件系统操作将丢失。在此情况下,fsck 将运行它通常运行的相同检查,并在阶段 5 中提出以下问题:


FREE BLK COUNT(S) WRONG IN SUPERBLK (SALVAGE)

在此时回答是将回收用于日志的块。下次在启用日志的情况下挂载文件系统时,将重新创建日志。

回答否将保留日志并退出,但文件系统不可挂载。


bad inode number inode-number to ginode
原因

由于不存在 inode inode-number 而发生内部错误。fsck 退出。

操作

请与当地服务提供商或其他有资格的人员联系。


cannot alloc size-of-block map bytes for blockmap
cannot alloc size-of-free map bytes for freemap
cannot alloc size-of-state map bytes for statemap
cannot alloc size-of-lncntp bytes for lncntp
原因

对内部表的内存请求失败。fsck 终止。此消息表示存在严重的系统故障,应立即进行处理。如果其他进程正在使用大量系统资源,则可能会出现此情况。

操作

中止其他进程可能会解决该问题。如果未解决,请与当地服务提供商或其他有资格的人员联系。


Can't open checklist file: filename
原因

无法打开文件系统核对表文件 filename(通常为 /etc/vfstab)以供读取。fsck 终止。

操作

检查该文件是否存在以及其访问模式是否允许读取访问。


Can't open filename
原因

fsck 无法打开文件系统 filename。以交互方式运行时,fsck 将忽略此文件系统并继续检查给定的下一个文件系统。

操作

检查是否允许对文件系统的原始设备文件进行读取和写入访问。


Can't stat root
原因

对有关根目录的统计信息的 fsck 请求失败。fsck 终止。

操作

此消息表示存在严重的系统故障。请与当地服务提供商或其他有资格的人员联系。


Can't stat filename
Can't make sense out of name filename
原因

对有关文件系统 filename 的统计信息的 fsck 请求失败。以交互方式运行时,fsck 将忽略此文件系统并继续检查给定的下一个文件系统。

操作

检查该文件系统是否存在并检查其访问模式。


filename: (NO WRITE)
原因

已指定 -n 选项,或者 fsck 无法打开文件系统 filename 以供写入。当 fsck 以禁止写入模式运行时,将显示所有诊断消息,但 fsck 不会尝试进行任何修复。

操作

如果未指定 -n,请检查所指定文件的类型。它可能是一个常规文件的名称。


IMPOSSIBLE MINFREE=percent IN SUPERBLOCK (SET TO DEFAULT)
原因

超级块最小空间百分比大于 99% 或小于 0%。

操作

要将 minfree 参数设置为缺省的 10%,请在缺省提示符下键入 y。要忽略该错误状态,请在缺省提示符下键入 n


filename: BAD SUPER BLOCK: message
USE AN ALTERNATE SUPER-BLOCK TO SUPPLY NEEDED INFORMATION;
e.g., fsck[-f ufs] -o b=# [special ...]
where # is the alternate superblock.  See fsck_ufs(1M)
原因

超级块已损坏。

操作

可能显示以下消息之一:


CPG OUT OF RANGE
FRAGS PER BLOCK OR FRAGSIZE WRONG
INODES PER GROUP OUT OF RANGE
INOPB NONSENSICAL RELATIVE TO BSIZE 
MAGIC NUMBER WRONG 
NCG OUT OF RANGE 
NCYL IS INCONSISTENT WITH NCG*CPG 
NUMBER OF DATA BLOCKS OUT OF RANGE
NUMBER OF DIRECTORIES OUT OF RANGE
ROTATIONAL POSITION TABLE SIZE OUT OF RANGE
SIZE OF CYLINDER GROUP SUMMARY AREA WRONG
SIZE TOO LARGE 
BAD VALUES IN SUPERBLOCK

尝试使用备用超级块重新运行 fsck。最佳选择是指定块 32。通过在分区中运行 newfs -N 命令可以找到超级块的备用副本。务必要指定 -N 选项;否则,newfs 将覆写现有的文件系统。


UNDEFINED OPTIMIZATION IN SUPERBLOCK (SET TO DEFAULT)
原因

超级块优化参数既不是 OPT_TIME 也不是 OPT_SPACE

操作

要最大程度地减少在文件系统中执行操作的时间,请在 SET TO DEFAULT 提示符下键入 y。要忽略此错误状态,请键入 n

阶段 1:检查块和大小消息

此阶段检查 inode 列表。它会报告在以下情况下遇到的错误状态:

整理文件系统时,此阶段中除了 INCORRECT BLOCK COUNTPARTIALLY TRUNCATED INODEPARTIALLY ALLOCATED INODEUNKNOWN FILE TYPE 之外的所有错误都会终止 fsck

阶段 1 中可能出现以下消息(按字母顺序):


block-number BAD I=inode-number
原因

Inode inode-number 包含一个块编号 block-number,其编号小于文件系统中第一个数据块的编号或大于文件系统中最后一个块的编号。如果 inode inode-number 有太多的块编号超出文件系统范围,则此错误状态可能会在阶段 1 中生成 EXCESSIVE BAD BLKS 错误消息。此错误状态会在阶段 2 和 4 中生成 BAD/DUP 错误消息。

操作

N/A


BAD MODE: MAKE IT A FILE?
原因

给定 inode 的状态都设置为 1,表示文件系统损坏。除非此消息在 fsck -y 运行后重复显示,否则此消息不表示物理磁盘损坏。

操作

键入 y,以便将 inode 重新初始化为合理值。


BAD STATE state-number TO BLKERR
原因

内部错误使 fsck 状态图变得杂乱,因此它会显示不可能的值 state-numberfsck 将立即退出。

操作

请与当地服务提供商或其他有资格的人员联系。


fragment-number DUP I=inode-number

Oracle Solaris 10:


block-number DUP I=inode-number
原因

Inode inode-number 包含一个块编号 fragment-number,该块编号已被该 inode 或其他 inode 请求。如果 inode inode-number 具有太多已被该 inode 或其他 inode 请求的块编号,此错误状态可能会在阶段 1 中生成 EXCESSIVE DUP BLKS 错误消息。此错误状态将调用阶段 1B 并在阶段 2 和 4 中生成 BAD/DUP 错误消息。

Oracle Solaris 10:Inode inode-number 包含一个块编号 block-number,该块编号已被该 inode 或其他 inode 请求。如果 inode inode-number 具有太多已被该 inode 或其他 inode 请求的块编号,此错误状态可能会在阶段 1 中生成 EXCESSIVE DUP BLKS 错误消息。此错误状态将调用阶段 1B 并在阶段 2 和 4 中生成 BAD/DUP 错误消息。

操作

N/A


DUP TABLE OVERFLOW (CONTINUE)
原因

fsck 无法分配用于跟踪重复片段的内存。如果指定了 -o p 选项,程序将终止。

Oracle Solaris 10:包含重复块编号的 fsck 的内部表中没有更多空间。如果指定了 -o p 选项,程序将终止。

操作

要继续该程序,请在 CONTINUE 提示符下键入 y。如果出现此错误,则无法进行完整的文件系统检查。如果找到其他的重复片段,将重复出现此错误状态。增加可用的虚拟内存量(通过中止一些进程,增加交换空间)并再次运行 fsck,以重新检查文件系统。要终止该程序,请键入 n

Oracle Solaris 10:要继续该程序,请在 CONTINUE 提示符下键入 y。如果出现此错误,则无法进行完整的文件系统检查。如果找到其他重复块,将重复出现此错误状态。增加可用的虚拟内存量(通过中止一些进程,增加交换空间)并再次运行 fsck,以重新检查文件系统。要终止该程序,请键入 n


EXCESSIVE BAD FRAGMENTS I=inode-number (CONTINUE)

Oracle Solaris 10:


EXCESSIVE BAD BLOCKS I=inode-number (CONTINUE)
原因

太多(通常多于 10 个)片段表示磁盘地址无效。如果指定 -o p(整理)选项,程序将终止。

Oracle Solaris 10:太多(通常多于 10 个)块的编号小于文件系统中第一个数据块的编号或大于文件系统中与 inode inode-number 关联的最后一个块的编号。如果指定 -o p(整理)选项,程序将终止。

操作

要继续该程序,请在 CONTINUE 提示符下键入 y。如果出现此错误,则无法进行完整的文件系统检查。应再次运行 fsck,以重新检查文件系统。要终止该程序,请键入 n


EXCESSIVE DUP BLKSDUPLICATE FRAGMENTS I=inode-number (CONTINUE)

Oracle Solaris 10:


EXCESSIVE DUP BLKS I=inode-number (CONTINUE)
原因

该 inode、其他 inode 或可用列表已请求太多(通常多于 10 个)片段。如果指定了 -o p 选项,程序将终止。

Oracle Solaris 10:该 inode、其他 inode 或可用列表已请求太多(通常多于 10 个)块。如果指定了 -o p 选项,程序将终止。

操作

要继续该程序,请在 CONTINUE 提示符下键入 y。如果出现此错误,则无法进行完整的文件系统检查。应再次运行 fsck,以重新检查文件系统。要终止该程序,请键入 n


INCORRECT DISK BLOCK COUNT I=inode-number (number-of-BAD-DUP-or-missing-blocks
should be number-of-blocks-in-filesystem) (CORRECT)

Oracle Solaris 10:


INCORRECT BLOCK COUNT I=inode-number (number-of-BAD-DUP-or-missing-blocks
should be number-of-blocks-in-filesystem) (CORRECT)
原因

inode inode-number 的磁盘块计数不正确。整理时,fsck 将更正该计数。

Oracle Solaris 10:inode inode-number 的块计数是 number-of-BAD-DUP-or-missing-blocks,但应该是 number-of-blocks-in-filesystem。整理时,fsck 将更正该计数。

操作

要按 number-of-blocks-in-file 更正 inode inode-number 的磁盘块计数,请在 CORRECT 提示符下键入 y

Oracle Solaris 10:要用 number-of-blocks-in-filesystem 替换 inode inode-number 的块计数,请在 CORRECT 提示符下键入 y。要终止该程序,请键入 n


LINK COUNT TABLE OVERFLOW (CONTINUE)
原因

对于包含链接计数为零的已分配 inode 的 fsck 而言,内部表内已没有可用空间。如果指定了 -o p(整理)选项,程序将退出,必须手动完成 fsck

操作

要继续该程序,请在 CONTINUE 提示符下键入 y。如果找到具有零链接计数的其他已分配 inode,则会重复出现此错误状态。如果出现此错误,则无法进行完整的文件系统检查。应再次运行 fsck,以重新检查文件系统。通过中止一些进程或增加交换空间来增加可用虚拟内存,然后再次运行 fsck。要终止该程序,请键入 n


PARTIALLY ALLOCATED INODE I=inode-number (CLEAR)
原因

未分配 Inode inode-number,也未取消其分配。如果指定了 -o p(整理)选项,则会清除该 inode。

操作

要通过清空内容来取消分配 inode inode-number,请键入 y。这可能会在阶段 2 中针对指向此 inode 的每个目录项生成 UNALLOCATED 错误状态。要忽略该错误状态,请键入 n。仅当要采取其他措施来修复问题时,才可以不做出响应。


PARTIALLY TRUNCATED INODE I=inode-number (SALVAGE)
原因

fsck 发现大小小于为其分配的片段数的 inode inode-number。仅当系统在截断文件的过程中崩溃时,才会出现此情况。整理文件系统时,fsck 将以指定大小完成截断。

Oracle Solaris 10:fsck 发现 inode inode-number 的大小小于为其分配的块数。仅当系统在截断文件的过程中崩溃时,才会出现此情况。整理文件系统时,fsck 将以指定大小完成截断。

操作

要以 inode 中指定的大小完成截断, 请在 SALVAGE 提示符下键入 y。要忽略此错误状态,请键入 n


UNKNOWN FILE TYPE I=inode-number (CLEAR)
原因

inode inode-number 的模式字表明,该 inode 不是管道、字符设备、块设备、常规文件、符号链接、FIFO 文件或目录 inode。如果指定了 -o p 选项,则会清除 inode。

Oracle Solaris 10:inode inode-number 的模式字表明,该 inode 不是管道、特殊字符 inode、特殊块 inode、常规 inode、符号链接、FIFO 文件或目录 inode。如果指定了 -o p 选项,则会清除 inode。

操作

要通过清空其内容来取消分配 inode inode-number(这将导致阶段 2 中指向此 inode 的每个目录项都出现 UNALLOCATED 错误状态),请在 CLEAR 提示符下键入 y。要忽略此错误状态,请键入 n

Oracle Solaris 10:阶段 1B:重新扫描更多 DUPS 消息

本节包含当前发行版中的阶段 1B fsck 消息。

在文件系统中找到重复片段时,将显示此消息:


fragment DUP I=inode-number
原因

Inode inode-number 包含已由该 inode 或其他 inode 请求的片段编号 fragment-number。此错误状态会在阶段 2 中生成 BAD/DUP 错误消息。通过检查此错误状态和阶段 1 中的 DUP 错误状态,可以确定具有重复片段的 inode。在 fsck 运行时生成的重复片段报告可以简化此操作。

操作

发现重复块时,将重新扫描文件系统,以查找以前请求过该块的 inode。

阶段 1B:重新扫描更多 DUPS 消息

本节包含在 Oracle Solaris 10 发行版和其他支持的 Solaris 发行版中显示的 fsck 消息。

在文件系统中发现重复块时,将显示此消息:


block-number DUP I=inode-number
原因

Inode inode-number 包含已由该 inode 或其他 inode 请求的块编号 block-number。此错误状态会在阶段 2 中生成 BAD/DUP 错误消息。通过检查此错误状态和阶段 1 中的 DUP 错误状态,可以确定具有重复块的 inode。

操作

发现重复块时,将重新扫描文件系统,以查找以前请求过该块的 inode。

阶段 2:检查路径名消息

此阶段将删除指向阶段 1 和 1B 中所找到的坏 inode 的目录项。它将报告下列原因所导致的错误状态:

整理(-o -p 选项)文件系统时,此阶段中的所有错误都会终止 fsck,但与不是块大小倍数的目录、重复块和坏块、超出范围的 inode 以及多余的硬链接相关的错误除外。

阶段 2 中可能出现以下消息(按字母顺序):


BAD INODE state-number TO DESCEND
原因

fsck 内部错误将一个无效状态 state-number 传递给由文件系统目录结构向下派生的例程。fsck 退出。

操作

如果显示此错误消息,请与当地服务提供商或其他有资格的人员联系。


BAD INODE NUMBER FOR '.' I=inode-number OWNER=UID MODE=file-mode 
SIZE=file-size MTIME=modification-time DIR=filename (FIX)
原因

找到一个目录 inode-number,其用于 "." 的 inode 编号不等于 inode-number

操作

要更改 "." 的 inode 编号以使其等于 inode-number,请在 FIX 提示符下键入 y。要使 "." 的 inode 编号保持不变,请键入 n


BAD INODE NUMBER FOR '..' I=inode-number OWNER=UID MODE=file-mode 
SIZE=file-size MTIME=modification-time DIR=filename (FIX)
原因

找到一个目录 inode-number,其用于 ".." 的 inode 编号不等于 inode-number 的父级。

操作

要更改 ".." 的 inode 编号以使其等于 inode-number 的父级,请在 FIX 提示符下键入 y。(请注意,根 inode 中的 ".." 指向本身。)要使 ".." 的 inode 编号保持不变,请 键入 n


BAD RETURN STATE state-number FROM DESCEND
原因

fsck 内部错误从文件系统目录结构向下派生的例程中返回不可能的状态 state-numberfsck 退出。

操作

如果显示此消息,请与当地服务提供商或其他有资格的人员联系。


BAD STATE state-number FOR ROOT INODE
原因

内部错误为根 inode 指定了不可能的状态 state-numberfsck 退出。

操作

如果显示此错误消息,请与当地服务提供商或其他有资格的人员联系。


BAD STATE state-number FOR INODE=inode-number
原因

内部错误为 inode inode-number 指定了不可能的状态 state-numberfsck 退出。

操作

如果显示此错误消息,请与当地服务提供商或其他有资格的人员联系。


DIRECTORY TOO SHORT I=inode-number OWNER=UID MODE=file-mode 
SIZE=file-size MTIME=modification-time DIR=filename (FIX)
原因

发现大小 file-size 小于最小目录大小的目录 filename。此时将显示属主 UID、模式 file-mode、大小 file-size、修改时间 modification-time 和目录名称 filename

操作

要将目录的大小增大至最小目录大小,请在 FIX 提示符下键入 y。要忽略此目录,请键入 n


DIRECTORY filename: LENGTH file-size NOT MULTIPLE OF disk-block-size (ADJUST)

Oracle Solaris 10:


DIRECTORY filename: LENGTH file-size NOT MULTIPLE OF block-number (ADJUST)
原因

找到一个目录 filename,其大小 file-size 不是目录块大小 disk-block-size 的倍数。

Oracle Solaris 10:

找到一个目录 filename,其大小 file-size 不是目录块大小 block-number 的倍数。

操作

要将长度舍入为合适的磁盘块大小,请键入 y。整理文件系统(-o p 选项)时,fsck 只显示警告并调整目录。要忽略此状态,请键入 n

Oracle Solaris 10:

要将长度舍入为合适的块大小,请键入 y。整理文件系统(-o p 选项)时,fsck 只显示警告并调整目录。要忽略此状态,请键入 n


DIRECTORY CORRUPTED I=inode-number OWNER=UID MODE=file-mode 
SIZE=file-size MTIME=modification-time DIR=filename (SALVAGE)
原因

找到了具有不一致的内部状态的目录。

操作

要丢弃达到下一目录边界(通常为 512 字节边界)的所有项,请在 SALVAGE 提示符下键入 y。此极端操作最多可丢弃 42 个项。仅在其他恢复努力失败之后,才能采取此操作。要跳到下一个目录边界并继续阅读,但不修改目录,请键入 n


DUP/BAD I=inode-number OWNER=O MODE=M SIZE=file-size 
MTIME=modification-time TYPE=filename (REMOVE)
原因

阶段 1 或阶段 1B 发现与目录或文件项 filename、inode inode-number 相关的重复片段或坏片段。此时将显示属主 UID、模式 file-mode、大小 file-size、修改时间 modification-time 以及目录名称或文件名 filename。如果指定了 -op(整理)选项,则会删除重复/坏片段。

Oracle Solaris 10:

阶段 1 或阶段 1B 发现与目录或文件项 filename、inode inode-number 相关的重复块或坏块。此时将显示属主 UID、模式 file-mode、大小 file-size、修改时间 modification-time 以及目录名称或文件名 filename。如果指定了 -op(整理)选项,则会删除重复/坏块。

操作

要删除该目录或文件项 filename,请在 REMOVE 提示符下键入 y。要忽略此错误状态,请键入 n


DUPS/BAD IN ROOT INODE (REALLOCATE)
原因

阶段 1 或阶段 1B 在文件系统的根 inode(inode 编号 20)中发现重复片段或坏片段。

Oracle Solaris 10:

阶段 1 或阶段 1B 在文件系统的根 inode(通常为 inode 编号 2)中发现重复块或坏块。

操作

要清除根 inode 的现有内容并对其重新分配,请在 REALLOCATE 提示符下键入 y。通常在根 inode 中找到的文件和目录将在阶段 3 中恢复,并被放入 lost+found 目录中。如果尝试分配根时失败,fsck 将退出并显示以下消息: CANNOT ALLOCATE ROOT INODE。键入 n 获取 CONTINUE 提示符。键入 y 以对 CONTINUE 提示符做出响应,忽略根 inode 中的 DUPS/BAD 错误状态并继续运行文件系统检查。如果根 inode 不正确,则可能会生成许多其他错误消息。键入 n 终止程序。


EXTRA '.' ENTRY I=inode-number OWNER=UID MODE=file-mode 
SIZE=file-size MTIME=modification-time DIR=filename (FIX)
原因

找到一个 "." 有多个项的目录 inode-number

操作

要删除 "." 的多余项,请在 FIX 提示符下键入 y。要使该目录保持不变,请键入 n


EXTRA '..' ENTRY I=inode-number OWNER=UID MODE=file-mode 
SIZE=file-size MTIME=modification-time DIR=filename (FIX)
原因

找到一个 ".."(父目录)有多个项的目录 inode-number。

操作

要删除 ".."(父目录)的多余项,请在 FIX 提示符下键入 y。要使该目录保持不变,请键入 n


hard-link-number IS AN EXTRANEOUS HARD LINK TO A DIRECTORY filename (REMOVE)
原因

fsck 发现链接到目录 filename 的多余硬链接 hard-link-number。整理(-o p 选项)时,fsck 将忽略多余硬链接。

操作

要删除多余项 hard-link-number,请在 REMOVE 提示符下键入 y。要忽略该错误状态,请键入 n


inode-number OUT OF RANGE I=inode-number NAME=filename (REMOVE)
原因

目录项 filename 有一个 inode 编号 inode-number 大于 inode 列表的最后一个数。如果指定了 -p(整理)选项,则会自动删除该 inode。

操作

要删除目录项 filename,请在 REMOVE 提示符下键入 y。要忽略该错误状态,请键入 n


MISSING '.' I=inode-number OWNER=UID MODE=file-mode SIZE=file-size 
MTIME=modification-time DIR=filename (FIX)
原因

找到一个第一项(用于 "." 的项)尚未分配的目录 inode-number

操作

要为 "." 生成一个 inode 编号等于 inode-number 的项,请在 FIX 提示符下键入 y。要使该目录保持不变,请键入 n


MISSING '.' I=inode-number OWNER=UID MODE=file-mode SIZE=file-size 
MTIME=modification-time DIR=filename CANNOT FIX, FIRST ENTRY IN 
DIRECTORY CONTAINS filename
原因

找到一个第一项为 filename 的目录 inode-numberfsck 无法解决此问题。

操作

如果显示此错误消息,请与当地服务提供商或其他有资格的人员联系。


MISSING '.' I=inode-number OWNER=UID MODE=file-mode SIZE=file-size 
MTIME=modification-time DIR=filename CANNOT FIX, INSUFFICIENT 
SPACE TO ADD '.'
原因

找到一个第一项不是 "." 的目录 inode-numberfsck 无法解决此问题。

操作

如果显示此错误消息,请与当地服务提供商或其他有资格的人员联系。


MISSING '..' I=inode-number OWNER=UID MODE=file-mode SIZE=file-size 
MTIME=modification-time DIR=filename (FIX)
原因

找到一个第二项尚未分配的目录 inode-number

操作

要为 ".." 生成一个 inode 编号等于 inode-number 的父级的项,请在 FIX 提示符下键入 y。(请注意,根 inode 中的 ".." 指向本身。)要使该目录保持不变,请键入 n


MISSING '..' I=inode-number OWNER=UID MODE=file-mode SIZE=file-size 
MTIME=modification-time DIR=filename CANNOT FIX, SECOND ENTRY IN 
DIRECTORY CONTAINS filename
原因

找到一个第二项为 filename 的目录 inode-numberfsck 无法解决此问题。

操作

如果显示此错误消息,请与当地服务提供商或其他有资格的人员联系。


MISSING '..' I=inode-number OWNER=UID MODE=file-mode SIZE=file-size 
MTIME=modification-time DIR=filename CANNOT FIX, INSUFFICIENT SPACE 
TO ADD '..'
原因

找到一个第二项不是 ".."(父目录)的目录 inode-number。fsck 无法解决此问题。

操作

如果显示此错误消息,请与当地服务提供商或其他有资格的人员联系。


NAME TOO LONG filename
原因

发现一个超长的路径名,这通常表示文件系统名称空间中的循环。如果特权用户对目录创建了循环链接,则会出现此错误。

操作

删除循环链接。


ROOT INODE UNALLOCATED (ALLOCATE)
原因

根 inode(通常为 inode 编号 2)没有分配模式位。

操作

要将 inode 2 分配为根 inode,请在 ALLOCATE 提示符下键入 y。通常在根 inode 中找到的文件和目录将在阶段 3 中恢复,并被放入 lost+found 目录中。如果尝试分配根 inode 时失败,fsck 将显示此消息并退出: CANNOT ALLOCATE ROOT INODE。要终止该程序,请键入 n


ROOT INODE NOT DIRECTORY (REALLOCATE)
原因

文件系统的根 inode(通常为 inode 编号 2)不是目录 inode。

操作

要清除根 inode 的现有内容并对其重新分配,请在 REALLOCATE 提示符下键入 y。通常在根 inode 中找到的文件和目录将在阶段 3 中恢复,并被放入 lost+found 目录中。如果尝试分配根 inode 时失败,fsck 将显示此消息并退出: CANNOT ALLOCATE ROOT INODE。要使 fsck 提供带 FIX 的提示,请键入 n


UNALLOCATED I=inode-number OWNER=UID MODE=file-mode SIZE=file-size 
MTIME=modification-time type=filename(REMOVE)
原因

目录或文件项 filename 指向未分配的 inode inode-number。此时将显示属主 UID、模式 file-mode、大小 file-size、修改时间 modification-time 和文件名 filename

操作

要删除目录项 filename,请在 REMOVE 提示符下键入 y。要忽略该错误状态,请键入 n


ZERO LENGTH DIRECTORY I=inode-number OWNER=UID MODE=file-mode 
SIZE=file-size MTIME=modification-time DIR=filename (REMOVE)
原因

目录项 filename 的大小 file-size 为零。此时将显示属主 UID、模式 file-mode、大小 file-size、修改时间 modification-time 和目录名称 filename

操作

要删除目录项 filename,请在 REMOVE 提示符下键入 y。这将导致阶段 4 中出现 BAD/DUP 错误消息。要忽略该错误状态,请键入 n

阶段 3:检查连通性消息

此阶段将检查在阶段 2 中检查的目录,并报告以下原因所导致的错误状态:

阶段 3 中可能出现以下消息(按字母顺序):


BAD INODE state-number TO DESCEND
原因

内部错误导致将不可能的状态 state-number 传递给从文件系统目录结构向下派生的例程。fsck 退出。

操作

如果出现此情况,请与当地服务提供商或其他有资格的人员联系。


DIR I=inode-number1 CONNECTED. PARENT WAS I=inode-number2
原因

这是一条建议性消息,表明一个目录 inode inode-number1 已成功连接到 lost+found 目录。目录 inode inode-number1 的父级 inode inode-number2 已由 lost+found 目录的 inode 编号替换。

操作

N/A


DIRECTORY filename LENGTH file-size NOT MULTIPLE OF disk-block-size (ADJUST)

Oracle Solaris 10:


DIRECTORY filename LENGTH file-size NOT MULTIPLE OF block-number (ADJUST)
原因

发现一个目录 filename,其大小 file-size 不是目录块大小 B 的倍数(如果不在阶段 2 中进行调整,则阶段 3 中会重复出现此情况。)

操作

要将长度舍入为合适的磁盘块大小,请在 ADJUST 提示符下键入 y。整理时,fsck 将显示一条警告并调整目录。要忽略此错误状态,请键入 n

Oracle Solaris 10:

要将长度舍入为合适的块大小,请在 ADJUST 提示符下键入 y。整理时,fsck 将显示一条警告并调整目录。要忽略此错误状态,请键入 n


lost+found IS NOT A DIRECTORY (REALLOCATE)
原因

用于 lost+found 的项不是目录。

操作

要分配一个目录 inode 并更改 lost+found 目录以引用该 inode,请在 REALLOCATE 提示符下键入 ylost+found 目录引用的上一个 inode 未清除,它将作为非引用 inode 回收或在此阶段的稍后部分调整其链接计数。无法创建 lost+found 目录时,将会显示以下消息:SORRY. CANNOT CREATE lost+found DIRECTORY,并放弃尝试链接到已丢失的 inode(这将在阶段 4 中生成 UNREF 错误消息)。要放弃尝试链接到已丢失的 inode(这 将在阶段 4 中生成 UNREF 错误消息),请键入n


NO lost+found DIRECTORY (CREATE)
原因

文件系统的根目录中没有 lost+found 目录。整理时,fsck 将尝试创建一个 lost+found 目录。

操作

要在文件系统的根目录中创建一个 lost+found 目录,请在 CREATE 提示符下键入 y。这可能会生成消息 NO SPACE LEFT IN / (EXPAND)。如果无法创建 lost+found 目录,fsck 将显示以下消息:SORRY. CANNOT CREATE lost+found DIRECTORY,并放弃尝试链接到已丢失的 inode。这反过来会在稍后在阶段 4 中生成 UNREF 错误消息。要放弃尝试链接到已丢失的 inode,请键入 n。


NO SPACE LEFT IN /lost+found (EXPAND)
原因

由于没有可用空间,因此无法将另一项添加到文件系统根目录的 lost+found 目录中。整理时,fsck 将扩展 lost+found 目录。

操作

要扩展 lost+found 目录以便为新项留出空间,请在 EXPAND 提示符下键入 y。如果尝试扩展时失败,fsck 将显示:SORRY. NO SPACE IN lost+found DIRECTORY,并放弃将文件链接到 lost+found 目录的请求。此错误会在稍后在阶段 4 中生成 UNREF 错误消息。删除 lost+found 目录中的任何不必要项。整理生效时,此错误将终止 fsck。要放弃尝试链接到已丢失的 inode,请键入 n


UNREF DIR I=inode-number OWNER=UID MODE=file-mode SIZE=file-size 
MTIME=modification-time (RECONNECT)
原因

遍历文件系统时,目录 inode inode-number 未连接到目录项。此时将显示属主 UID、模式 file-mode、大小 file-size 以及目录 inode inode-number 的修改时间 modification-time。整理时,如果目录大小不为零,fsck 将重新连接到非空目录 inode。否则,fsck 将清除该目录 inode。

操作

要将目录 inode inode-number 重新连接到 lost+found 目录,请在 RECONNECT 提示符下键入 y。如果目录重新连接成功,则会显示 CONNECTED 消息。否则,将显示一条 lost+found 错误消息。要忽略此错误状态,请键入 n。此错误会导致阶段 4 中出现 UNREF 错误状态。

阶段 4:检查引用计数消息

此阶段将检查在阶段 2 和 3 中获得的链接计数信息。它将报告下列原因所导致的错误状态:

整理文件系统时,此阶段的所有错误(lost+found 目录中空间不足的错误除外)都可以更正。

阶段 4 中可能出现以下消息(按字母顺序):


BAD/DUP type I=inode-number OWNER=UID MODE=file-mode SIZE=file-size 
MTIME=modification-time (CLEAR)
原因

阶段 1 或阶段 1B 发现与文件或目录 inode inode-number 相关的重复片段或坏片段。此时将显示属主 UID、模式 file-mode、大小 file-size 以及 inode inode-number 的修改时间 modification-time

Oracle Solaris 10:

阶段 1 或阶段 1B 发现与文件或目录 inode inode-number 相关的重复块或坏块。此时将显示属主 UID、模式 file-mode、大小 file-size 以及 inode inode-number 的修改时间 modification-time

操作

要通过清空其内容来取消分配 inode inode-number,请在 CLEAR 提示符下键入 y。要忽略此错误状态,请键入 n


(CLEAR)
原因

上面的 UNREF 错误消息中提及的 inode 无法重新连接。如果由于缺少重新连接文件的空间而终止 fsck,则整理文件系统时不会显示此消息。

操作

要通过清空其内容取消分配 inode,请在 CLEAR 提示符下键入 y。要忽略前面的错误状态,请键入 n


LINK COUNT type I=inode-number OWNER=UID MODE=file-mode 
SIZE=file-size
MTIME=modification-time COUNT link-count SHOULD BE 
corrected-link-count (ADJUST)
原因

目录或文件 inode inode-number 的链接计数为 link-count,但应该为 corrected-link-count。此时将显示属主 UID、模式 file-mode、大小 file-size 以及 inode inode-number 的修改时间 modification-time。如果指定了 -o p 选项,则除非引用数在增加,否则将调整链接计数。除非发生硬件故障,否则不会出现此情况。如果在整理期间引用数增加,fsck 会显示 LINK COUNT INCREASING 消息,然后退出。

操作

要用 corrected-link-count 替换目录或文件 inode inode-number 的链接计数,请在 ADJUST 提示符下键入 y。要忽略此错误状态,请键入 n


lost+found IS NOT A DIRECTORY (REALLOCATE)
原因

用于 lost+found 的项不是目录。

操作

要分配一个目录 inode 并更改 lost+found 目录以引用该 inode,请在 REALLOCATE 提示符下键入 ylost+found 目录以前引用的 inode 尚未清除。它将作为非引用 inode 回收或在此阶段的稍后部分调整其链接计数。无法创建 lost+found 目录时,将会显示以下消息:SORRY. CANNOT CREATE lost+found DIRECTORY,并放弃尝试链接到已丢失的 inode。此错误会在稍后在阶段 4 中生成 UNREF 错误消息。要放弃尝试链接到已丢失的 inode,请键入 n


NO lost+found DIRECTORY (CREATE)
原因

文件系统的根目录中没有 lost+found 目录。整理时,fsck 将尝试创建一个 lost+found 目录。

操作

要在文件系统的根目录中创建一个 lost+found 目录,请在 CREATE 提示符下键入 y。如果无法创建 lost+found 目录,fsck 将显示以下消息:SORRY. CANNOT CREATE lost+found DIRECTORY,并放弃尝试链接到已丢失的 inode。此错误反过来会在稍后在阶段 4 中生成 UNREF 错误消息。要放弃尝试链接到已丢失的 inode,请键入 n


NO SPACE LEFT IN / lost+found (EXPAND)
原因

没有空间可用于将另一项添加到文件系统根目录的 lost+found 目录中。整理时,fsck 将扩展 lost+found 目录。

操作

要扩展 lost+found 目录以便为新项留出空间,请在 EXPAND 提示符下键入 y。如果尝试扩展时失败,fsck 将显示以下消息:SORRY. NO SPACE IN lost+found DIRECTORY,并放弃将文件链接到 lost+found 目录的请求。此错误会在稍后在阶段 4 中生成 UNREF 错误消息。删除 lost+found 目录中的任何不必要项。当整理(-o p 选项)生效时,此错误将终止 fsck。要放弃尝试链接到已丢失的 inode,请键入 n


UNREF FILE I=inode-number OWNER=UID MODE=file-mode SIZE=file-size 
MTIME=modification-time (RECONNECT)
原因

遍历文件系统时,文件 inode inode-number 未连接到目录项。此时将显示属主 UID、模式 file-mode、大小 file-size 以及 inode inode-number 的修改时间 modification-time。当 fsck 进行整理时,如果文件的大小或链接计数为零,则清除该文件;否则,将重新连接该文件。

操作

要将 inode inode-number 重新连接到文件系统的 lost+found 目录,请键入 y。如果将 inode inode-number 连接到 lost+found 目录时出现问题,此错误可能会在阶段 4 中生成 lost+found 错误消息。要忽略此错误状态,请键入 n。此错误始终会在阶段 4 中引发 CLEAR 错误状态。


UNREF type I=inode-number OWNER=UID MODE=file-mode SIZE=file-size 
MTIME=modification-time (CLEAR)
原因

遍历文件系统时,inode inode-number(其 type 是目录或文件)未连接到目录项。此时将显示属主 UID、模式 file-mode、大小 file-size 以及 inode inode-number 的修改时间 modification-time。当 fsck 进行整理时,如果文件的大小或链接计数为零,则清除该文件;否则,将重新连接该文件。

操作

要通过清空其内容来取消分配 inode inode-number,请在 CLEAR 提示符下键入 y。要忽略此错误状态,请键入 n


ZERO LENGTH DIRECTORY I=inode-number OWNER=UID MODE=file-mode 
SIZE=file-size MTIME=modification-time(CLEAR)
原因

目录项 filename 的大小 file-size 为零。此时将显示属主 UID、模式 file-mode、大小 file-size、修改时间 modification-time 和目录名称 filename

操作

要通过清空其内容来取消分配目录 inode inode-number,请键入 y。要忽略该错误状态,请键入 n

阶段 5:检查柱面组消息

本节包含当前 Oracle Solaris 发行版中的阶段 5 fsck 消息。

此阶段将检查可用片段和已用 inode 图。它将报告下列原因所导致的错误状态:

阶段 5 中可能出现以下消息(按字母顺序):


FRAG BITMAP WRONG (CORRECTED)
原因

柱面组片段图缺少一些可用片段。在整理期间,fsck 将重新构造这些图。

操作

要重新构造可用片段图,请在 SALVAGE 提示符下键入 y。要忽略此错误状态,请键入 n


CG cg-number: BAD MAGIC NUMBER
原因

柱面组的魔数 cg-number 不正确。此错误通常表示柱面组图已被销毁。以交互方式运行时,柱面组标记为需要重新构造。如果正在整理文件系统,fsck 将终止。

操作

如果出现此情况,请与当地服务提供商或其他有资格的人员联系。


CORRECT GLOBAL SUMMARY (SALVAGE)
原因

摘要信息不正确。整理时,fsck 将重新计算摘要信息。

操作

要重新构造摘要信息,请在 SALVAGE 提示符下键入 y。要忽略此错误状态,请键入 n

Solaris 10:阶段 5:检查柱面组消息

本节包含 Solaris 10 3/05 初始发行版中的阶段 5 fsck 消息。

此阶段检查可用块和已用 inode 图。它将报告下列原因所导致的错误状态:

阶段 5 中可能出现以下消息(按字母顺序):


BLK(S) MISSING IN BIT MAPS (SALVAGE)
原因

柱面组块图缺少一些可用块。在整理期间,fsck 将重新构造这些图。

操作

要重新构造可用块图,请在 SALVAGE 提示符下键入 y。要忽略此错误状态,请键入 n


CG character-for-command-option: BAD MAGIC NUMBER
原因

柱面组的魔数 character-for-command-option 不正确。此错误通常表示柱面组图已被销毁。以交互方式运行时,柱面组标记为需要重新构造。如果正在整理文件系统,fsck 将终止。

操作

如果出现此情况,请与当地服务提供商或其他有资格的人员联系。


FREE BLK COUNT(S) WRONG IN SUPERBLK (SALVAGE)
原因

实际可用块计数与文件系统超级块中的可用块计数不匹配。如果指定了 -o p 选项,则会自动修复超级块中的可用块计数。

操作

要重新构造级超级块可用块信息,请在 SALVAGE 提示符下键入 y。要忽略此错误状态,请键入 n


SUMMARY INFORMATION BAD (SALVAGE)
原因

摘要信息不正确。整理时,fsck 将重新计算摘要信息。

操作

要重新构造摘要信息,请在 SALVAGE 提示符下键入 y。要忽略此错误状态,请键入 n

fsck 摘要消息

本节包含当前 Oracle Solaris 发行版中的 fsck 摘要消息。如果运行的版本低于 Solaris 10 6/06 发行版,则会在清除阶段显示这些消息。有关更多信息,请参见Solaris 10:清除阶段消息

检查文件系统后,会显示一些摘要消息。


number-of files, number-of-files
used, number-of-files free (number-of frags, number-of blocks, 
percent fragmentation)

此消息表明,所检查的文件系统中包含 number-of 个使用 number-of 个片段大小块的文件,该文件系统中还有 number-of 个片段大小块可用。括号中的数字将可用计数细分为 number-of 个可用片段、number-of 个可用的完整大小块和 percent 分段。


***** FILE SYSTEM WAS MODIFIED *****

此消息表示,fsck 对文件系统进行了修改。如果看到此消息,则不需要重新运行 fsck。此消息只是有关 fsck 的更正操作的信息。

Solaris 10:清除阶段消息

本节包含 Oracle Solaris 10 发行版中的 fsck 清除阶段消息。在此发行版中,可在 fsck 摘要阶段找到类似消息。有关更多信息,请参见fsck 摘要消息

检查文件系统后,将执行一些清除功能。清除阶段将显示以下状态消息。


number-of files, number-of-files
used, number-of-files free (number-of frags, number-of blocks, 
percent fragmentation)

此消息表明,所检查的文件系统中包含 number-of 个使用 number-of 个片段大小块的文件,该文件系统中还有 number-of 个片段大小块可用。括号中的数字将可用计数细分为 number-of 个可用片段、number-of 个可用的完整大小块和 percent 分段。


***** FILE SYSTEM WAS MODIFIED *****

此消息表示,fsck 对文件系统进行了修改。如果文件系统已挂载或为当前的根 (/) 文件系统,请重新引导。如果已挂载文件系统,则可能需要将其卸载并再次运行 fsck;否则,内核中的表副本可能会撤消 fsck 已执行的操作。


filename FILE SYSTEM STATE SET TO OKAY

此消息表示文件系统 filename 已标记为稳定。使用 fsck -m 命令确定文件系统是否需要检查。


filename FILE SYSTEM STATE NOT SET TO OKAY

此消息表明,文件系统文件名未标记为稳定。使用 fsck -m 命令确定文件系统是否需要检查。