第九章 文件系统

===============================================

可参见“理论基础”笔记本下的《Fragment size, 逻辑块,及"存放用户数据的数据块"3者的关系》

===============================================

一、概述

AIX可以由很多文件系统组成,但是只有一个根文件系统(/),根文件系统存在于rootvg中。AIX系统本身私有的文件系统是JFS和JFS2,除此之外,AIX系统还支持CD-ROM、DVD-ROM文件系统和NFS(网络文件系统)。JFS2是安装64位内核以后默认的文件系统。用户可以选择JFS和JFS2,32位环境推荐JFS,64位环境推荐JFS2。Itanium平台只支持JFS2。

文件系统的大小不能超过逻辑卷的大小。除了根文件系统以外,其他的文件系统都是独立于根文件系统,用户要访问一个非根文件系统就必须把他安装在根文件系统的一个空目录或者其他某个非根文件系统(必须是已安装)的一个空目录上。

文件系统是一个逻辑上的概念,存放文件系统的设备可以是硬盘、光盘、RAM disk(内存磁盘)。文件系统之间不能相互覆盖,而是分散在不同的(逻辑设备)上。

除了文件和目录以外,文件系统还包括超级快、i节点、数据块、分配位图和分配组,一个分配组包含磁盘i节点和碎片(Fragment)。管理文件系统用#smit fs命令。

二、rootvg中的文件系统

当安装AIX操作系统以后,rootvg中就会存在7个日志型文件系统,分别是:root文件系统(/dev/hd4),/proc文件系统,/usr文件系统(/dev/hd2),/var文件系统(/dev/hd9var),/home文件系统(/dev/hd1),/tmp文件系统(/dev/hd3)和opt文件系统(/dev/hd10opt)——这些文件系统都是在安装AIX操作系统的过程中建立的。

AIX系统的整个文件系统分为基本文件系统和可装卸文件系统两部分。基本文件系统指根文件系统(/),他是整个文件系统的基础,一般固定在内置的第1快可引导硬盘上。各个可装卸文件系统一般存储在可移动的硬盘上,一旦启动文件系统以后,根文件系统不能被卸载,其他文件系统可以随时被安装。每个可安装文件系统都有自己的独立的目录结构,每个可装卸文件系统都有自己的根目录,他的根安装在根文件系统的一个目录上,这个目录称之为可装卸文件系统的安装点。

root文件系统内容(/dev/hd4)——

/etc    ---->包含着配置文件,一般用于系统管理。以前的位于/etc目录下的大多数命令被放置到/usr/sbin目录下,但是为了保持兼容性,/etc目录下依然保留一些指向/usr/sbin目录下的可执行文件的符号链接。

/bin    ---->该目录是指向/usr/bin目录的符号链接。,在以前的UNIX系统中,/bin目录包含着用户的命令,现在被放置到到/usr/bin目录中去。

/sbin    ---->包含着引导机器和安装/usr文件系统时所需的文件。这个目录中大多数命令在引导镜像的RAM disk文件系统引导系统的过程中使用。因此该目录中命令很少。

/dev    ---->包含设备节点和本地设备的特殊文件,主要有磁盘驱动器,磁带驱动器,打印机,终端和LVM设备等。

(后边还有好多...)

/tmp    ---->位于/dev/hd3逻辑卷上。存放所有用户产生的零时文件,应定期清理。

/var    ---->/var文件系统的安装点,把/var目录配置成一个文件系统的原因是,/var目录中所包含的文件随着系统持续运行而增大。

/home    ---->/home文件系统的安装点,用户的HOME目录。

这个系统里,把/home目录安装到网络文件系统上了,如果在本机安装,则默认是/dev/hd1逻辑卷上。

/usr    ---->/usr文件系统安装点,包含了许多只读的命令、程序库和数据

/lib    ---->指向/usr/lib目录的符号链接

/tftpboot    ---->包含用于引导无盘工作站(客户端)的引导镜像和引导信息

