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

Solaris 10 6/06 发行版中文件系统方面的新增功能

本节介绍 Solaris 10 6/06 发行版中文件系统方面的新增功能。

ZFS 文件系统

Solaris 10 6/06: ZFS 是一种全新的文件系统,可提供简单管理、事务性语义、端到端数据完整性以及极好的可伸缩性。此外,ZFS 还可提供以下管理功能:

可以在同一 Solaris 系统上同时设置 ZFS 和 UFS 文件系统。但是,不能将 ZFS 用作根文件系统。有关使用 ZFS 时的其他限制的信息,请参见《Solaris 10 新增功能》中的“Solaris ZFS 文件系统”

有关使用 ZFS 的更多信息,请参见《Solaris ZFS 管理指南》。

UFS 文件系统实用程序(fsckmkfsnewfs)的增强功能

Solaris 10 6/06:文件系统检查实用程序 fsck 已经增强,包括 FreeBSD 4.9 版本的 fsck 程序的功能以及其他增强功能。

此 Solaris 发行版中的 fsck 实用程序包括以下改进:

此外,还更新了 newfsmkfs 命令,其中包括用于以文本格式显示文件系统超级块信息或以二进制格式转储超级块信息的新选项。


newfs [ -S or -B ] /dev/rdsk/...
-S

以文本格式显示文件系统的超级块

-B

以二进制格式转储文件系统的超级块


mkfs [ -o calcsb or -o calcbinsb ] /dev/rdsk/... size
-o calcsb

以文本格式显示文件系统的超级块

-o calcbinsb

以二进制格式转储文件系统的超级块

fsck 实用程序使用此超级块信息搜索备份超级块。

以下各节介绍了特定的 fsck 增强功能及其对应的错误消息。有关使用 fsck 实用程序修复损坏的超级块的逐步说明,请参见如何恢复坏的超级块(仅限 Solaris 10 6/06 发行版)

自动搜索备份超级块

以下 fsck 错误消息示例说明了自动搜索备份超级块的功能。


注意 – 注意 –

如果文件系统包含损坏的超级块,并且该超级块是使用 newfsmkfs 自定义参数(如 ntracknsect)创建的,则使用 fsck 自动搜索的超级块执行修复过程可能会损坏文件系统。

如果文件系统是使用自定义参数创建的,并且包含错误的超级块,则 fsck 会提供取消 fsck 会话的提示:


CANCEL FILESYSTEM CHECK?

以下示例说明在超级块已损坏的情况下指定 fsck-y 选项时将发生的情况。您将自动从 fsck 会话退出。此时会显示一条消息,指示使用替代超级块重新运行该命令。


# fsck -y /dev/dsk/c1t2d0s0

# 

** /dev/rdsk/c1t2d0s0

BAD SUPERBLOCK AT BLOCK 16: BLOCK SIZE LARGER THAN MAXIMUM SUPPORTED



LOOK FOR ALTERNATE SUPERBLOCKS WITH MKFS?  yes





LOOK FOR ALTERNATE SUPERBLOCKS WITH NEWFS?  yes



SEARCH FOR ALTERNATE SUPERBLOCKS FAILED.



USE GENERIC SUPERBLOCK FROM MKFS?  yes



CALCULATED GENERIC SUPERBLOCK WITH MKFS

If filesystem was created with manually-specified geometry, using

auto-discovered superblock may result in irrecoverable damage to

filesystem and user data.



CANCEL FILESYSTEM CHECK?  yes



Please verify that the indicated block contains a proper

superblock for the filesystem (see fsdb(1M)).



FSCK was running in YES mode.  If you wish to run in that mode using

