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

第 17 章 管理文件系统(概述)

管理文件系统是最重要的系统管理任务之一。

以下是本章中概述信息的列表。

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 的名称。

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

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

缺省情况下启用 UFS 日志记录

Solaris 10 – 除了以下情况,所有 UFS 文件系统均缺省启用日志记录:

在以前的 Solaris 发行版中,必须手动启用 UFS 日志记录。有关 UFS 日志记录的更多信息,请参见UFS 日志记录

在此发行版中使用 UFS 日志记录时,请牢记以下问题:

NFS 版本 4

此 Solaris 发行版包括 Sun 实现的 NFS 版本 4 分布式文件访问协议。

NFS 版本 4 将文件访问、文件锁定和挂载协议集成到一个统一的协议中,从而使穿越防火墙进行遍历更为容易,并提高了安全性。Solaris 实现的 NFS 版本 4 与 Kerberos V5 完全集成(也称作 SEAM),因此可以提供验证机制、完整性和保密性。使用 NFS 版本 4,还可在客户机和服务器之间协商要使用的安全特性。使用 NFS 4.0 版,服务器可以为不同的文件系统提供不同的安全特性。

有关 NFS 版本 4 功能的更多信息,请参见《系统管理指南:网络服务》中的“NFS 服务的新增功能”

NFS 版本 4 和 CacheFS 的兼容性问题

如果 CacheFS 客户机和 CacheFS 服务器运行的都是 NFS 版本 4,则文件不会再在前台文件系统中高速缓存。后台文件系统将提供所有文件访问权。 另外,由于前台文件系统中没有高速缓存任何文件,因此特定于 CacheFS 的挂载选项(该选项旨在影响前台文件系统)会被忽略。特定于 CacheFS 的挂载选项不适用于后台文件系统。


注 –

第一次在系统上配置 NFS 版本 4 时,控制台上将出现一条警告,指出高速缓存不再起作用。


如果要按照以前 Solaris 发行版中的方式实现 CacheFS 挂载,可在 CacheFS mount 命令中指定 NFS 版本 3。例如:


mount -F cachefs -o backfstype=nfs,cachedir=/local/mycache,vers=3 

starbug:/docs /docs

64 位: 对多 TB UFS 文件系统的支持

此 Solaris 发行版在运行 64 位 Solaris 内核的系统上提供对多 TB UFS 文件系统的支持。

以前,UFS 文件系统在 64 位系统和 32 位系统上的大小都仅限于 1 TB 左右。所有 UFS 文件系统命令和实用程序都已更新,可支持多 TB UFS 文件系统。

例如,ufsdump 命令已经更新,可以使用更大的块大小来转储大 UFS 文件系统:


# ufsdump 0f /dev/md/rdsk/d97 /dev/md/rdsk/d98

  DUMP: Date of this level 0 dump: Tue Jan 07 14:23:36 2003

  DUMP: Date of last level 0 dump: the epoch

  DUMP: Dumping /dev/md/rdsk/d98 to /dev/md/rdsk/d97.

  DUMP: Mapping (Pass I) [regular files]

  DUMP: Mapping (Pass II) [directories]

  DUMP: Forcing larger tape block size (2048).

  DUMP: Writing 32 Kilobyte records

  DUMP: Estimated 4390629500 blocks (2143862.06MB).

  DUMP: Dumping (Pass III) [directories]

  DUMP: Dumping (Pass IV) [regular files]

管理小于 1 TB 的 UFS 文件系统保持不变。小于 1 TB 的 UFS 文件系统和大于 1 TB 的文件系统之间不存在管理差异。

可以首先创建小于 1 TB 的 UFS 文件系统,然后使用 newfs -T 选项指定最终可以将其扩展为多 TB 文件系统。此选项可设置 inode 和段的密度针对多 TB 文件系统相应地进行伸缩。

如果在运行 32 位内核的系统上创建小于 1 TB 的 UFS 文件系统时使用 newfs -T 选项,则在 64 位内核下引导此文件系统时使用 growfs 命令可最终扩展此系统。有关更多信息,请参见newfs(1M)

可以使用 fstyp -v 命令,通过检查 magic 列中的以下值确定 UFS 文件系统是否具有多 TB 支持:


# /usr/sbin/fstyp -v /dev/md/rdsk/d3 | head -5

ufs

magic   decade  format  dynamic time    Fri May 21 11:10:10 2004

没有多 TB 支持的 UFS 文件系统会生成以下 fstyp 输出:


