存储管理、LVM和文件系统(下)
导航:
管理逻辑卷
文件系统
五、管理逻辑卷
一个逻辑卷映射一个或多个物理卷,具体取决于您希望维护的数据副本的数量
单个逻辑卷副本,表示存在一个逻辑分区到物理分区的映射
添加逻辑卷
使用mklv命令创建逻辑卷,该命令指定逻辑卷的名称并定义其特征,包括要分配的逻辑分区数量(默认为128个逻辑分区)
mklv命令标志:
-c设置每个逻辑分区的物理分区数量
-i从标准输入读取Phsical Volume的参数
-L设置逻辑卷标签。标签大小为127个字符,如果逻辑卷将用做日记记录文件系统(JFS),JFS将使用此字段来存储文件系统在该逻辑卷上的挂载点。
-P指定逻辑卷特殊文件的权限(文件模式)
-t设置逻辑卷的类型。标准类型为JFS(文件系统)、JFSLOG(日记文件系统日志)和paging(分页空间)
-y指定要使用逻辑卷的名称
示例:在rootvg中创建一个新逻辑卷newlv,并且该逻辑卷有10个逻辑分区,每个逻辑分区由两个物理分区组成。
mklv -y newlv -c 2 rootvg 10 或使用smit mklv命令
删除逻辑卷
使用rmlv命令删除逻辑卷
rmlv命令标志:
-f删除逻辑卷而不请求确认
-p仅删除PV上的逻辑分区。
示例:删除逻辑卷newlv
rmlv newlv 或者smit rmlv
缩小逻辑卷的大小
备份逻辑卷中的所有数据->删除该逻辑卷->重新创建具有缩小逻辑分区分配的逻辑卷->还原数据
增加逻辑卷的大小
使用extendlv命令或者smit extendlv增加现有逻辑卷的大小
示例:将逻辑卷增加3个额外分区
extendlv newlv 3
复制逻辑卷
示例:使用cplv命令复制逻辑卷,将逻辑卷oldlv中数据复制到卷组myvg中的newlv逻辑卷
cplv -v myvg -y newlv oldlv
注:如果未指定卷组,则默认在oldlv所在卷组创建新的逻辑卷
示例:将逻辑卷oldlv复制到现有逻辑卷existinglv
cplv -e existinglv oldlv
注:如果cplv创建新的逻辑卷,并且卷组是以并发模式varyon的,则此命令会失败;
不要将包含较大数据的逻辑卷复制到较小逻辑卷,会导致破坏文件系统。
示例:更改逻辑卷的类型为copy
cplv -t copy newlv
拆分逻辑卷的副本
splitlvcopy拆分一个逻辑卷中的副本,并从这些副本创建一个单独的新逻辑卷。拆分逻辑卷之前应卸载文件系统并关闭逻辑卷
注:splitlvcopy命令可以拆分已打开的逻辑卷,包含那些已挂载的文件系统的逻辑卷。建议不要这么做,如果多个进程同时访问该逻辑卷,LV和newlv可能会失去一致性。
示例:要拆分逻辑卷oldlv中的每个逻辑分区的一个副本(当前有三个副本)并创建一个新的逻辑卷newlv
splitlvcopy -y newlv oldlv 2
现在oldlv中每个逻辑分区含有2个物理分区
现在newlv中每个逻辑分区含有1个物理分区
列出逻辑卷
使用命令:lsvg |lsvg -il
逻辑卷大小
总的逻辑卷大小=PP大小 * 分配到LV的LP的数量 * LV的副本数量
六、文件系统
AIX支持三种文件系统:
日记记录文件系统(Journaled file system,JFS)
本机文件系统,每个日记记录文件系统驻留在单独的逻辑卷中,操作系统在初始化期间挂载某些日记记录文件系统(启动和运行系统所必须的日记记录文件系统)
网络文件系统(NFS)
分布式文件系统,允许用户访问远程计算机上的文件和目录。
CD-ROM文件系统(CDRFS)
允许通过一般的文件系统接口来访问CD-ROM中的内容
日记记录文件系统将逻辑卷划分为许多固定大小的单元,这些单元称为逻辑块。文件系统中的逻辑块按照以下方式组织:
逻辑块0
文件系统的第一个逻辑块被保留,可用于引导程序或其他所需的信息,文件系统不适用此块。
超级块
第1~31逻辑块用于超级块。超级块包含相关信息,文件系统总大小,文件系统名称,文件系统日志设备地址、版本号和文件系统状态。
分配组
文件系统中其余的逻辑块分为许多分配组,分配组由数据块和索引节点组成,当数据块分配到目录或文件时,将使用索引节点来引用那些数据块。
管理日记记录文件系统
文件系统是文件、目录和其他数据结构的集合。
文件系统对相关信息进行维护,并标示文件或目录数据的具体位置。
文件系统还包含一个引导块、一个超级块、位图一个或多个分配组。分配组包含磁盘索引节点和分段(fragment)
日记记录文件系统的特征
索引节点的数目
分配组的大小
文件系统分段的可寻址性
日记记录文件系统的日志大小
日记记录文件系统的最大大小
索引节点的数目
文件系统中的索引节点总数限制了文件总数和该文件系统的总大小。JFS提供了nbpi(每个索引节点的字节数)参数,用于改变文件系统中的索引节点数目。
JFS支持的nbpi值为512、1024、2048、4096、8192、16384、65536和131072。
创建nbpi为4096的8M文件,将为每4096字节的数据创建一个索引节点,导致8M的文件系统最多有2048个索引节点。
JFS将所有文件系统限制为16MB的索引节点
分配组的大小
AIX将文件系统空间隔离为索引节点和用于用户数据的磁盘块的分组,这些分组成为分配组。分配组的大小可以在创建文件系统时指定,分配组大小可以为8MB、16MB、32MB、64MB
文件系统分段的可寻址性
JFS支持4种分段大小:512、1024、2048和4096字节的连续磁盘空间单元。JFS在索引节点和空间块中维护28位数字的分段地址。每个分段必须可通过0~2的28次方大小的数字寻址。
分段是最小的可寻址存储单元。如果文件主要是大小为400字节,则512的分段大小将是最高效的。
日记记录文件系统的日志大小
多个日记记录文件系统使用一个公共日志,成为JFS日志,并配置为一个4MB大小。
初始安装之后,根卷组中的所有文件系统都是用逻辑卷hd8作为公共JFS日志,缺省为4MB,并且缺省的日志大小为一个分区;
当使用单个日志的文件系统空间总量超过2GB时,需要增加缺省日志大小,JFS日志仅限于最大256MB。
日记记录文件系统的最大大小
最大的JFS大小是在创建文件系统时定义的。
文件系统大小限制为(npbi*224)或分段大小*228的最小值
创建文件系统
使用smit crjfs创建日记记录文件系统
注意:在AIX中,所有的I/O都是以4KB的块进行;但空间是以512字节块的倍数进行分配的,能够创建的最小文件系统等于一个pp。
示例:512字节 = 1个块
1024字节 = 2个块
1MB = 2 * 1024个块
xMB = x * 1024个块
示例:创建一个4KB的日记记录文件系统,并将/dummy作为在rootvg卷组中的挂载点。
挂载文件系统
挂载指的是使用户能够在特定位置使用文件系统、文件、目录、设备和特殊文件。
AIX使用挂载点将新创建文件系统连接到其他文件树的过程:
注意:将文件系统挂载到某个目录中,所挂载文件系统根目录的权限优先于挂载点的权限
常见问题是pwd命令失败,由于没有挂载点目录的搜索权限,返回permission denied。
通过将挂载点目录的权限至少设置为111,可以避免此问题。
使用命令行挂载文件系统(/FileSystemX)
mount /FileSystemX
如果知道与文件系统相关联的设备名称,可以使用设备名称来挂载新创建的文件系统;
如果希望挂载所有文件系统:mount{-a|all};
使用smit挂载文件系统:smit mount
自动挂载
将挂载设置为系统初始化期间自动挂载,存在两种类型的自动挂载:
第一种:启动和系统运行所必须的挂载。此类文件系统在/etc/filesystem文件中的节具有mount=automatic属性。当多用户初始化时,/etc/rc脚本尝试运行mount all命令时,不会挂载这些文件系统,类似,运行unmount all命令也不会卸载这些文件系统。
第二种:用户控制的自动挂载。此类文件系统在/etc/filesystem文件中的节具有mount=true属性,在系统初始化期间由/etc/rc脚本发出mount all命令时挂载。
通过mount all命令或/etc/rc脚本,指定在初始化时自动挂载某个文件系统。通过创建文件系统时,将Mount AUTOMATICALLY as system restart字段设置为true,或通过命令crfs -A yes filename
显示已挂载文件系统
使用mount命令
删除文件系统
步骤1:查看已挂载文件系统,使用mount命令。
步骤2:如删除文件系统已挂载,使用unmount命令卸载文件系统,#unmount filename。重复步骤1确认是否卸载成功;
如删除文件系统未挂载,直接跳到步骤3。
步骤3:使用smit rmjfs来删除日记记录文件系统,如果删除挂载此文件系统的目录,将remove mount point字段设为yes;
使用命令#rmjfs filename,如果删除挂载点加上-r标志。
增加文件系统大小
AIX提供动态增加文件系统空间的能力,以保证磁盘具有足够的空间。
使用命令行增加文件系统大小
步骤1:使用df命令确定文件系统的大小
步骤2:计算需要添加的块数
步骤3:输入命令#chfs -a size=new_size_in_512_byte_blocks filename
使用smit增加文件系统大小
步骤1:smit chfs
检查文件系统的一致性
fsck命令可以检查文件系统的一致性,并以交互方式修复文件系统。
fsck的标志:
-f:执行快速检查。系统挂起而没有正常关闭所影响到的唯一文件系统是在系统停止时挂载的文件系统。
-p:不显示次要问题的消息,而是自动修复它们。
-y:对fsck命令提出的所有问题作肯定回答
应在挂载任何文件系统之前,运行fsck命令。必须能够读取文件系统所在的设备文件。
fsck命令只是报告文件系统中的文件、已使用块和空闲块的数量。如果文件系统不一致,fsck将显示有关已发现的不一致性的信息,并提示您准许修复它们。
挂载不一致的文件系统可能会导致系统崩溃,如果不使用FileSystem参数指定文件系统,则fsck命令检查在/etc/filesystems中具有属性check=TRUE的所有文件系统。
注意:缺省情况下,/,/usr,/var和/tmp文件系统在它们的/etc/filesystem节中将check属性设置为false(check=false),
原因如下:启动过程显式对/,/usr,/var和/tmp文件运行fsck命令。
/,/usr,/var和/tmp文件系统运行/etc/rc文件时挂载,fsck不会修改已挂载的文件系统。
初始化JFS日志设备
logform命令初始化某个逻辑卷已将其用作JFS日志设备,此设备存储有关文件系统元数据的事物信息,并且可以在崩溃时用于回滚未完成的操作。
logform命令的一般语法:logform LogName
注意:logform命令是破坏性的;它清除逻辑卷中的所有数据。
应在运行logform命令之前卸载文件系统,logform命令销毁现有日志设备上所有日志记录,从而可能导致文件系统数据丢失。
JFS日志设备的放置
将JFS日志设备放置在与最活跃文件系统不同的物理卷上,最好放在具有最低I/O使用率的磁盘上,以提高并行资源使用率。
支持大型文件的文件系统
在支持大型文件的文件系统中,在4MB文件偏移量之前存储的文件数据以4096字节的块进行分配,在4MB文件偏移量以后,存储的文件数据使用128KB大小的大型磁盘块进行分配(32个4096字节的块)。
示例:一个132MB的文件,在大型文件系统中具有1024个4KB磁盘块和1024个128KB磁盘块,两个单独的间接块。
在普通文件系统中需要33个单独的间接块(每个块填充有1024个4KB磁盘地址)
确定支持大型文件的文件系统
lsfs -q filesystem
#lsfs -q /tmp
对文件系统进行故障排除
对超级块错误进行恢复
超级块受到损害,通过将超级块备份还原到主超级块,从而解决问题:
#dd count=1 bs=4k skip=31 seek=1 if=/dev/lvoo of=/dev/lvoo
完成还原过程之后,使用fsck命令检查文件系统的完整性
#fsck /dev/lvoo
多数情况下,将超级块备份还原到主超级块将会恢复文件系统。如果无效,那么重新创建文件系统,并从备份还原数据。
无法卸载文件系统
如果文件系统存在任何处于活跃状态的引用,则不能卸载文件系统。将会显示一下错误信息:Device Busy或a device is already mounted or cannot be unmount。
对策:在卸载该文件系统时,必须关闭这些文件。#fuer filesystem将显示打开文件系统引用的所有进程ID。使用kill命令终止打开引用的进程,然后就可以完成卸载工作。
如果文件系统仍然处于繁忙状态并且无法对其进行卸载,那么可能是由于加载了内核扩展,但存在于源文件系统中。
fuser不会显示以下文件类型的引用,因为没有涉及到任何用户进程;genkex命令将报告所有已加载的内核扩展。
①该文件系统挂载了其他文件系统。卸载这些文件系统,然后即可卸载该文件系统。使用mount命令获取已挂载文件系统的列表,要卸载某个文件系统,需要卸载其中已挂载的所有文件系统。
②进程正在使用该文件系统中的目录作为其当前工作目录。fuser的-u标志可以确定进程的所有者。
#fuser -u /tmp