/opt    ---->文件系统/opt的安装点。主要用户安装附加的应用程序软件包。也是5L亲和linux应用程序的一部分。

/usr文件系统内容(/dev/hd2)——

/usr/bin    ---->包含二进制命令和脚本

/usr/ccs    ---->包含单独购买的二进制开发包

/usr/include    ---->C语言的include文件或头文件

/usr/lbin    ---->命令后端(Backend)的可执行文件

/usr/lib    ---->体系结构独立的程序库,程序库名字的格式是lib*.a

/usr/lpp    ---->包含已安装的可选软件产品

/usr/sbin    ---->包含用于系统管理的工具,包含SMIT命令。大多数位于/etc目录的命令也出现在该目录中

/usr/share    ---->包含被共享的文本文件

/usr/adm    ---->指向/var/adm的符号链接

/usr/mail    ---->指向/var/spool/mail目录的符号链接

/usr/news    ---->指向/var/news目录的符号链接

/usr/preserve    ---->指向/var/preserve目录的符号链接

/usr/spool    ---->指向/var/spool的符号链接

/usr/tmp    ---->指向/var/tmp的符号链接

/usr/dict    ---->指向/usr/share/dict的符号链接

/usr/man    ---->指向/usr/share/man目录的符号链接

/usr/lpd    ---->指向/usr/lib/lpd目录的符号链接

/var文件系统内容(/dev/hd9var)——

/var/adm    ---->包含系统日志和记账文件

/var/news    ---->包含系统新闻

/var/preserve    ---->保存着由vi编辑器正在处理的文件,保护这些数据不会被中断的编辑会话损坏,类似于以前版本中的/usr/preserve目录

/var/spool    ---->电子邮件程序,打印机假脱机程序等,另外,/var/spool/cron/crontabs/目录下有各个用户的

crontab 文件

/var/tmp    ---->包含临时文件的目录。/usr/tmp目录现在是一个指向/var/tmp目录的符号链接

/proc文件系统——

/proc是一个伪文件系统,该伪文件系统用相应的文件映射进程和内核数据结构。在/proc文件系统中,每一个子目录就是一个进程,目录名是进程号(PID)

/proc文件系统的VFS(虚拟文件系统)代码是6.

在/proc文件系统中,每一个目录对应一个进程,在子目录中,为了对应内部进程控制数据结构而创建若干个文件或子目录,这些文件大多数是只读的,但是为了控制进程,可以对有些文件实施写操作。访问这些文件的数据结构在/usr/include/sys/procfs.h文件中做了详细的描述和定义。在/proc文件系统中,每个文件的所有者(属主和属组)属性和对应进程的所有者属性相同,因此普通用户只能访问/proc文件系统中属于自己的进程的文件。

三、日志型文件系统(JFS)

创建JFS需要确定的参数有:i节点(i-node)数量、分配组(Allocation Group)大小,碎片(Fragment)大小、日志型文件系统的日志大小和文件系统的大小。

逻辑块(Logical Block)——

JFS简历在LV上,JFS把LV分成许多个固定大小的单元,称为Logical Block,LB大小一般为4096字节,相当于内存页的大小,因此有时也把LB称为页(Page)。LB不时有形的实体,然而LB中的数据占据着磁盘的物理存储空间。LB包含目录和文件,每个目录或文件由0个或多个LB组成,为了存储,一个LB又分为多个碎片(Fragment),相对于LB,Fragment是最小的存储单元。逻辑块大小在创建文件系统前后是不能改变的

LB在文件系统中以一下几种形式存在:

1)逻辑卷控制块(LCVB):文件系统建立在逻辑卷上,逻辑卷的最开始的第1页(4096字节)的区域就是文件系统中的第1个逻辑块(块号为0),文件系统没有使用这个LB,这个LB是LVCB。

2)超级块(Superblock):文件系统的第2个逻辑块(块号为1,称为主超级块)称为超级快(逻辑块号为31作为第2个逻辑块的备份,称为次超级快)。超级块包含整个文件系统的大小(以512字节作为单位来计算)、文件系统的名字、日志设备的地址,版本号和文件系统的状态等。