# /usr/sbin/fstyp -v /dev/md/rdsk/d0 | head -5

ufs

magic   11954   format  dynamic time    Fri May 21 11:46:40 2004

可以使用 growfs 命令将 UFS 文件系统扩展为片或卷的大小,而不会丢失服务或数据。有关更多信息,请参见growfs(1M)

新增的两项相关功能是:EFI 磁盘标号的多 TB 卷支持和 Solaris Volume Manager 的多 TB 卷支持。有关更多信息,请参见带有 EFI 磁盘标号的多 TB 磁盘支持和《Solaris Volume Manager 管理指南》。

多 TB UFS 文件系统的功能

多 TB UFS 文件系统包括以下功能:

多 TB UFS 文件系统的限制

多 TB UFS 文件系统的限制如下:

有关多 TB UFS 任务的参考信息

请参见以下内容,以了解有关使用多 TB UFS 文件系统的逐步说明。

多 TB UFS 任务 

更多信息 

创建多 TB UFS 文件系统 

如何创建多 TB UFS 文件系统

如何扩展多 TB UFS 文件系统

如何将 UFS 文件系统扩展为多 TB UFS 文件系统

创建多 TB UFS 快照 

示例 26–2

对多 TB UFS 问题进行疑难解答 

对多 TB UFS 文件系统问题进行疑难解答

libc_hwcap

x86 系统上的挂载输出可能包括 libc_hwcap 库的回送挂载,即 libc 的硬件优化实现。 此 libc 实现旨在优化 32 位应用程序的性能。

此回送挂载不需要进行管理并且不会占用磁盘空间。

有关文件系统管理任务的参考信息

请参见以下内容,以了解管理文件系统的逐步说明。

文件系统管理任务 

更多信息 

创建新的文件系统。 

第 18 章,创建 UFS、TMPFS 和 LOFS 文件系统(任务)第 20 章,使用 CacheFS 文件系统(任务)

使本地文件和远程文件可供用户使用。 

第 19 章,挂载和取消挂载文件系统(任务)

连接和配置新的磁盘设备。 

第 11 章,管理磁盘(概述)

制定和实现备份计划,并根据需要恢复文件和文件系统。 

第 24 章,备份和恢复文件系统(概述)

检查并更正文件系统不一致的地方。 

第 22 章,检查 UFS 文件系统一致性(任务)

文件系统概述

文件系统是用于组织和存储文件的目录结构。术语文件系统可用于描述以下各项:

通常,可根据上下文知道具体的含义。

Solaris OS 使用虚拟文件系统 (virtual file system, VFS) 体系结构,该体系结构可为不同的文件系统类型提供标准接口。使用 VFS 体系结构,内核可处理读取、写入和列出文件等基本操作。VFS 体系结构还使添加新文件系统变得更容易。

文件系统的类型

Solaris OS 支持三种类型的文件系统:

要确定文件系统的类型,请参见确定文件系统的类型

基于磁盘的文件系统

基于磁盘的文件系统存储在硬盘、CD-ROM 和软盘等物理介质上。可以按不同的格式向基于磁盘的文件系统中进行写入。下表介绍了可用的格式。

基于磁盘的文件系统 

格式说明 

UFS 

UNIX 文件系统(基于 4.3 Tahoe 发行版中提供的 BSD Fat Fast File 系统)。 UFS 是 Solaris OS 缺省的基于磁盘的文件系统。

必须首先对磁盘格式化并将其分成片,然后才能在磁盘上创建 UFS 文件系统。有关格式化磁盘和将磁盘分片的信息,请参见第 11 章,管理磁盘(概述)

ZFS 

ZFS 文件系统是 Solaris 10 6/06 发行版中新增的文件系统。有关更多信息,请参见《Solaris ZFS 管理指南》。 

HSFS 

High Sierra、Rock Ridge 和 ISO 9660 文件系统。High Sierra 是第一个 CD-ROM 文件系统。ISO 9660 是 High Sierra 文件系统的官方标准版本。HSFS 文件系统在 CD-ROM 上使用,它是只读文件系统。Solaris HSFS 支持 ISO 9660 的 Rock Ridge 扩展。这些扩展存在于 CD-ROM 上时可提供所有 UFS 文件系统功能和文件类型,但可写性和硬链接除外。

PCFS 

PC 文件系统,该系统可用于对 DOS 格式磁盘上(针对基于 DOS 的个人计算机上写入)的数据和程序进行读写访问。

