上 Solaris 10 UFS文件系统管理全攻略

一、Solaris 10文件系统简介
1. solaris 10三大文件系统
UFS文件系统几乎是所有Unix系统的基本文件系统,Solaris当然也不例外 。除此之外Solaris 10支持三种类型的文件系统,它们分别是:
(1)基于网络的文件系统;基于网络的文件系统就是网络文件系统,简称NFS文件系统 。网络文件系统(NFS)版本从3升级到4 。
(2)虚拟文件系统(也叫伪文件系统) 。虚拟文件系统大多数是基于内存的文件系统,但是也有部分文件系统是基于硬盘上的包括:
TMPFS文件系统: 使用本地内存进行读写的文件系统 。在Solaris中的默认应用为/tmp目录
LOFS文件系统: 循环文件系统(lofs)可创建一个新的虚拟的原文件系统,然后用另一个路径名来存取文件
PROCFS文件系统: 进程文件系统(procfs)驻留在内存中,表现为/proc目录 。在此目录中活动进程号的清单,ps等命令会用到/proc目录中的信息,调试器或其他开发工具也可能通过文件系统调用来访问这些过程的地址和空间
CacheFS文件系统: 用来改善远程文件系统(NFS)和CD-ROM的读取速度,将读得数据缓存在CacheFS文件系统中
SWAPFS文件系统: 用mkfile和swap命令建立附加的交换区时,系统核心所用的文件系统
(3) 基于磁盘的文件系统;包括:
UFS文件系统: 基于BSD快速文件系统的传统UNIX文件系统是Solaris的默认文件系统 。默认启用UFS 日志记录功能 。在早期的Solaris 版本中,UFS 日志记录功能只能手动启用 。Solaris 10在运行64位Solaris内核的系统上支持多TB UFS文件系统 。以前,UFS文件系统在64位系统和32位系统上的大小仅限于约1 TB(Tbyte) 。现在,所有UFS文件系统命令和公用程序已更新为支持多TB UFS文件系统 。
HSFS文件系统: 用于CD-ROM的只读文件系统
PCFS文件系统: PC文件系统,可以读写Dos型式磁盘的数据,如FAT32
UDF文件系统: DVD文件系统
2 solaris 10 UFS文件系统的结构
Solaris 10典型的文件系统类型为UFS文件系统,但它也允许在/etc/default/fs中定义其他文件类型 。在Solaris 10上,UFS文件系统驻留在硬盘上,这些硬盘同时具有原始设备接口和块设备接口,这两个接口分别位于/dev/rdsk目录和/dev/dsk目录中 。Solaris 10文件系统所创建的每一个分区都在/dev/dsk和/dev/rdsk中有其自己的对应项 。一个UFS文件系统的组成包括如下几部分 。
引导块(boot block):在文件系统可引导的情况下,引导块中包含有引导数据 。
超级块(super block):超级块中包含有关i节点的位置、文件系统大小、块数目,以及状态等信息 。
i节点(inode):存储文件系统的文件细节信息 。
数据块(data block):实际存储的文件 。
3 solaris 10 UFS文件系统的功能
扩展的基本类型(EFT) :提供32 位用户ID (user ID, UID)、组ID (group ID, GID) 和设备编号 。
大文件系统:在最大大小可以为16 TB 的文件系统中,允许大小约为1TB的文件 。可以在具有EFI 磁盘标号的磁盘上创建多TB UFS 文件系统 。
日志记录 :UFS 日志记录会将组成一个完整UFS 操作的多个元数据更改打包成一个事务 。事务集记录在盘上日志中,然后会应用于实际UFS 文件系统的元数据 。
多TB 文件系统通过多TB 文件系统,可以创建最大可用空间约为16 TB 的UFS文件系统,其中会减去约1% 的开销 。
状态标志显示文件系统的状态:clean、stable、active、logging 或unknown 。这些标志可避免不必要的文件系统检查 。如果文件系统的状态为“clean、“stable 或“logging,则不运行文件系统检查 。
4 Solaris UFS 文件系统分层结构
从根目录(/) 开始,向下延伸出许多目录 。在Solaris 安装过程中,可以安装一组缺省目录,并使用一组约定将类似的文件类型组合在一起 。下表汇总了缺省的Solaris 文件系统 。缺省的 Solaris 文件系统
文件系统或目录文件系统类型说明(/) UFS分层文件树的顶层 。根 (/) 目录包含对系统操作至关重要的目录和文件,如内核、设备驱动程序和用于引导系统的程序 。根 (/) 目录还包含挂载点目录,可以在这些目录中将本地文件系统和远程文件系统附加到文件树 。/var UFS可能随本地系统的生命周期而更改或增长的系统文件和目录 。这些系统文件和目录包括系统日志、vi 和 ex 备份文件以及 uucp 文件 。/opt NFS、UFS第三方软件的可选挂载点 。在一些系统上,/opt 目录可能是本地磁盘片上的 UFS 文件系统 。/tmp TMPFSTMPFS/usr UFS可以与其他用户共享的系统文件和目录 。仅在某些类型的系统上运行的文件(例如 SPARC 可执行文件)包含在 /usr 文件系统中 。可以在所有类型的系统上使用的文件(如手册页)包含在 /usr/share 目录中 。/export/home 或 /home NFS、UFS用户起始目录(用于存储用户的工作文件)的挂载点 。缺省情况下,/home 目录是自动挂载的文件系统 。在独立系统上,/home 目录可能是本地磁盘片上的 UFS 文件系统 。下图显示了一个从根(/) 文件系统以及sbin、etc子目录开始的本地文件系统 。
图 1 UFS文件系统示意图
二、UFS文件系统的建立
1. 建立UFS文件系统
由于 Solaris 10会在安装过程中自动创建 UFS 文件系统,因此只是偶尔需要创建这些文件系统 。如果希望执行以下操作,则需要创建(或重新创建)UFS 文件系统:添加或更换磁盘,更改磁盘的现有分区结构,完全恢复文件系统 。可以使用 newfs 命令是创建 UFS 文件系统的标准方法 。newfs 命令是 mkfs 命令的前端,前者实际上用于创建新文件系统 。newfs 命令可从将包含新文件系统的磁盘的标号中读取参数缺省值,如每个柱面的磁道数和每个磁道的扇区数 。所选的选项会传递给 mkfs 命令以生成文件系统 。
创建 UFS 文件系统步骤:
磁盘必须已格式化并分片 。如果要重新创建现有的 UFS 文件系统,请取消挂载该文件系统 。需要知道将包含文件系统的片的设备名称 。
成为超级用户或承担等效角色 。
使用命令创建 UFS 文件系统,命令如下:
# newfs [-N] [-b size] [-i bytes] /dev/rdsk/device-name
-N 显示 newfs 命令会传递给 mkfs 命令的参数,而不实际创建文件系统 。此选项是用于测试 newfs 命令的一种好方法 。
-b size 指定文件系统的块大小,每块为 4096 或 8192 字节 。缺省值为 8192 。
-i bytes 指定每个 inode 的字节数 。缺省值根据磁盘大小而异 。
device-name 指定在其中创建新文件系统的磁盘设备的名称 。系统会请求进行确认 。
命令实例:在 /dev/rdsk/c0t1d0s4 中创建 UFS 文件系统 。
# newfs /dev/rdsk/c0t1d0s4
图2 是Solaris 物理磁盘名称的说明
图2 是Solaris 物理磁盘名称的说明
验证是否创建了 UFS 文件系统,请检查新文件系统 。命令如下:
fsck /dev/rdsk/c0t1d0s4挂载 UFS 文件系统使用mount 命令
将 /dev/dsk/c0t3d0s4 挂载到 /export/home目录上 。
# mount/dev/rdsk/c0t1d0s4 /export/home单独运行不带参数的mount命令将显示当前已挂接的文件资源 。如图 3。
图 3 显示当前已挂接的文件资源
2. 使用/etc/vfstab文件管理UFS文件系统
我们可以用mount命令和umount命令来手工管理文件系统,也可以通过文件系统表(/etc/vfstab)来管理 。通过编辑/etc/vfstab文件,系统在启动时可自动地安装在本地的ufs文件系统、必需的nfs文件系统,以及其他的文件系统 。可以使用more /etc/vfstab 命令查看/etc/vfstab文件的内容如图 4 ,文件系统表是ASSCII文件,注释行以#开头,下面的/etc/vfstab文件说明了系统中有一个硬盘 。
图 4 使用命令查看/etc/vfstab文件的内容
/etc/vfstab 文件中的项包含七个字段 。下面介绍如何修改/etc/vfstab文件,以便挂接(mount)新的文件系统的步骤:
(1)进入超级用户;
(2)用vi等命令编辑/etc/vfstab文件;
(3)加入各项 。用空格或Tab键分隔其中每个域,如果某个项没有值,则填上“-号;
(4)保存该文件;
(5)检查安装点目录是否存在,不存在则建一个;
(6)运行mountall命令 。
下面的例子说明了将/dev/dsk/c0t3d0s7盘区作为ufs文件系统安装到/test1目录中,安装任选项(读/写)为默认值,fsck设备是/dev/rdsk/c0t3d0s7字符设备,fsck pass值为2,说明该文件系统不采用顺序方式检测:
以下示例说明如何将磁盘片 /dev/dsk/c0t3d0s7 作为 UFS 文件系统挂载到挂载点 /files1 。原始字符设备 /dev/rdsk/c0t3d0s7 会指定为 device to fsck 。fsck pass 值为 2 意味着将检查文件系统,但不是按顺序检查 。
#devicedevice mountFSfsckmountmount
#to mount to fsckpointtype passat boot options
/dev/dsk/c0t3d0s7 /dev/rdsk/c0t3d0s7 /files1 ufs 2 yes-三、修复整理UFS文件系统
1 何时需要修复
UFS 文件系统依赖于一组内部表来跟踪已用的 inode 和可用的块 。当这些内部表与磁盘上的数据未正确同步时,会导致不一致性问题,从而需要修复文件系统 。
由于以下情况导致操作系统突然终止,文件系统可能会不一致:
电源故障
意外关闭系统电源
没有按正确的关闭过程关闭系统
内核中出现软件错误
文件系统不一致性问题尽管严重,但并不常见 。引导系统时,会自动执行对文件系统一致性的检查(使用 fsck 命令) 。通常,此文件系统检查会修复它遇到的问题 。文件系统检测是用fsck(file system check)程序实现的 。fsck命令将已分配的但没有说明其来源的文件和目录放在lost found目录下,如果该目录不存在,则由fsck建立 。如果lost found中没有足够的空间,fsck也会自动增大其空间 。下列情况发生时一般需要检测文件系统:
文件系统不能安装;
正在使用的文件系统产生问题;
正在使用着的文件系统出现不一致时,控制台窗口会提示出非常醒目的出错信息,严重时甚至会发生系统瘫痪 。
fsck 命令的语法和选项
fsck 命令检查和修复文件系统中的不一致性问题 。如果运行不带任何选项的 fsck 命令,则该命令会在进行修复之前以交互方式要求进行确认 。此命令有四个选项 。
命令和选项说明fsck -m 检查是否可以挂载文件系统fsck -y 接受所有修复fsck -n拒绝所有修复fsck -o p以非交互方式整理文件系统,解决所有预期的(无害的)不一致性问题,但是在遇到严重问题时退出2 修复文件系统的步骤: (1)进入超级用户;
(2)拆卸(umount)有问题的文件系统;
(3)键入fsck命令进行修复 。
3 如何整理 UFS 文件系统
在异常关机后,可以运行 fsck -o p 命令以整理文件系统 。在此模式下,fsck 命令不查看“干净标志,而是执行完整检查 。这些操作是 fsck 命令以交互方式运行时所执行操作的子集 。
(1)成为超级用户或承担等效角色 。
(2)取消挂载 UFS 文件系统 。
# umount /mount-point(3)!!用整理选项检查 UFS 文件系统 。
# fsck -o p /dev/rdsk/device-name以下示例说明如何整理 /export/home 文件系统 。
# fsck -o p /export/home四、UFS文件系统设置磁盘配额
对磁盘空间资源进行必要的管理是solaris 系统管理员的工作之一 。尤其当系统磁盘空间有限,而用户众多的时候,系统管理员就要想出办法,要么增加磁盘的数量,要么限定用户的使用空间 。在不增加新的预算的情况下,限定用户空间就是惟一可行的方法 。Quota在限制磁盘空间方面有两种措施:硬限制和软限制 。硬限制就是系统严格限制用户可以使用空间的大小,不允许超额 。软限制是允许用户超出限额一定的范围 。当超出软限额时,Quota开始计时,在计时期间(默认时为一周,在/usr/include/sys/fs/ufs_quota.h文件中设置),用户释放空间到限额以下,计时复位清零 。如果到期还没有释放空间,系统将不再允许该用户使用更多的空间 。Quota限制磁盘空间的方法也有两种,即分别对inode和block进行限制 。因为系统给用户提供了两种资源:inode和block,分别用于存储文件和数据 。
设置Quota步骤:
(1)!! 使用vi或者gedit编辑/etc/vfstab文件,在需要设置Quota的UFS的属性上加上rq标志 。如图5
图 5 编辑/etc/vfstab文件
(2)在该文件系统的根目录下建立名为quotas的文件,该文件的所有者应是root,其他用户不可对它进行写操作 。
# cd /export/home
#touch quotas
# chmod 600 quotas(3)使用edquota命令来在UFS的根目录下创建一个临时文件,这个文件的内容包括用户的使用限额 。
(4)使用quotacheck命令对限额的一致性进行检查 。
# quotacheck –va如图 6
图 6使用quotacheck命令对限额的一致性进行检查
(5)用quotaon命令来启动edquota服务 。
#quotaon /export/home(6)改变和删除Quota设置
下面简要介绍一些改变和删除Quota设置的命令 。
改变时间限额设置:# edquota -t
改变用户限额限额设置:#edquota username
检查用户限额设置是否正确:#edquota -v [用户名]
关闭quota服务:#quotaoff [quota根目录]
五、UFS磁盘空间管理命令
磁盘空间管理命令查看磁盘空间的大小是系统管理员经常需要做的事情 。Solaris操作系统提供了许多命令,以反映系统磁盘空间大小,由此可见查看系统空间大小的重要性 。下表所示为磁盘空间信息的命令汇总和例子 。
命令名称功能描述简单实例df报告空闲磁盘块和文件的数量显示文件大小和磁盘空间:$ df
以1024K的形式显示文件大小磁盘空间:$ df -h
以块的形式显示文件大小和磁盘空间:$ df -tdu子目录的占用空间大小显示目录的大小是多少KB: $ du -h /usr/share/
显示目录大小是多少块数:
$ du -s /var/adm /var/find 查找指定目录下指定大小的文件 找到并删除core文件:
# find . -name core -exec rm {} ;
说明:core文件是系统软件故障信息记录文件 。core文件会自动变大对于普通用户没有意义 。ls显示当前目录下文件及大小列出文件的详细信息:$ ls -l
按时间顺序列出目录内文件:$ ls -tl /var
说明:-t参数是要求输出按时间排序,时间最新的在最上边 。
【上 Solaris 10 UFS文件系统管理全攻略】总结:到此为止笔者简单介绍了solaris 10 UFS文件系统的基本管理、后边笔者会介绍UFS文件系统的备份和恢复。