3)分配组(Allocation Group):文件系统中剩余的逻辑块被分成许多个分配组。当一个分配组分配给目录和文件时,分配组就由数据块和涉及这些数据块的i节点组成,这些分配组可用来确定数据存储在一个磁盘上的物理位置。

逻辑块31从不使用,用来对逻辑块1进行灾难恢复。逻辑块2-30之间保存着特殊的i-node。第一个分配组从32号逻辑块开始,分配组包括i-node和数据块,i-node占据多少块逻辑块取决于分配组中包含固定inode的数目而定,假设inode到m号逻辑块,那么从m+1到n就是一般数据块。从n+1则是另一个分配组了。

特殊inode的作用,只能有根目录(/)来使用。

1)inode0:保留,不分配

2)inode1:用于超级快(Superblock)

3)inode2:用于根目录

4)inode3:用于管理节点(.inode)

5)inode4:管理间接地址块(.indirect)

5)inode5:用于inode的分配位图(.inodemap)

6)inode6:用于磁盘分配位图(.diskmap)

7)inode7:用于inode的扩充(.inodex)

8)inode8:用于inode的扩充分配位图(.inodexmap)

9)inode9-16:保留

超级快(Superblock)——

超级快包含整个文件系统的重要参数,他的数据结构在/usr/include/jfs/filesys.h文件中定义,超级快的定义如下:

文件系统碎片(Fragment)——

为了减少存储空间的浪费,引入了Fragment的概念。假设一个Fragment是512字节,逻辑块(Logicalblock)大小是4096字节,那么一个LB可以分成4个Fragment。JFS支持的Fragment大小有512、1024、2048、4096字节。默认Fragment大小是4096字节。不同的FS可以有不同的Fragment大小,但是在一个文件系统中只能有1种Fragment大小。

JFS在inode和间接块中用一个28位(bit)的数来保存一个Fragment的地址,每一个Fragment可以用0到2^28之间的一个数作为地址。Fragment是存储空间中最小的可编制单元。

在巨型文件系统中,Fragment大小有两种,一种是32*4096字节(128K),一种是4096字节。当文件大于4MB,就在逻辑块上分配128的大碎片,当文件未超过4MB,就在逻辑块上分配4096字节的Fragment。

给一个文件或目录逻辑块分配的Fragment必须是连续的,不连续的Fragment不能用于存储一个文件。对于存在大量残片的文件系统,用#defragfs命令可以使这些分散的碎片连续化,但是defragfs命令的执行会对文件系统的性能产生影响。

每一个inode拥有的字节数(nbpi)——

每一个文件或目录需要一个inode,必须有以后总方法能够指定所需要inode的数量。一个文件系统中国inode的数量限制着这个文件系统中文件数量和文件系统大小。日志型文件系统有一个nbpi参数。他影响着文件系统中inode的数量。日志型文件系统支持的nbpi值有512,1024,2048,4096,8192,16384,32768,65536,131072,最后三个值只适用于AIX4.2以后的系统,在创建文件系统的时候,要指定nbpi的值,它的默认值是4096。在不改变文件系统大小的前提下,当nbpi值越小,越需要有更多的inode来管理。

分配位图(Allocation Bitmap)——

分配位图包含两种:

1)碎片分配映射图

2)磁盘i节点位图

碎片作为分配磁盘空间的基本单位,文件系统中每一个碎片的分配 状态都会记录在文件系统的“碎片分配映射图”中。磁盘i节点位图记录着每一个i节点的状态。

分配组(Allocation Group)——

每个分配组都包含inode和数据块。由于inode和它指向的数据块在同一个分配组中,因此不管inode分布在磁盘的何处,使用一个简单的公式一句inode节点号和包含在超级快中的分配组的信息就可以很快确定一个inode的具体位置。当增加一个文件系统大小的时候,分配组的数量也随着增加,当增加了一分配组,文件系统就会包含更多的inode和数据块。