UDF 

通用磁盘格式 (Universal Disk Format, UDF) 文件系统,这是使用称为 DVD(Digital Versatile Disc 或 Digital Video Disc,数字通用光盘或数字视频光盘)的光介质技术来存储信息的行业标准格式。  

每种类型的基于磁盘的文件系统通常都与以下特定的介质设备关联,如下所示:

但是,这些关联并不具有限制性。例如,可以在 CD-ROM 和软盘上创建 UFS 文件系统。

通用磁盘格式 (Universal Disk Format, UDF) 文件系统

UDF 文件系统是用于在 DVD(Digital Versatile Disc 或 Digital Video Disc,数字通用光盘或数字视频光盘)光介质上存储信息的行业标准格式。

UDF 文件系统是作为可动态装入的 32 位和 64 位模块提供的,并且使用系统管理实用程序同时在 SPARC 和 x86 平台上创建、挂载和检查该文件系统。Solaris UDF 文件系统适用于支持的 ATAPI 和 SCSI DVD 驱动器、CD-ROM 设备以及磁盘和软盘驱动器。此外,Solaris UDF 文件系统完全符合 UDF 1.50 规范。

UDF 文件系统可提供以下功能:

UDF 文件系统中不包括以下功能:

UDF 文件系统需要以下内容:

Solaris UDF 文件系统实现提供了以下内容:

基于网络的文件系统

可以从网络对基于网络的文件系统进行访问。通常,基于网络的文件系统驻留在一个系统上(通常是服务器),并由其他系统通过网络进行访问。

通过 NFS,可以管理分布式资源(文件或目录),方法是将其从服务器导出,然后在单独的客户机上进行挂载。有关更多信息,请参见NFS 环境

虚拟文件系统

虚拟文件系统是基于内存的文件系统,该文件系统提供对特殊内核信息和工具的访问。大多数虚拟文件系统不占用文件系统磁盘空间。但是,CacheFS 文件系统使用磁盘上的文件系统以包含高速缓存。另外,一些虚拟文件系统(如临时文件系统 (temporary file system, TMPFS))还会使用磁盘上的交换空间。

CacheFS 文件系统

CacheFSTM 文件系统可以用于提高远程文件系统或慢速设备(如 CD-ROM 驱动器)的性能。高速缓存文件系统时,会将从远程文件系统或 CD-ROM 中读取的数据存储在本地系统上的高速缓存中。

如果要提高 NFS 或 CD-ROM 文件系统的性能和可伸缩性,应该使用 CacheFS 文件系统。CacheFS 软件是一种通用的文件系统高速缓存机制,该软件通过减少服务器和网络的负载来提高 NFS 服务器的性能和可伸缩性。

由于 CacheFS 软件设计为分层文件系统,因此该软件可将一个文件系统高速缓存到另一个文件系统上。在 NFS 环境中,CacheFS 软件可增加客户机与服务器数目的比例,减少服务器和网络负载,并提高客户机在点对点协议 (Point-to-Point Protocol, PPP) 等慢速链路上的性能。另外,也可以将 CacheFS 文件系统与 AutoFS 服务结合使用,以帮助提高性能和可伸缩性。

有关 CacheFS 文件系统的详细信息,请参见第 20 章,使用 CacheFS 文件系统(任务)

临时文件系统

临时文件系统 (temporary file system, TMPFS) 使用本地内存进行文件系统的读取和写入。通常,使用内存进行文件系统的读取和写入比使用 UFS 文件系统要快得多。使用 TMPFS 文件系统可以节省利用本地磁盘或网络读取和写入临时文件的成本,从而提高系统性能。 例如,在编译程序时即会创建临时文件。OS 在处理这些文件的同时会产生大量的磁盘活动或网络活动。使用 TMPFS 保存这些临时文件可以显著加快对其进行创建、处理和删除的速度。

TMPFS 文件系统中的文件不是永久性的。在取消挂载文件系统以及关闭或重新引导系统时,将删除这些文件。

TMPFS 是 Solaris OS 中 /tmp 目录的缺省文件系统类型。可以将文件复制或移动到 /tmp 目录中或从中复制或移动文件,就像在 UFS 文件系统中进行的操作一样。

TMPFS 文件系统使用交换空间作为临时后备存储。如果包含 TMPFS 文件系统的系统没有充足的交换空间,则可能会出现以下两种问题:

有关创建 TMPFS 文件系统的信息,请参见第 18 章,创建 UFS、TMPFS 和 LOFS 文件系统(任务)。 有关增加交换空间的信息,请参见第 21 章,配置其他交换空间(任务)

回送文件系统

使用回送文件系统 (loopback file system, LOFS),可以创建新的虚拟文件系统,以便使用替代的路径名访问文件。 例如,可以在 /tmp/newroot 上创建根 (/) 目录的回送挂载。此回送挂载使整个文件系统分层结构看起来就像在 /tmp/newroot 下对其进行复制一样,其中包括从 NFS 服务器挂载的任何文件系统。路径名以根 (/) 目录或 /tmp/newroot 开头的所有文件都将是可访问的。

有关如何创建 LOFS 文件系统的信息,请参见第 18 章,创建 UFS、TMPFS 和 LOFS 文件系统(任务)

进程文件系统

进程文件系统 (process file system, PROCFS) 驻留在内存中,并且包含 /proc 目录中按进程号排序的活动进程的列表。/proc 目录中的信息由 ps 等命令使用。调试器和其他开发工具也可以使用文件系统调用来访问进程的地址空间。


注意 – 注意 –

请勿删除 /proc 目录中的文件。从 /proc 目录中删除进程不会中止这些进程。/proc 文件不占用磁盘空间,因此不必从此目录中删除文件。


/proc 目录无需管理。

其他虚拟文件系统

以下列出的其他类型的虚拟文件系统用于参考。这些文件系统无需管理。

虚拟文件系统 

说明 

CTFS 

CTFS(contract file system,合同文件系统)是用于创建、控制和查看合同的界面。合同可通过提供更丰富的错误报告,以及采用延迟资源删除时间的方法(可选),增强进程与其所依赖的系统资源之间的关系。

服务管理工具 (service management facility, SMF) 使用进程合同(一种合同类型)来跟踪构成服务的进程,以便可以将多进程服务某部分中出现的故障标识为该服务的故障。 

FIFOFS(先入先出) 

为进程提供对数据的公共访问的指定管道文件

FDFS(文件描述符) 

使用文件描述符提供用于打开文件的显式名称

MNTFS 

为本地系统提供对已挂载文件系统表的只读访问 

NAMEFS 

主要由 STREAMS 用来在文件顶部动态挂载文件描述符

OBJFS 

OBJFS(对象)文件系统可描述当前由内核装入的所有模块的状态。此文件系统由调试器用来访问有关内核符号的信息,而不必直接访问内核。

SPECFS(特殊) 

提供对字符特殊设备和块设备的访问

SWAPFS 

由内核使用以进行交换

扩展的文件属性

UFS、NFS 和 TMPFS 文件系统均已增强,包括扩展的文件属性。通过扩展的文件属性,应用程序开发者可以将特定属性与文件关联。例如,开发用于管理窗口系统的应用程序的开发者可能会选择将显示图标与文件关联。扩展的文件属性在逻辑上表示为与目标文件关联的隐藏目录中的文件。

可以使用 runat 命令在扩展属性名称空间中添加属性和执行 shell 命令。此名称空间是与指定文件关联的隐藏属性目录。

要使用 runat 命令向文件添加属性,必须首先创建属性文件。


$ runat filea cp /tmp/attrdata attr.1

然后,使用 runat 命令列出文件的属性。


$ runat filea ls -l

有关更多信息,请参见 runat(1) 手册页。

许多 Solaris 文件系统命令已经修改,可以通过提供可识别属性的选项来支持文件系统属性。使用此选项可查询、复制或查找文件属性。有关更多信息,请参见每个文件系统命令的特定手册页。

交换空间

Solaris OS 将一些磁盘片用于临时存储而不是用于文件系统。这些片称为交换片或交换空间。如果系统没有足够的物理内存来处理当前进程,则可将交换空间用于虚拟内存存储区域。

由于许多应用程序依赖于交换空间,因此您应该知道如何规划、监视和添加更多交换空间(如果需要)。有关交换空间的概述和添加交换空间的说明,请参见第 21 章,配置其他交换空间(任务)

用于文件系统管理的命令

用于文件系统管理的大多数命令同时包含通用组成部分和文件系统特定的组成部分。应尽可能使用通用命令,这些命令可调用文件系统特定的组成部分。下表列出了用于文件系统管理的通用命令。这些命令位于 /usr/sbin 目录中。

表 17–1 用于文件系统管理的通用命令

命令 

说明 

手册页 

clri