the alternate superblock, run `fsck -y -o b=453920 /dev/rdsk/c1t2d0s0'.

以下 fsck 错误消息情况说明备份超级块的新提示,但在此示例中并未取消运行 fsck。如果此文件系统是使用自定义参数创建的,或者在此文件系统上运行 fsck 可能会带来其他问题,则应取消 fsck 会话。

斜体提供的各种超级块错误情况如下所示:


# fsck /dev/rdsk/c0t1d0s0



** /dev/rdsk/c0t1d0s0



BAD SUPERBLOCK AT BLOCK 16: BLOCK SIZE LARGER THAN MAXIMUM SUPPORTED

BAD SUPERBLOCK AT BLOCK 16: NUMBER OF DATA BLOCKS OUT OF RANGE

BAD SUPERBLOCK AT BLOCK 16: INODES PER GROUP OUT OF RANGE

BAD SUPERBLOCK AT BLOCK 16: MAGIC NUMBER WRONG

BAD SUPERBLOCK AT BLOCK 16: BAD VALUES IN SUPER BLOCK

BAD SUPERBLOCK AT BLOCK 16: NCG OUT OF RANGE

BAD SUPERBLOCK AT BLOCK 16: CPG OUT OF RANGE

BAD SUPERBLOCK AT BLOCK 16: NCYL IS INCONSISTENT WITH NCG*CPG

BAD SUPERBLOCK AT BLOCK 16: SIZE OUT OF RANGE

BAD SUPERBLOCK AT BLOCK 16: NUMBER OF DIRECTORIES OUT OF RANGE

BAD SUPERBLOCK AT BLOCK 16: ROTATIONAL POSITION TABLE SIZE OUT OF RANGE

BAD SUPERBLOCK AT BLOCK 16: SIZE OF CYLINDER GROUP SUMMARY AREA WRONG

BAD SUPERBLOCK AT BLOCK 16: INOPB NONSENSICAL RELATIVE TO BSIZE



LOOK FOR ALTERNATE SUPERBLOCKS WITH MKFS? yes



FOUND ALTERNATE SUPERBLOCK 32 WITH MKFS



USE ALTERNATE SUPERBLOCK? yes



FOUND ALTERNATE SUPERBLOCK AT 32 USING MKFS

If filesystem was created with manually-specified geometry, using

auto-discovered superblock may result in irrecoverable damage to

filesystem and user data.



CANCEL FILESYSTEM CHECK? no



** Last Mounted on 

** Phase 1 - Check Blocks and Sizes

** Phase 2a - Check Duplicated Names

** Phase 2b - Check Pathnames

** Phase 3a - Check Connectivity

** Phase 3b - Verify Shadows/ACLs

** Phase 4 - Check Reference Counts

** Phase 5 - Check Cylinder Groups



SALVAGE? yes





UPDATE STANDARD SUPERBLOCK? yes



82 files, 3649 used, 244894 free (6 frags, 30611 blocks, 0.0% 

fragmentation)



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

fsck 报告它何时需要重新运行

如果 fsck 更好地报告它何时需要重新运行,则会减少多次运行所需的时间和必要,在大文件系统上多次运行可能特别耗时。

以下新消息提示您在错误情况结束时重新运行 fsck 实用程序:


***** PLEASE RERUN FSCK *****

或:


Please rerun fsck(1M) to correct this.

这些新提示解决了以前在确定是否应该重新运行 fsck 方面的困难。

除非出现上述类似消息提示重新运行 fsck,否则不需要运行 fsck,即使显示以下消息后也是如此:


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

但是,在出现此消息后重新运行 fsck 并不会损害文件系统。此消息只是有关 fsck 的更正操作的信息。

有关扩展属性的 fsck 新消息

提供新的 fsck 消息,可报告和修复具有扩展属性的文件。例如:


BAD ATTRIBUTE REFERENCE TO I=1 FROM I=96

Attribute directory I=97 not attached to file I=96

  I=96  OWNER=root MODE=40755

SIZE=512 MTIME=Jul 21 16:23 2005 

DIR= <xattr> 



FIX?  yes

ZERO LENGTH ATTR DIR I=12  OWNER=root MODE=160755

SIZE=0 MTIME=Jul 21 16:25 2005 

CLEAR?  yes

File should BE marked as extended attribute

  I=22  OWNER=root MODE=100644

SIZE=0 MTIME=Jul 21 16:36 2005 

FILE=  <xattr>



FIX?  yes

UNREF ATTR DIR  I=106  OWNER=root MODE=160755

SIZE=512 MTIME=Jul 21 16:36 2005 

RECONNECT?  yes

File I=107 should NOT be marked as extended attribute

  I=107  OWNER=root MODE=100644

SIZE=0 MTIME=Jul 21 16:36 2005 

FILE=?/attfsdir-7-att



FIX?  yes

DIR I=106 CONNECTED.

更好地处理重复块或段

fsck 错误消息现在会报告有关块、段或 LFN(从文件开头算起的逻辑段编号)的信息。例如,可能会显示以下类似输出:


** Phase 1 - Check Blocks and Sizes

FRAGMENT 784 DUP I=38 LFN 0

FRAGMENT 785 DUP I=38 LFN 1

FRAGMENT 786 DUP I=38 LFN 2

.

.

.

fsck 将对象作为段处理,但是在以前的 Solaris 发行版中,该命令只是将对象作为块来报告其信息。现在,它将对象作为段来正确报告其信息。

如果 fsck 发现错误情况涉及重复块或段,则 fsck 会在 fsck 输出的结尾显示未清除的文件。例如,可能会显示以下类似输出:


LIST REMAINING DUPS?  yes



Some blocks that were found to be in multiple files are still

assigned to file(s).

Fragments sorted by inode and logical offsets:

Inode 38:

  Logical Offset  0x00000000               Physical Fragment  784

  Logical Offset  0x00000800               Physical Fragment  786

  Logical Offset  0x00001000               Physical Fragment  788

  Logical Offset  0x00001800               Physical Fragment  790

然后,可以使用 find -i inode-number 命令标识此示例中 inode 38 的名称。