每一个分配组包含着一个固定数量的连续inode。这些inode占用了分配组中一些碎片,在创建或扩展文件系统时就为inode而预留出这些碎片。保存inode的逻辑块从每个分配组的第1个逻辑块开始。每一个inode的大小是128字节,每一个inode节点号唯一地标识一个inode。inode节点号映射着一个inode在磁盘上的位置或者分配组中的一个inode(就看inode映射指向一个目录还是一个文件)

描述文件系统的分配组有3种大小。

1)碎片分配组大小

2)磁盘inode分配组大小

3)每个分配组中的磁盘inode数量。

默认分配组大小是8MB,从AIX4.2开始,最大可达64MB。这三个值保存在文件系统的超级块中,而且是在文件系统创建时设置的。

用dumpfs命令可以查看文件系统碎片的代销和分配组大小

JFS日志(Log)——

AIX使用一个特殊的逻辑卷来记录文件系统对元数据(Meta-Data)的修改情况,这个特殊的逻辑卷叫做JFS日志设备。在文件系统结构中产生的所有事物(元数据)都会被记录到一个JFS日志逻辑卷。文件系统的元数据包括超级块,inode,间接数据指针和目录等。

如果JFS日志和文件系统在同一个物理硬盘上,就会产生I/O瓶颈,建议将JFS日志设备迁移到另一块物理硬盘上。用#filemon命令可以监视文件系统的性能和报告文件、虚拟内存段,逻辑卷和物理卷的I/O活动。默认情况下,一个JFS日志设备维护一个卷组中所有文件系统的日志数据,也就是多个文件系统使用一个共同的JFS日志(通常他的大小相当于一个物理分区)。

四、索引节点(Index Node)

每一个文件(目录是一个特殊的文件)都有一组控制信息 ,如文件的类型、访问权限、用户ID、组ID和文件的连接数等。UNIX系统中,为了加快文件的搜索速度,便于实施文件共享,将这些信息从目录项中分离出来,单独构成一个数据结构——文件控制块或索引节点,成为磁盘i节点。

在文件系统中,开辟了许多个连续的区域,用来存放i节点,在每个区域的i节点是按顺序编号。每个文件都有一个对应的i节点用来存放其控制信息和数据块的位置信息。因此,本质上说,一个i节点是一个指向文件数据块的指针。

日志型文件系统的inode是一个128字节的数据结构,在i节点列表中,由操作系统为每一个i节点产生一个唯一的i节点号,用来标识每一个i节点。

一个i节点所包含的主要内容——

1)JFS2文件系统的i节点是一个512字节的数据结构,由4部分组成,各占128字节。第1部分是基本区,包含上表。第2部分是扩展区,第3 部分是类型依赖区,第4部分是类型依赖扩展区。

2)文件名并没有包含在i节点中,而是保存在文件所在的目录文件中。目录中的记录把文件名和它的i节点做了映射

3)设备文件的i节点与普通文件的i节点所包含的信息有一些细微的差别。与设备有关的文件称为特殊文件或设备文件,在设备文件的i节点中不包含数据块的地址,但是设备的主、次设备号保存在i_rdev(或di_rdev)字段中

4)i节点记录着文件的属性以及存储文件内容的磁盘块地址。因此修改文件的内容,一定也会修改它的i节点,只改变文件的内容而不改变文件的i节点是不可能的,但是存在至改变文件的i节点,但是不改变文件内容的情况。

5)i_rdaddr字段包含着8个磁盘地址,这些地址指向分配给这个文件的前8个数据块。i_rindirect字段中的磁盘地址指向一个节间地址块,这个间接地址块可以是单次间接地址块,也可以是二次间接地址块。

==================================================

这里讲的“i_rdaddr字段包含着8个磁盘地址,这些地址指向分配给这个文件的前8个数据块”我认为就是指的是指向Fragment的地址,与上边将Fragment的时候这句话对应:“JFS在inode和间接块中用一个28位(bit)的数来保存一个Fragment的地址,每一个Fragment可以用0到2^28之间的一个数作为地址。Fragment是存储空间中最小的可编制单元。