清除 inode 

clri(1M)

df

报告空闲磁盘块和文件的数量 

df(1M)

ff

列出文件系统的文件名和统计信息 

ff(1M)

fsck

检查文件系统的完整性并修复找到的任何损坏 

fsck(1M)

fsdb

调试文件系统 

fsdb(1M)

fstyp

确定文件系统的类型 

fstyp(1M)

labelit

将文件系统复制到磁带(仅供 volcopy 命令使用)时,列出或提供文件系统的标签

labelit(1M)

mkfs

创建新文件系统 

mkfs(1M)

mount

挂载本地文件系统和远程文件系统 

mount(1M)

mountall

挂载 虚拟文件系统表 (/etc/vfstab) 中指定的所有文件系统

mountall(1M)

ncheck

生成路径名及其 inode 编号的列表 

ncheck(1M)

umount

取消挂载本地文件系统和远程文件系统 

mount(1M)

umountall

取消挂载 虚拟文件系统表 (/etc/vfstab) 中指定的所有文件系统

mountall(1M)

volcopy

创建文件系统的映像副本 

volcopy(1M)

文件系统命令如何确定文件系统的类型

通用文件系统命令按以下顺序确定文件系统的类型:

  1. 通过 -F 选项(如果提供)。

  2. 通过将特殊设备与 /etc/vfstab 文件中的项匹配(如果提供了 special 设备)。例如,fsck 会首先根据 fsck device 字段查找匹配项。如果未找到匹配项,则该命令会检查 special 设备字段。

  3. 通过使用本地文件系统的 /etc/default/fs 文件和远程文件系统的 /etc/dfs/fstypes 文件中指定的缺省值。

通用和特定的文件系统命令的手册页

《man pages section 1M: System Administration Commands》中可找到通用命令和特定命令的手册页。通用文件系统命令的手册页仅提供有关通用命令选项的信息。特定文件系统命令的手册页包含有关该文件系统的选项的信息。要查看特定文件系统的手册页,请将下划线和文件系统类型的缩写附加到通用命令名称的后面。例如,要查看有关挂载 UFS 文件系统的特定手册页,请键入以下内容:


$ man mount_ufs

缺省的 Solaris 文件系统

Solaris UFS 文件系统是一个分层文件系统,从根目录 (/) 开始,向下延伸出许多目录。在 Solaris 安装过程中,可以安装一组缺省目录,并使用一组约定将类似的文件类型组合在一起。

有关 Solaris 文件系统和目录的内容说明,请参见 filesystem(5)

下表汇总了缺省的 Solaris 文件系统。

表 17–2 缺省的 Solaris 文件系统

文件系统或目录 

文件系统类型 

说明 

根目录 (/)

UFS 

分层文件树的顶层。根 (/) 目录包含对系统操作至关重要的目录和文件,如内核、设备驱动程序和用于引导系统的程序。 根 (/) 目录还包含挂载点目录,可以在这些目录中将本地文件系统和远程文件系统附加到文件树。

/usr

UFS 

可以与其他用户共享的系统文件和目录。仅在某些类型的系统上运行的文件(例如 SPARC 可执行文件)包含在 /usr 文件系统中。可以在所有类型的系统上使用的文件(如手册页)包含在 /usr/share 目录中。

/export/home/home

NFS、UFS 

用户起始目录(用于存储用户的工作文件)的挂载点。缺省情况下,/home 目录是自动挂载的文件系统。在独立系统上,/home 目录可能是本地磁盘片上的 UFS 文件系统。

/var

UFS 

可能随本地系统的生命周期而更改或增长的系统文件和目录。这些系统文件和目录包括系统日志、viex 备份文件以及 uucp 文件。

/opt

NFS、UFS 

第三方软件的可选挂载点。在一些系统上,/opt 目录可能是本地磁盘片上的 UFS 文件系统。

/tmp

TMPFS 

临时文件,每次引导系统或取消挂载 /tmp 将会删除这些文件。

/proc

PROCFS 

按进程号排序的活动进程的列表。 

/etc/mnttab

MNTFS 

一种虚拟文件系统,可为本地系统提供对已挂载文件系统表的只读访问。

/var/run

TMPFS 

基于内存的文件系统,用于存储引导系统后不需要的临时文件。 

/system/contract

CTFS 

一种虚拟文件系统,用于维护合同信息。 

/system/object

OBJFS 

一种虚拟文件系统,由调试器用来访问有关内核符号的信息,而不必直接访问内核。  

