1.35k likes | 1.52k Vues
第 18 章 文件系统和交换分区. 内容概要. ◆ 了解AIX文件系统的结构 ◆ 增加增强日志型文件系统 ◆ 改变文件系统的属性 ◆ 增加RAM文件系统 ◆ 在DVD-RAM上增加一个UDF文件系统 ◆ 监控文件系统状态和使用情况 ◆ 管理文件系统的空间使用 ◆ 检查一个文件系统. 日志文件系统存储结构. i 节点. 超级块. 间接块. 数据块. 日志文件系统存储结构. ◆ 超级块 ( Superblock ) 记录文件系统空间、剩余空间、碎片大小、 nbpi ◆ i 节点 ( i-nodes )
E N D
内容概要 ◆ 了解AIX文件系统的结构 ◆ 增加增强日志型文件系统 ◆ 改变文件系统的属性 ◆ 增加RAM文件系统 ◆ 在DVD-RAM上增加一个UDF文件系统 ◆ 监控文件系统状态和使用情况 ◆ 管理文件系统的空间使用 ◆ 检查一个文件系统
日志文件系统存储结构 i节点 超级块 间接块 数据块
日志文件系统存储结构 ◆ 超级块 ( Superblock ) 记录文件系统空间、剩余空间、碎片大小、 nbpi ◆ i节点 ( i-nodes ) 记录文件大小、拥有者、权限、时间、数据块指针 ◆ 数据块 ( Blocks ) 存储文件内容的磁盘区域 ◆ 间接块 ( Indirect Blocks ) 用来存放其它数据块指针的存储区域,分为两级
日志文件系统存储结构 ◆ AIX-日志型文件系统是建立在逻辑卷上的,因为日志型文件系统存在于逻辑卷中,文件系统的大小通常是该逻辑卷中的逻辑分区大小的整数倍(例如:4MB)。 ◆ 缺省情况下,文件系统中的单个文件由很多个4096字节大小的块组成。(支持碎片或允许大文件的文件系统除外,这些文件系统的分配单元大小可能不同。我们将在后面对它们进行介绍。)
日志型文件系统的结构 ◆为了和其它的UNIX文件系统兼容,一些AIX命令结果通常以512字节作为单位来计算,这与实际的单元分配情况并无联系。 ◆文件系统中,第一个可寻址的逻辑块是超级块(Superblock)。超级块中保存了有关整个文件系统的信息,如:文件系统名字,大小,i节点的个数,创建的日期和时间等。
日志型文件系统的结构 ◆超级块对于文件系统非常重要,一旦毁坏,会影响到文件系统的安装。因此, 文件系统中总是把31号逻辑块做为超级块的备份。 ◆紧接着逻辑块后面的是i节点。i节点保存文件的识别信息,如:文件类型,文件的大小,文件的存取权限,用户/组/拥有者,创建/修改和最后访问日期、还包含指向数据块的指针等信息。
i节点(inode)的结构 一个inode的内容 使用 ls –li命令可得到这个信息 $ ls -li /home/team01 2132 drwxr-xr-x 2 team01 staff 512 May 2 14:33 c 2136 drwxr-xr-x 2 team01 staff 512 May 2 14:33 doc 2141 -rw-r--r-- 1 team01 staff 28 May 16 10:11 Manuals
i节点(inode)的结构 一个i节点代表一个文件,i节点包含的文件信息包括: ◆ 拥有者 ◆ 访问权限 ◆ 文件类型 ◆ 创建/修改和最后访问日期 ◆ 文件的链接数 ◆ 文件大小 ◆ 文件数据块在磁盘上的地址
文件系统碎片 4096 bytes 没有碎片化机制 文件大小= 2000 bytes 有碎片化机制 文件大小= 2000 bytes 碎片大小= 1024 bytes 这块空间不能被其他文件使用 4096 bytes 1024 1024 2000 bytes 1024 1024 这块空间不能被其他文件使用
文件系统碎片 ◆碎片机制提供了使用小于逻辑块大小分配磁盘空间的机制。这对很小的文件和目录很有用。文件系统的碎片大小是在文件系统创建时指定,JFS支持的碎片大小有512, 1024, 2048 和 4096字节,缺省的碎片大小是4096字节。
文件系统碎片 ◆不同的文件系统可以有不同的碎片大小,但一个文件系统碎片大小相同。因此,系统中可能同时有大小不同的碎片,系统管理员必须为每个文件系统选择合适的碎片大小。 ◆JFS碎片支持提供了用连续的碎片而不是逻辑块展示的文件系统的视图。 ◆如果一个文件系统的碎片大小减小,会更充分的利用磁盘的空间,同时,也会带来额外的操作开销(额外的磁盘寻址和分配活动)。
文件系统碎片 ◆为了达到利用磁盘的空间和额外操作开销之间的最佳平衡,JFS碎片机制支持: ◆在可能的情况下,磁盘空间按照4096字节大小的碎片分配。 ◆对于小于32KB的文件和目录,剩下的不足4096大小的逻辑块能以小于4096字节的碎片分配。
文件系统 4096 4096 4096 INODES 1 128 bytes 2 文件系统 INODES 4096 4096 4096 1 128 bytes 2 3 4 4 X 1024 5 6 7 8 可变的inode数 ◆ 缺省nbpi=4096时,每4096字节的文件系统空间就创建一个inode. ◆ 当nbpi=1024时,每1024字节的文件系统空间就创建一个inode。
可变的inode数 ◆在所有UNIX系统中,当文件系统创建成功后,就把inode写入磁盘。每个文件或目录都有一个inode,inode是索引节点的简写,inode包含文件或目录的基本信息。当文件系统创建时,JFS也为文件和目录保留一定数量的inode。在早期AIX版本的JFS中,创建一个文件系统时,它的inode数是固定的。一个inode只能管理4 KB的文件系统空间,因此在一个4 MB的文件系统中最多只能产生1024个inode。
可变的inode数 ◆因为碎片技术优化了磁盘的利用,所以一个文件系统中所能保存的小文件和目录的个数得以增加。因为每个文件或目录都有一个inode,就必须有一种指定所需要的inode数的办法。在文件系统创建时,系统确定了一个默认的所需要的inode数,如果要创建一个多于或少于默认inode数量的文件系统时,在创建该文件系统时则应指定需要的inode数量。inode数量由NBPI参数(number of bytes per inode每一个inode拥有的字节数)决定。
可变的inode数 ◆一个文件系统的inode数量限制着这个文件系统中的文件数量和文件系统的大小,NBPI参数影响着文件系统中inode的数量。例如:值为1024的NBPI参数导致每1024字节的文件系统空间就创建一个磁盘inode。NBPI参数越小,inode数就越多,反之亦然。
可变的inode数 ◆文件系统中包含的文件预计数以及文件的大小决定了碎片的大小以及要创建多少inode。如果是JFS2,就不需要预估文件系统中包含的文件数以及文件大小。 JFS2 动态分配inode所需空间,并且在不需要时释放。
磁盘块 i结点 16 MB 16 MB agsize 16 MB 16 MB 磁盘块 i结点 64 MB 64 MB agsize 64 MB 64 MB 分配组的大小 分组相关的inode和磁盘块 分组相关的inode和磁盘块
分配组的大小 ◆ AIX V4.2 之后,提供了分配组的支持,这样就提高了访问磁盘的性能。每一个分配组都包含着inode和对应的数据块。分配组大小单位包括8, 16, 32, or 64 MB。通过使inode的存放位置和它指向的数据块位置物理上尽量靠近,这样就减少了作磁盘I/O时磁盘头所需的物理活动。
分配组的大小 ◆分配组(allocation group size AGS) 的大小是一个JFS的配置参数,它和NBPI 、碎片大小一起决定了文件系统的总体属性。NBPI可选的值由分配组(allocation group size AGS) 的大小决定。 例如,如果分配组的大小为8 MB,则NBPI可选的值只能是512, 1024,2048, 4096, 8192和16384字节。如果把分配组的大小从8 MB扩至16 MB,则NBPI值的范围也相应扩至1024, 2048, 4096, 8192, 16384 和32768 bytes。
分配组的大小 ◆参考下列表中更多细节:
JFS与JFS2比较 JFS JFS2 最大文件大小 64 Gigabytes / 64 Gigabytes 1 Petabyte / 1 Terabyte Architectural / Tested 最大文件系统大小 1 Terabyte / 1 Terabyte 4 Petabytes / 1 Terabyte Architectural / Tested i节点大小 128 Bytes 512 Bytes i节点数量 Fixed, set at creation Dynamic 目录文件访问 Sequential B-tree 日志档支持 External JFSlog only Inline or External JFS2log 压缩 Yes No 名额 Yes AIX 5L V5.3 and later .
JFS与JFS2比较 ◆ JFS2介绍: 增强日志型文件系统(Enhanced Journaled File System JFS2)是AIX V5.1开始引入的新的文件系统类型。它是基于JFS上的。 1 Petabyte (PB) = 1024 Terabytes (TB) = (250) bytes 1 Terabyte (TB) = 1024 Gigabytes (GB) = (240) bytes 1 Gigabyte (GB) = 1024 Megabytes (MB) = (230) bytes 1 Megabyte (MB) = 1024 Kilobytes (KB) = (220) bytes 1 Kilobyte (KB) = 1024 Bytes = (210) bytes
JFS与JFS2比较 ◆基于片区(extent)的分配策略: JFS2 使用基于片区的分配。一个片区是一地址/长度对,指明了起始块地址和连续数据块的长度。这使得多个相邻的数据块可被寻址。基extent的分配能改善性能,使更大的文件能够被创建。
JFS与JFS2比较 ◆动态inode: 在JFS中,当文件系统创建时,需要估算文件系统中包含的文件数以及文件的大小,还要保留固定大小的空间给inode。如果估计高了,就会浪费空间;如果估计低了,除非扩展文件系统,不然文件就不能添加到文件系统中去。如果是JFS2,就不需要预估文件系统中包含的文件数以及文件大小。 JFS2 动态分配inode所需空间,并且在不需要时释放。
JFS与JFS2比较 ◆迁移: 在同一个系统中,可以同时存在JFS文件系统和JFS2文件系统。但是,为充分利用JFS2的特性,可把JFS文件系统转换成JFS2文件系统,这需作下列步骤: ◆ 备份JFS文件系统数据 ◆ 创建新的JFS2文件系统 ◆ 把JFS文件系统数据恢复到JFS2文件系统中
文件和文件系统大小 ◆ 最大单个文件大小限制 -AIX Version 4.2 and later (JFS) 64GB -AIX Version 5 (JFS2) 1 TB ◆ JFS文件系统大小限制计算 -Maximum file system size limit in bytes =fragment size * 2^28 Maximum file system size limit in bytes =nbpi * 2 ^24
文件和文件系统大小 ◆ AIX V4.2及之后的版本,一个文件系统绝对最大值是1 TB。但JFS 实际的最大值由文件系统的NBPI和碎片大小决定。当文件系统创建时,JFS 实际的最大值由 (碎片大小 *228) 和 (nbpi * 224)两者中较小的那个决定。
文件和文件系统大小 ◆第一个算式 (碎片大小* 228)基于系数228, 系数228是一个文件系统能拥有的最大碎片数,它等于256MB, 第二个算式(nbpi * 224) 基于系数224, 系数224是一个文件系统能拥有的最大inode数,它等于16 MB。NBPI 和碎片大小越大,文件系统就越大。 当用SMIT创建文件系统时,系统已经帮你算出一个文件系统的最大值。例如,如果一个文件系统创建时,碎片大小为4096 字节且NBPI为4096 字节,则算式为: (212)*(228)=(240)=1TB(这里212=4096) (212)*(224)=(236)=64GB
文件和文件系统大小 (212)*(228)=(240)=1TB(这里212=4096) (212)*(224)=(236)=64GB ◆两者中较小的那个是限制因子。因此64 GB以及inode数是限制因子。除此之外,要实现一个理想的文件系统,还有很多要考虑的因素。已经存在的系统提供了关于文件大小、使用、增长属性等理想的数据,但一个新系统的这些数据就很难得到。科学的预先规划可避免代价高昂的文件系统转换和迁移。
压缩的文件系统 压缩= LZ (yes) 片段大小 = 1024 4096 4096 4096 4096
压缩的文件系统 ◆ JFS支持碎片和压缩的文件系统。这两种文件系统都可以节省磁盘空间。在压缩文件系统中对磁盘空间的分配与在碎片文件系统中对碎片的分配原则一样。压缩是在一个逻辑块的基础上实现的。当一个逻辑块被修改后就给他分配一个4096字节的逻辑块空间。这种分配就保证了在数据如果没有被压缩的情况下有地方存储这个逻辑块。一个逻辑块一旦开始被修改,系统就要求实施一个写保护或保存操作把超出磁盘空间的情况记录到内存映射文件中。在完成逻辑块修改后和它被写入磁盘前,才压缩这个逻辑块,然后,根据压缩后的逻辑块的大小,系统只给它分配所需的碎片数。对碎片文件系统而言,它只对小于32KB文件的最后一个逻辑块分配小于4096字节的碎片,与之相比,压缩文件系统对每个文件的每个逻辑块都分配碎片。
压缩的文件系统 ◆ JFS2 不支持压缩的文件系统。 ◆碎片和压缩的文件系统增加了磁盘空闲空间碎片的可能性。分配给一个逻辑块的碎片必须在磁盘上连续。这样就会产生文件系统碎片,这时文件系统虽然有足够多的空闲碎片存储一个新文件,但这些空闲碎片在空间上是不连续的,因此也无法使用。
压缩的文件系统 ◆在碎片文件系统上和压缩文件系统上都可以使用defragfs命令,它能够把许多空间上不连续的碎片整理成可以使用的连续碎片区。
警告: 不能压缩根(/)文件系统和/user文件系统。除了增加磁盘I/O活动和产生空闲空间文件系统碎片(fragmentation)问题,压缩的文件系统还会 压缩的文件系统
压缩的文件系统 产生下列性能问题: ◆ 因为数据压缩/解压缩活动导致文件系统性能下降 如果数据压缩/解压缩的时间太长,就不能使用压缩的文件系统。(尤其是在需要实时访问数据的繁忙的商业环境下。) ◆ 在一个压缩的文件系统中,当一个逻辑块第一次被修改后,就给他分配一个4096字节的逻辑块空间。当逻辑块写到磁盘时,这个空间随后就会被再分配。这种分配的性能成本在非压缩的文件系统就不会产生。 ◆ 在数据压缩时,每字节大约需要50个CPU时钟周期;在数据解压缩时,每字节大约需要10个CPU时钟周期。因此,数据压缩会增加处理器的负载。
支持大文件的文件系统 File = 132 MB (1024 * 4 KB blocks) + (1024 * 128 KB blocks) = 132 MB 4 MB + 128 MB = 132 MB 1025 1026 1 Block 1027 1 1 1 32 Blocks . 4 KB . . 2 128 KB 1055 3 1056 4 . . . 1023 1024 File 1057 128 KB 132 MB 1058 1059 32 Blocks . . . 128 KB
支持大文件的文件系统 ◆ AIX V4.2 及之后版本,JFS支持允许大文件的文件系统。只有允许大文件的文件系统才支持大小大于2 GB的文件。 ◆在允许大文件的文件系统中,在4 MB文件偏移地址前存储的数据按4096字节块大小分配。超出4 MB文件偏移地址范围存储的数据按128KB大小的大磁盘块分配。大磁盘块实际是32个连续的4096字节块。
支持大文件的文件系统 ◆在上图的例子里,在一个允许大文件的文件系统中,一个132 MB大小的文件有1024个4 KB大小的磁盘块和1024个128 KB 大小的磁盘块,这样总共有2048个块。 ◆在一个普通的文件系统中,132 MB 大小的文件需要33个间接块 (每个间接块放1024 4 KB的磁盘地址)。而允许大文件的文件系统中,132 MB大小的文件仅需要2个间接块。在JFS2中,没必要使用允许大文件的文件系统,因为对大文件和文件系统的支持是缺省内嵌的。
小测试 完成下面关于碎片、NBPI和文件系统类型的问题. 1.如果你要创建一个JFS文件系统,该文件系统用于存放大小小于512字节的文件, 下面的值应该是什么? Fragment Size _____________ NBPI_____________ Regular or Large-file enabled ______________________ 2. 如果你要创建一个JFS文件系统,该文件系统用于存放大小为8KB的文件, 下面的值应该是什么? Fragment Size _____________ NBPI _____________ Regular or Large-file enabled ______________________
小测试 3. 如果你要创建一个JFS文件系统,该文件系统用于存放大小为2 MB的文件, 下面的值应该是什么? Fragment Size _____________ NBPI _____________ Regular or Large-file enabled ______________________ 4. 何时使用允许大文件的文件系统? ______________________ 5. 什么时候使用压缩文件系统? ____________________________
Journal日志 1 写入数据 sync / fsync 1) Inode changes to log 2) COMMIT to log 3) Update inode 4) Sync log 3 2 4 i结点 数据块 JFSLOG
Journal日志 ◆ AIX内存映射正在使用的文件。任何对文件的写操作都会先在内存中做,接下来当sync系统调用运行时,才写到磁盘上 ◆ 在未执行系统sync命令前,所有对文件的操作写都被记录在JFS日志里,当执行sync后,JFS日志会提交所有日志记录。每一卷组创建一个物理分区的大小的JFS日志。 ◆ rootvg的JFS 日志(/dev/hd8)是循环日志。通过将元数据信息及时记录到JFS 日志,保证了文件系统的完整性。如图7-12显示了整个事务的流程,文件系统元数据包括对结构的改变,例如对inode和空闲列表的改变。 ◆ 一个内嵌(inline)日志是JFS2的新特性。缺省的内嵌日志的大小是文件系统大小的0.4%。
Journal日志 ◆ 下列表列出了日志的选项以及哪种文件系统类型支持这些选项:
文件系统管理 # smit fs File Systems Move cursor to desired item and press Enter List All File Systems List All Mounted File Systems Add/Change/Show/Delete File Systems Mount a File System Mount a Group of File Systems Unmount a File System Unmount a Group of File Systems Verify a File System Backup a File System Restore a File System List Contents of a Backup Create and backup a snapshot ◆ 文件系统也能用WebSM管理。
显示文件系统信息 # lsfs Name Nodename Mount Pt VFS Size Options Auto /dev/hd4 __ / jfs2 294912 __ yes /dev/hd1 __ /home jfs2 32768 __ yes /dev/hd2 __ /usr jfs2 3309568 __ yes /dev/hd9var __ /var jfs2 65536 __ yes /dev/hd3 __ /tmp jfs2 131072 __ yes /proc __ /proc procfs __ ro yes /dev/hd10opt __ /opt jfs2 163840 __ yes /dev/hd11admin __ /admin jfs2 262144 __ yes /budget sys4 /reports nfs2 __ bg,hard,intr /dev/cd0 __ /cdrom cdrfs __ ro no
显示文件系统信息 ◆ 文件系统也能用WebSM管理。 可以使用lsfs命令列出不同的文件系统。这条命令以更加可读的格式显示来自 /etc/filesystems和逻辑卷的信息。 ◆ 文件系统也能用WebSM管理。 lsfs 也能显示CD-ROM 文件系统和远程NFS文件系统的信息。 ◆ 文件系统也能用WebSM管理。 lsfs命令语法如下: lsfs [-q] [-c | -l ][ -v vfstype | -u mountgrp | file system ] ◆ 文件系统也能用WebSM管理。 带-q参数的lsfs命令会从文件系统的超级块中查询碎片大小、压缩规则和NBPI参数的值。用SMIT显示上图画面的快捷方式命令是smit fs。
显示已安装的文件系统 # mount nodemounted mounted overvfsdateoptions /dev/hd4 / jfs2 Jul 11 20:14 rw,log=/dev/hd8 /dev/hd2 /usr jfs2 Jul 11 20:15 rw,log=/dev/hd8 /dev/hd9var /var jfs2 Jul 11 20:15 rw,log=/dev/hd8 /dev/hd3 /tmp jfs2 Jul 11 20:15 rw,log=/dev/hd8 /dev/hd1 /home jfs2 Jul 11 20:16 rw,log=/dev/loglv00 /proc /proc procfs Jul 11 20:16 rw /dev/hd10opt /opt jfs2 Jul 11 20:16 rw,log=/dev/hd8 /dev/hd11admin /admin jfs2 Jul 11 20:16 rw,log=/dev/hd8 sys4 /budget /reports nfs Jul 11 20:16 rw,hard,bg,intr /dev/ramdisk /ramdisk jfs Jul 11 20:17 rw,nointegrity /dev/project /project jfs2 Jul 11 20:18 rw,log=INLINE /dev/cd0 /cdrom cdrfs Jul 11 20:19 ro
显示已安装的文件系统 ◆ 文件系统也能用WebSM管理。 mount命令不带任何参数时可用来列出所有已经在整个文件系统结构里安装的文件系统。 文件系统只有安装成功才能访问。 ◆ 文件系统也能用WebSM管理。 mount 命令如果带一些参数时可用来做安装操作。 ◆ 文件系统也能用WebSM管理。 有两类文件系统:系统创建的和用户创建的。 ◆系统创建的文件系统位置固定。 ◆用户创建的文件系统包含用户应用和数据。