因此,i节点可以寻址/索引一个文件,Fragment是文件系统中最小的可编址单元——这两句话并不冲突,i节点在下边所讲的直接、间接、二次间接等类型的寻址中,如果一个文件的大小超过了一个i节点本身所能指向的数据块(i_rdaddr0-7一共8个)所包含的容量,那么i_rindirect字段就会引导到“间接磁盘地址块”来继续寻址,但这里是地址块,不是另外一个i节点了——所以1个i节点还是对应/寻址/索引一个文件,Fragment是与i_rdaddr和间接磁盘地址块来对应的

==================================================

6)在普通的JFS中,用i_rindirect字段来对磁盘空间的寻址有以下4种方法。

直接寻址:适合较小的文件

间接寻址:适合中等的文件

二次间接寻址:适合非常大的文件

允许巨型文件的文件系统寻址

磁盘的i节点和内核的i节点

当打开一个文件时,操作系统就会在内核中创建一个i节点,把这种i节点称为内核中的i节点,这是相对于磁盘中的i节点而言的。内核i节点包含这个文件对应的磁盘i节点中所有字段的内容,此外还增加了一些用于管理内核i节点的字段。

在AIX系统中,文件的i节点可分为两种,一种是静态的磁盘i节点,一种是动态的内核i节点。磁盘i节点保存在磁盘上,内核i节点位于系统的内核区,即JFS缓冲区。

1)磁盘i节点

日志型文件系统的i节点在磁盘上是以一种静态格式存在,它包含着这个文件的访问信息,还指出这个文件的数据块的实际磁盘地址。一个文件系统中包含的可用i节点数取决于这文件系统的大小,分配组的大小(默认8MB)和nbpi比率(默认4096字节)。用#df -v可以查看一个文件系统可用的i节点数。

在JFS2文件系统中,i及诶单是由JFS2动态分配的。

2)内核i节点

无论是操作系统还是用户的应用程序打开一个文件,操作系统为了便于访问这个文件的i节点,就把这个文件的磁盘i节点中的信息复制到一个内核i节点中。在内核i节点中还包含了一些用于跟踪内核i节点的字段。

五、增强的日志型文件系统(JFS2)
        在JFS中,超级块大小是4096字节,超级块在逻辑卷中的偏移量是4096字节,而在JFS2中,超级块大小仍是4096字节,但是超级块在逻辑卷中的偏移量是32768字节,此外,超级块中还包含了一个文件系统的逻辑块。

JFS2新功能

1)基于片区(Extent)的寻址结构

片区是一个连续的可变长的文件系统块的序列,他是JFS2对象的分配单位。“大”片区可以跨越多个分配组

片区由长度和地址这两个值来定义。片区的长度是用一个24位的数来表示,他是以文件系统块为单位来计算的,则一个片区的大小范围从1到(1^24-1)个文件系统块,因此最大的片区大小由文件系统块大小来决定。片区的地址是片区中第1个块的地址,地址的单位也是快,地址是指从文件系统开始的块偏移量。

JFS的分配策略通过为每一个片区分配尽可能大和连续的空间来使文件系统中片区的数量达到最小,使逻辑块的分配更加连续。

2)可变的逻辑块的大小

JFS2支持512,1024,2048和4096字节的块大小,不同的文件系统可以使用不同的块大小,但是同一个文件系统只能有一种块大小

=====================================

这个和前边的Fragment的概念类似,同一个FS只能有一个Fragment,但是不同的FS的Fragment可以不同。

=====================================

3)动态分配磁盘i节点

JFS2给磁盘i节点动态地按需分配空间,当i节点不再需要就会释放i节点所占用的空间。

4)目录组织

5)在线整理文件系统的空闲碎片

残片整理程序由两部分组成。