运行系统时需要使用根 (/) 文件系统和 /usr 文件系统。/usr 文件系统中的一些最基本的命令(如 mount)也包含在根 (/) 文件系统中。因此,在系统引导期间(或处于单用户模式下)未挂载 /usr 时,也可以使用这些命令。有关根 (/) 文件系统和 /usr 文件系统的缺省目录的更多详细信息,请参见第 23 章,UFS 文件系统(参考)

UFS 文件系统

UFS 是 Solaris OS 中缺省的基于磁盘的文件系统。管理基于磁盘的文件系统时,大多数情况下管理的是 UFS 文件系统。UFS 可提供以下功能。

UFS 功能 

说明 

扩展的基本类型 (extended fundamental type, EFT) 

提供 32 位用户 ID (user ID, UID)、组 ID (group ID, GID) 和设备编号。

大文件系统 

在最大大小可以为 16 TB 的文件系统中,允许大小约为 1 TB 的文件。可以在具有 EFI 磁盘标号的磁盘上创建多 TB UFS 文件系统。

日志记录 

UFS 日志记录会将组成一个完整 UFS 操作的多个元数据更改打包成一个事务。事务集记录在盘上日志中,然后会应用于实际 UFS 文件系统的元数据。 

多 TB 文件系统 

通过多 TB 文件系统,可以创建最大可用空间约为 16 TB 的 UFS 文件系统,其中会减去约 1% 的开销。

状态标志 

显示文件系统的状态:clean、stable、active、logging 或 unknown。 这些标志可避免不必要的文件系统检查。 如果文件系统的状态为“clean”、“stable” 或 “logging”,则不运行文件系统检查。

有关 UFS 文件系统结构的详细信息,请参见第 23 章,UFS 文件系统(参考)

规划 UFS 文件系统

对文件系统进行布局时,需要考虑可能相冲突的需求。 以下是一些建议:

有关缺省文件系统参数以及创建新 UFS 文件系统的过程的信息,请参见第 18 章,创建 UFS、TMPFS 和 LOFS 文件系统(任务)

UFS 日志记录

UFS 日志记录会将组成一个完整 UFS 操作的多个元数据更改打包成一个事务。事务集记录在盘上日志中,然后会应用于实际文件系统的元数据。

重新引导时,系统会废弃未完成的事务,但是会对已完成的操作应用事务。文件系统将保持一致,因为仅应用了已完成的事务。即使在系统崩溃时,也仍会保持此一致性。系统崩溃可能会中断系统调用,并导致 UFS 文件系统出现不一致。

UFS 日志记录功能有两个好处:

UFS 事务日志具有以下特征:

所有 UFS 文件系统均缺省启用 UFS 日志记录。

如果需要禁用 UFS 日志记录,请在 /etc/vfstab 文件中或手动挂载文件系统时,向文件系统的项添加 nologging 选项。

如果需要启用 UFS 日志记录,请在 /etc/vfstab 文件中或手动挂载文件系统时,在 mount 命令中指定 -o logging 选项。可以在包括根 (/) 文件系统的任何 UFS 文件系统上启用日志记录。另外,fsdb 命令还包含支持 UFS 日志记录的新调试命令。

在一些操作系统中,启用了日志记录的文件系统称为日记记录文件系统。

UFS 快照

可以使用 fssnap 命令创建文件系统的只读快照。快照是旨在用于备份操作的文件系统临时映像。

有关更多信息,请参见第 26 章,使用 UFS 快照(任务)

UFS 直接输入/输出 (Input/Output, I/O)

直接 I/O 旨在用于改进批量 I/O 操作。批量 I/O 操作使用大的缓冲区来传输大文件(大于 256 KB)。

使用 UFS 直接 I/O 可能会使执行各自内部缓冲的应用程序(如数据库引擎)受益。从 Solaris 8 1/01 发行版开始,UFS 直接 I/O 已经增强,允许在访问原始设备时发生的同一种类 I/O 并行。现在,可以从文件系统命名和灵活性中受益,并且仅会降低很少性能。请咨询数据库供应商,以了解它是否可以在其产品配置选项中启用 UFS 直接 I/O。

通过在 mount 命令中使用 forcedirectio 选项,也可以在文件系统上启用直接 I/O。仅当文件系统传输大量连续数据时,启用直接 I/O 才会提高性能。

