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”,则不运行文件系统检查。 |
Solaris操作系统一般都会使用以下系列文件系统。
1 UFS文件系统: 基于BSD快速文件系统的传统UNIX文件系统是Solaris的默认文件系统。默认启用UFS 日志记录功能。在早期的Solaris 版本中,UFS 日志记录功能只能手动启用。 Solaris 10在运行64位Solaris内核的系统上支持多TB UFS文件系统。以前,UFS文件系统在64位系统和32位系统上的大小仅限于约1 TB(Tbyte)。现在,所有UFS文件系统命令和公用程序已更新为支持多TB UFS文件系统。
2 HSFS文件系统: 用于CD-ROM的只读文件系统
3 PCFS文件系统: PC文件系统,可以读写DOS型式磁盘的数据,如FAT32
4 UDF文件系统: DVD文件系统
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):实际存储的文件。
Solaris操作系统下每个常规文件必须包含一个文件名和与之相关联的inode(信息节点),inode中存储文件的相关信息(如文件的所有者、权限和大小等信息),以及该文件所关联的数据块的指针。因此,inode数量的多少决定着一个UFS文件系统所允许创建的文件数。
一个UFS文件系统在其创建时,所允许最大的indoe数就已经固定,当该文件系统中有大量的(上千万甚至上亿个)小文件存在时,有可能出现inode数量不够用的情况,由于文件需要用inode来存储元数据(MetaData),inode数量超出将导致新文件无法被创建,尽管此时实际的存储空间还远远不到极限,所以在创建此类文件系统的时候需要考虑到这一点。
inode数计算公式:
inode_number=文件系统大小/nbpi
nbpi:The number of bytes per inode,每个inode所占用的字节数,它是文件系统inode数多少的决定因素.
在创建文件系统时,如果不特别指定,Solaris将根据文件系统的大小使用不同的nbpi值来决定inode的密度,参见下表.
文件系统大小(GB) 缺省的nbpi大小(byte)
≤1 2048
1
2
3
≥1024(即1T) 1048576 (即1M)
根据上表,在默认情况下,对于一个1G的文件系统(在Solaris 9下,其可用的空间大约为961M),得到理论上的该文件系统所拥有的inode数:
1024 * 1024 / 2 ≌ 500000
而对于一个1T的文件系统,其可用的inode数将比略小于1T的文件(比如900G)系统锐减很多(因为nbpi值增大了好几倍):
900*1024*1024/8 = 117964800
1024*1024*1024/1024 ≌ 1000000 (一百万)
对于一个已创建的文件系统,可以通过下列命令得到该文件系统的可用inode数,从而得出在该文件系统下所能创建的最大文件数(不考虑实际的物理空间限制,理论值可能会与实际有些偏差,但可以作为一个参考):
# df -F ufs -oi
实验:
step1. 按缺省方式创建一个1G大小的UFS文件系统(nbpi=2048),挂接到/tmp/mnt目录下,实际可用的空间为961M:
# df -h /tmp/mnt
Filesystem size used avail capacity Mounted on
/dev/vx/dsk/oradg/lv_simon
961M 1.0M 903M 1% /tmp/mnt
# mkfs -m /dev/vx/dsk/oradg/lv_simon
mkfs -F ufs
-o nsect=64,ntrack=32,bsize=8192,fragsize=1024,cgsize=32,free=6,rps=120,nbpi=2054,
opt=t,apc=0,gap=0,nrpos=8,maxcontig=128 /dev/vx/dsk/oradg/lv_simon 2097152
# df -oi /tmp/mnt
Filesystem iused ifree %iused Mounted on
/dev/vx/dsk/oradg/lv_simon
4 507900 0% /tmp/mnt
在不考虑实际物理空间限制的情况下,该文件系统所允许创建的最大常规文件数理论值为: 507900个.
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”,则不运行文件系统检查。