第1部分是JFS2的用户实用程序,它检测文件系统的元数据来确定空闲残片空间的范围,同时确定为了减少或消除残片所需要的文件系统重组活动。第2部分被集成到JFS2扩展内核中并由用户实用程序调用。它完成实际的重组操作,并会在文件系统日志的保护下以适当的顺序执行这些操作,以维护文件系统的一致性。

JFS2和JFS的兼容性

对于JFS,只能把4.x服务器上的卷组导入到5L服务器中,或者只能把4.x中的文件系统安装到5L中。相反,绝对不能在4.x服务器上安装或导入JFS2类型的文件系统。

当要把一个JFS类型的文件系统迁移到JFS2时,只能使用备份,恢复的办法来完成迁移。

JFS2日志(log)

AIX5L中对JFS2类型文件系统来说有两种日志:传统的独立日志(AIX文档中称为Outline Log),另一种是内嵌日志(Inline Log)。独立日志与JFS的日志一样,单独在一个逻辑卷中,在同一个卷组中的所有JFS2类型文件系统都共享这一个日志。 内嵌日志是针对一个具体的JFS2类型文件系统来说,一个JFS2类型文件系统的内嵌日志和文件系统在同一个逻辑卷上,即JFS2的内嵌日志位于文件系统的逻辑卷内部。

默认JFS2独立日志的大小最大为1GB,内嵌日志大小为32MB。

六、维护文件系统

由于文件系统位于逻辑卷上,所以直接将逻辑卷删除,文件系统也将不复存在,因此用rmlv命令删除逻辑卷的同时,也就删除了文件系统,但是不会从/etc/filesystems文件中删除文件系统的记录,同理,用rmfs命令删除文件系统的同时也就删除了对应的逻辑卷

1)fsck维护检查文件系统

当意外关闭电源,或者系统意外关闭,一般会丢失数据,严重的会破坏文件系统的完整性。这时就需要用fsck命令检查文件系统的一致性,同时修复被破坏的文件系统。

必须在安装文件系统之前运行fsck命令检查和修复文件系统,也就是说只能在文件系统被卸载后才能使用fsck命令。使用fsck命令,必须保证文件系统的设备(文件系统对应的逻辑卷)是可以访问的。

通常情况下,文件系统是完整的,fsck命令仅仅是报告这个文件系统中的文件数、已用的块数和空闲的块数。如果文件系统有问题,fsck则显示有关问题的信息,同时提示用户是否修复它。默认情况下,对每一个问题的修复,都需要用户确认同意来修改,如果用户对一个有问题的文件系统没有写权限,那么fsck命令默认地会认为用户回答了no。

2)初始化JFS(JFS2)日志设备

当在一个卷组重创建一个文件系统的时候,同时也就自动创建了一个JFS(JFS2)日志设备,用户也可以手动创建一个JFS日志设备,系统中的每一个JFS(JFS2)文件系统都必须使用一个JFS(JFS2)日志设备。不同的文件系统可以使用不同的JFS(JFS2)日志设备,也可以使用同一个JFS(JFS2)日志设备。

JFS(JFS2)日志记录着对文件系统修改的元数据信息,当对文件系统的修改出现问题的时候,可用依靠JFS日志来吧没有完成的修改操作做完。

把一个裸逻辑卷成JFS(JFS2)日志设备,用logform命令来初始化(格式化)这个逻辑卷。logform命令具有破坏性,它会擦去逻辑卷上的所有数据。一旦安装某个文件系统,那么这个文件系统的JFS日志设备就处于open状态。

要对该日志设备初始化,就必须先卸载该文件系统,使其处于Closed状态,然后在运行logform命令。

用lsvg -l vgname命令可以查看日志设备是否处于CLosed状态。

而要增加一个JFS或JFS2日志设备,首先用mklv命令创建一个新的逻辑卷,然后用chlv命令修改逻辑卷的类型为jfslog或者是jfs2log,命令如下:

#chlv -t jfslog lv03    或

#chlv -t jfs2log lv05

最后再用logform命令来初始化日志设备