使用此选项挂载文件系统时,将直接在用户的地址空间和磁盘之间传输数据。如果未对文件系统启用强制直接 I/O,则在用户的地址空间和磁盘之间传输的数据会首先在内核地址空间中进行缓冲。

缺省行为是不对 UFS 文件系统启用强制直接 I/O。 有关更多信息,请参见 mount_ufs(1M)

挂载和取消挂载文件系统

需要首先挂载文件系统,然后才能访问该文件系统上的文件。挂载文件系统时,需要将该文件系统附加到目录(挂载点)并使其对系统可用。始终会挂载根 (/) 文件系统。可以将其他任何文件系统与根 (/) 文件系统连接或断开。

挂载文件系统时,只要挂载了文件系统,基础挂载点目录中的任何文件或目录都将不可用。挂载过程不会永久影响这些文件。取消挂载文件系统时,这些文件即重新变为可用。 但是,由于通常不希望隐藏现有文件,因此挂载目录经常为空。

例如,下图显示了一个从根 (/) 文件系统以及 sbinetcopt 子目录开始的本地文件系统。

图 17–1 根 (/) 文件系统样例

该图显示了根 (/) 文件系统样例,其中列出了 sbin、etc 和 opt 目录中的部分项。

要从包含一组非随附产品的 /opt 文件系统访问本地文件系统,必须执行以下操作:

图 17–2 挂载文件系统

该图显示在 /opt/unbundled 挂载点上挂载文件系统,其中列出了 /opt/unbundled 目录中最近可以访问的项。

有关如何挂载文件系统的逐步说明,请参见第 19 章,挂载和取消挂载文件系统(任务)

已挂载文件系统表

每次挂载或取消挂载文件系统时,都会使用当前挂载的文件系统的列表修改 /etc/mnttab(挂载表)文件。可以使用 catmore 命令显示此文件的内容。但是,不能编辑此文件。以下是 /etc/mnttab 文件的示例:


$ more /etc/mnttab

/dev/dsk/c0t0d0s0       /       ufs     rw,intr,largefiles,logging,xattr,onerror

=panic,dev=2200008      1093882623

/devices        /devices        devfs   dev=4340000     1093882603

ctfs    /system/contract        ctfs    dev=4380001     1093882603

proc    /proc   proc    dev=43c0000     1093882603

mnttab  /etc/mnttab     mntfs   dev=4400001     1093882603

swap    /etc/svc/volatile       tmpfs   xattr,dev=4440001       1093882603

/dev/dsk/c0t0d0s6       /usr    ufs     rw,intr,largefiles,logging,xattr,onerror

=panic,dev=220000e      1093882623

objfs   /system/object  objfs   dev=44c0001     1094150403

fd      /dev/fd fd      rw,dev=45c0001  1093882624

swap    /var/run        tmpfs   xattr,dev=4440002       1093882625

swap    /tmp    tmpfs   xattr,dev=4440003       1093882625

/dev/dsk/c0t0d0s7       /export/home    ufs     rw,intr,largefiles,logging,xattr

,onerror=panic,dev=220000f      1093882637

$

虚拟文件系统表

每次要访问文件系统时都将其手动挂载会非常耗时并且容易出错。为避免这些问题,虚拟文件系统表(/etc/vfstab 文件)提供了文件系统的列表以及如何将其挂载的信息。

/etc/vfstab 文件提供了以下两项重要功能:

安装系统时会创建缺省的 /etc/vfstab 文件,具体取决于在安装过程中进行的选择。但是,只要需要,即可在系统上编辑 /etc/vfstab 文件。要添加项,需要指定如下信息:

以下是 /etc/vfstab 文件的示例。注释行以 # 开头。本示例显示了具有两个磁盘(c0t0d0c0t3d0)的系统的 /etc/vfstab 文件。


$ more /etc/vfstab

#device           device              mount            FS      fsck    mount   mount

#to mount         to fsck             point            type    pass    at boot options

#

fd                 -                  /dev/fd          fd      -       no      -

/proc              -                  /proc            proc    -       no      -

/dev/dsk/c0t0d0s1  -                  -                swap    -       no      -

/dev/dsk/c0t0d0s0  /dev/rdsk/c0t0d0s0 /                ufs     1       no      -

/dev/dsk/c0t0d0s6  /dev/rdsk/c0t0d0s6 /usr             ufs     1       no      -

/dev/dsk/c0t0d0s7  /dev/rdsk/c0t0d0s7 /export/home     ufs     2       yes     -