#logform -V jfs /dev/lv03

#logform -V jfs2 /dev/lv05

3)监控文件系统空间

以下日志文件要定期检查或定期清理:

/var/adm/wtmp

/var/spool/*/*

/smit.log

/smit.script

/etc/security/failedlogin

/var/adm/sulog

/*/core

上述/var/adm/wtmp、/etc/security/failedlogin和/var/adm/sulog3个文件记录着有关系统安全的历史信息,因此应该保留他们。他们所在的文件系统分别是/var和/,因此要为他们留出足够大的空间。

当然也可以用#who -a命令来显示var/adm/wtmp、/etc/security/failedlogin文件的内容,并重导向到文件中备份,然后在用如下命令清空:

# > /var/adm/wpmp(不能用rm删除,否则就不能写日志了)

/var/adm/sulog文件是一个文本文件,可以用vi共聚编辑它。

生成的core文件直接删除即可

#find / -name core -exec rm{}\;

七、使用CDRFS和UDFS

在AIX5.2开始,一旦把一个cd和dvd插入到驱动器中,就会自动安装cd-rom/dvd-ram文件系统。cd/dvd的自动安装功能包含在bos.cdmount文件集中,默认情况下就会安装这个文件集,用lslpp -L bos.cdmount命令可以检查是否安装了这个文件集。

cdromd进程

CD/ROM/DVD-RAM文件系统的自动安装功能由cdrom进程实现,而cdromd进程由系统资源控制器来管理,要启动cdromd,则使用以下命令

#startsrc -s cdromd

如果要在系统自动启动时自动启动cdromd进程,就在/etc/inittab文件中添加下边一行记录,并且该记录必须放在SRC的记录之后,通过以下命令添加这条记录——

#mkittab "cdromd:23456789:wait:/usr/bin/startsrc -s cdromd"

当cdromd进程启动时,它就会读取/etc/cdromd.conf配置文件系统的内容,来获取它要管理的设备列表和相应的安装点。默认,/etc/cdromd.conf没有任何记录。如果cdromd.conf文件不存会或者是空的,cdromd进程会管理CuDv类中定义的所有可用的cd-rom和dvd-rom设备,并以/cdrom/cdN格式定义这些CDRFS和UDFS的默认安装点。

如果cdromd进程启动时,一个应用程序正在使用这个设备,这个打开操作就会失败,并显示设备忙。所有的初始化工作完成之后,cdromd进程周期性检查这些驱动器(只检查那些安装了CDRFS或UDFS的设备)中是否放入了介质,一旦在cdromd.conf文件中定义的设备有介质放入时,cdromd进程就会自动安装这些文件系统。

/etc/cdromd.conf文件

可以进入系统去看这个默认文件,讲的很详细

#cat /etc/cdromd.conf

八、减小文件系统

文件系统的空间只能增加不能减小,但是可以用其他途径来实现文件系统空间的减小。

1)用df命令检查要减少空间的文件系统,记录已使用的空间大小

2)用下笔那任意一种方法备份这个文件系统

cpio    ---->以输入/输出的方式复制文件

backup    ---->在磁带或软磁盘上备份文件或文件系统

savevg    ---->备份一个用户卷组

tar    ---->UNIX系统中最为常用的归档命令

3)删除这个文件系统

4)用原来的文件系统名和减少后的大小新建一个文件系统。

5)恢复原来文件系统中的文件

以上方法只适用于用户自定义的文件系统,如果要缩小系统定义的文件系统,因为系统运行时无法删除这种文件系统,因此只能用mksysb备份来减少它的空间,在用mksysb备份恢复rootvg过程中,在/image.data文件的logical_policy节中,当用户把SHRINK选项设置为yes,就可以系统缩小这个文件系统。

时间: 2024-10-05 19:15:19

第九章 文件系统的相关文章

第九章、文件与文件系统的压缩与打包 3. 打包命令: tar

打包命令: tar gzip 与 bzip2 也能够针对目录来进行压缩, 不过,这两个命令对目录的压缩指的是『将目录内的所有文件 "分别" 进行压缩』! 将多个文件或目录包成一个大文件的,『打包命令』 tar [[email protected] ~]# tar [-j|-z] [cv] [-f 创建的档名] filename... <==打包与压缩 [[email protected] ~]# tar [-j|-z] [tv] [-f 创建的档名] <==察看档名 [[e

Android群英传笔记——第九章:Android系统信息和安全机制

Android群英传笔记--第九章:Android系统信息和安全机制 本书也正式的进入尾声了,在android的世界了,不同的软件,硬件信息就像一个国家的经济水平,军事水平,不同的配置参数,代表着一个android帝国的强弱,所以厂商喜欢打配置战,本节就要是讲 Android系统信息的获取 PackageManager的使用 ActivityManager的使用 Android安全机制 一. Android系统信息的获取 由于android手机的开源性,手机的配置各种各样,那些优化大师之类的东西

第九章:逻辑卷LVM

第九章:逻辑卷LVM 现实生产环境中,经常会遇到磁盘空间不够用的情况,无论规划的多么好,最终还是会遇到这种情况.所以说,磁盘分区没有一个标准的格式,只能根据自己的服务器应用来适当进行划分.那么遇到这样的问题我们如何解决呢?本章我们就来介绍解决之法-逻辑卷管理(LVM). LVM(Logical VolumeManager),通过这种技术可以随意扩大或缩小磁盘或分区的容量.LVM的实现是把磁盘.分区或RAID设备通过软件组合成一块独立的VG,然后将这个VG再进行划分LV,这时候的LV就相当于一个分

javascript高级程序设计 第九章-- 客户端检测

javascript高级程序设计 第九章-- 客户端检测 客户端检测是javascript开发中最具争议的一个话题,由于浏览器间存在差别,通常需要根据不同浏览器的能力分别编写不同的代码.有下列常使用的客户端检测方法:能力检测:在编写代码之前先检测特定浏览器的能力.例如,脚本在调用某个函数之前,可能要先检测该函数是否存在.这种检测方法将开发人员从考虑具体的浏览器类型和版本中解放出来,让他们把注意力集中到相应的能力是否存在上.能力检测无法精确地检测特定的浏览器和版本.怪癖检测:怪癖实际上是浏览器中存

zabbix专题:第九章 自定义key(案例:监控内存,监控nginx状态)

第九章 自定义key 对Linux有兴趣的朋友加入QQ群:476794643 在线交流 本文防盗链:http://zhang789.blog.51cto.com 为什么要自定义KEY 有时候我们想让被监控端执行一个zabbix没有预定义的检测,zabbix的用户自定义参数功能提供了这个方法.我们可以在客户端配置文件zabbix_angentd.conf里面配置UserParameter. 语法如下: UserParameter=key,command 用户自定义参数包含一个key和一个命令,ke

读书笔记第九章

第九章HAL是建立在linux驱动之上的一套程序库.这套程序库并不属于linux内核,而是属于linux内核层之上的应用层.可以用来保护不想公开源代码的作者.HAL架构比较简单,其基本原理就是在安卓系统中使用程序库调用位于内核空间的linux驱动,然后安卓应用程序可以通过NDK程序访问HAL中的程序库,或直接在安卓应用程序中访问HAL中的程序库.编写一款支持HAL的linux驱动程序的步骤:1.编写linux驱动,linux驱动的代码要尽量简介,尽可能将业务逻辑放到HAL library中.2.

第九章 两种模式的比较

#include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <assert.h> #include <stdio.h> #include <unistd.h> #include <errno.h> #include <string.h> #include

第九章 用多线程来读取epoll模型下的客户端数据

#include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <assert.h> #include <stdio.h> #include <unistd.h> #include <errno.h> #include <string.h> #include

第九章 TCP和UDP同时用复用一个端口实现一个回射服务器

#include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <assert.h> #include <stdio.h> #include <unistd.h> #include <errno.h> #include <string.h> #include