/dev/dsk/c0t0d0s5  /dev/rdsk/c0t0d0s5 /opt             ufs     2       yes     -

/devices           -                  /devices         devfs   -       no      -

ctfs               -                  /system/contract ctfs    -       no      -

objfs              -                  /system/object   objfs   -       no      -

swap               -                  /tmp             tmpfs   -       yes     -

$

在本示例中,/dev/dsk/c0t0d0s7 片上 /export/home 的 UFS 文件系统项在系统引导时会自动挂载到 /test 挂载点上。请注意,对于根 (/) 和 /usrmount at boot 字段值被指定为 no。这些文件系统是在运行 mountall 命令之前,由内核在顺序引导过程中挂载的。

有关每个 /etc/vfstab 字段的说明以及如何编辑和使用该文件的信息,请参见第 19 章,挂载和取消挂载文件系统(任务)

NFS 环境

NFS 是一种分布式文件系统服务,可以用于将一个系统(通常为服务器)中的资源(文件或目录)与网络中的其他系统共享。例如,您可能希望与其他系统上的用户共享第三方应用程序或源文件。

使用 NFS 时资源的实际物理位置与用户无关。使用 NFS 服务可以在一个系统的磁盘上放置一个副本并使所有其他系统通过网络对其进行访问,而不是在每个系统上都放置常用文件的副本。使用 NFS 时,远程文件和本地文件实际没有分别。

有关更多信息,请参见《系统管理指南:网络服务》中的第 4  章 “管理网络文件系统(概述)”

如果系统包含要在网络中共享的资源,则该系统将成为 NFS 服务器。服务器保存了当前共享的资源及其访问限制(如读/写访问或只读访问)的列表。

共享某个资源时,即可使该资源供远程系统进行挂载。

可以使用以下方法共享资源:

有关如何共享资源的信息,请参见第 19 章,挂载和取消挂载文件系统(任务)。有关 NFS 的完整说明,请参见《系统管理指南:网络服务》中的第 4  章 “管理网络文件系统(概述)”

自动挂载或 AutoFS

可以使用称为自动挂载(或 AutoFS)的客户端服务来挂载 NFS 文件系统资源。每次访问 NFS 资源时,AutoFS 都允许系统对其进行自动挂载和取消挂载。只要仍在目录中并且使用该目录中的文件,资源就会保持挂载状态。如果在某个时间段内未访问资源,则会自动取消挂载该资源。

AutoFS 提供了以下功能:

AutoFS 服务通过 automount 实用程序进行初始化,该实用程序在引导系统时自动运行。automountd 守护进程会持续不断地运行,并且负责按需挂载和取消挂载 NFS 文件系统。缺省情况下,/home 文件系统由 automount 守护进程挂载。

使用 AutoFS,可以指定多台服务器提供同一文件系统。这样,如果其中一台服务器关闭,则 AutoFS 可以尝试从其他计算机挂载该文件系统。

有关如何设置和管理 AutoFS 的完整信息,请参见《系统管理指南:IP 服务》

确定文件系统的类型

可以使用以下方法之一确定文件系统的类型:

如何确定文件系统的类型

无论是否挂载了文件系统,此过程都适用。

请使用 grep 命令确定文件系统的类型。


$ grep mount-point fs-table
mount-point

指定希望知道其文件系统类型的文件系统的挂载点名称。例如 /var 目录。

fs-table

指定要在其中搜索文件系统类型的文件系统表的绝对路径。如果已挂载该文件系统,则 fs-table 应该是 /etc/mnttab。如果未挂载该文件系统,则 fs-table 应该是 /etc/vfstab

此时会显示挂载点的信息。


注 –

如果已知磁盘片的原始设备名称,则可以使用 fstyp 命令确定文件系统的类型(如果磁盘片包含文件系统)。 有关更多信息,请参见 fstyp(1M)



示例 17–1 确定文件系统的类型

以下示例使用 /etc/vfstab 文件确定 /export 文件系统的文件系统类型。


$ grep /export /etc/vfstab

/dev/dsk/c0t3d0s6   /dev/rdsk/c0t3d0s6  /export ufs   2       yes    -

$ 

以下示例使用 /etc/mnttab 文件确定当前挂载的软盘的文件系统类型。软盘以前通过 vold 进行挂载。


$ grep /floppy /etc/mnttab

/vol/dev/diskette0/unnamed_floppy   /floppy/unnamed_floppy  pcfs rw,

nohidden,nofoldcase,dev=16c0009      89103376

$