总结AIX的存储结构组成,可以形成如下几个基本的存储概念。
■ 物理卷(Physical Volume,PV):挂接到机器的硬盘,或者是存储设备输出到主机的逻辑磁盘。
■ 物理分区(Physical Partition,PP):物理磁盘分区化分配的最小单位。
■ 卷组(Volume Group,VG):相关磁盘(PVs)的集合。
■ 逻辑卷(Logical Volume,LV):位于物理卷上分区的分组。
■ 逻辑分区(Logical Partition,LP):指向物理分区的对应逻辑编号。
在AIX中,每个硬盘驱动器称为一个物理卷(PV),AIX为之赋予一个设备名称,如hdisk0、hdisk1。物理卷使用前需要将其归属到一个卷组(VG),AIX安装时会创建第一个AIX卷组rootvg。
卷组内的所有物理卷被划分成若干物理分区(PP),所有物理分区被逻辑上组合为连续的分区列表。在卷组中定义逻辑卷(LV),实质上就是物理分区(PP)的分组化,在逻辑层面上数据看起来是连续的,但其对应在物理卷上的分区却可以是离散的。
每个逻辑卷由若干个逻辑分区(LP)组成。每个逻辑分区将指向不少于一个物理分区。AIX逻辑卷可以设定镜像,则每个逻辑分区将指向多于一个物理分区,多出来的物理分区用来存储逻辑分区的镜像副本。
逻辑卷是AIX中存储空间使用的起点。在逻辑卷上可以定义:
■ JFS、JFS2;
■ 文件系统日志;
■ 换页空间;
■ 启动映像;
■ 裸设备。
在AIX中,物理卷(PV)是用于标识物理磁盘的名称。一个物理卷可以从内部(本地磁盘)或者外部(外置存储磁盘设备)连接到系统。在使用一个物理卷之前,要把它增加到一个已存在的卷组中,或者直接创建一个新的卷组。
AIX增加物理卷时,AIX将在/dev目录中创建对应的设备文件 /dev/hdiskn文件。应用程序可以直接操作这个设备文件名,例如,将磁盘整体作为裸设备交给数据库使用,但一般很少这样做,因为这会限制空间扩展。
物理分区(PP)是物理卷的一个划分块,它是AIX中磁盘空间分配的基本单位。一个卷组内的所有物理分区都具有相同的大小,未经说明的话,其默认大小是 4MB。
卷组(VG)包含了一组物理卷,这些物理卷组成的存储空间可以非常动态地分配给逻辑卷。卷组是AIX存储层次中“最大的底层”单位。
卷组不仅是一组磁盘的组合,它还具有一定的独立性。例如,我们可以将一个卷组从一个系统中脱离出来,再连接到另一个AIX系统中,成为其存储的组成部分。
AIX系统在安装初期就创建了一个默认卷组——根卷组rootvg。根卷组中包含了安装程序在安装过程中选择用于安装的物理卷(硬盘),并在安装时创建了系统中若干系统逻辑卷和对应的文件系统,例如“/”文件系统、“/usr”文件系统等。
如果系统中存在空盘,则这些空盘可以添加到rootvg中,也可以创建新的卷组。从安全角度来看,建立功能独立的卷组将有效简化系统维护任务。如果能够设置具有独立性的卷组来存放系统数据及用户数据,则有朝一日系统重新安装或系统崩溃,都可能使恢复任务简单化。
创建卷组后,通过创建逻辑卷,应用系统就可以使用卷组空间了。逻辑卷创建时并不需要分配连续空间。同时,由于逻辑卷是一个典型的逻辑概念,它可以跨磁盘存储,且可以动态调整逻辑卷空间的分配和使用。同时,制作逻辑卷的镜像关系可以保证存储的冗余和系统的不间断运行。
事实上,在AIX中磁盘空间管理的大多数问题都可以通过逻辑卷的实现来解决。在Oracle中,大多数关于存储空间的管理,都是和逻辑卷相关的。
为了保证卷组的可用性,AIX在卷组上定义了卷组描述区。
■ 卷组描述区是磁盘上的一块区域,位于每个物理卷的开头,每个物理卷至少一块。卷组描述区包含的是整个卷组的配置信息,包括所有逻辑卷和物理卷的信息。通常每个物理卷要保存一份VGDA,仅在卷组中只有一块磁盘时才会拥有两份VGDA。
■ VGDA保证了每个卷组都自包含其结构描述信息。AIX通过读取磁盘上的VGDA信息就可以确定物理卷和逻辑卷与卷组的关系。
■ 卷组的参数QUORUM指定激活卷组所需的VGDA个数。当AIX要激活一个卷组时,必须有QUORUM参数指定的VGDAs区域可用。通常要求VGDAs达到51%,以确保描述卷组内逻辑卷和物理卷管理数据的完整性。
■ LVM管理命令一般都会涉及对VGDA信息的改动,例如创建一个逻辑卷,mklv命令(用于创建逻辑卷)将修改所有磁盘的VGDA信息。
图3-6 显示了磁盘数和VGDA的关系。图3-7 中的卷组datavg有 8 块磁盘,则其中至少有 5 块磁盘的VGDA可用,才可以激活这个卷组。
图3-6 卷组中VGDA的分布
VGDA包含的信息描述了该物理卷所在卷组的所有逻辑卷和物理卷的信息和配置情况。下面我们来查看一个卷组datavg的VGDA设置,如图3-7 所示。
图3-7 卷组的综合属性及QUORUM参数查看
需要强调的是,卷组中的所有磁盘都会至少拥有一个VGDA,VGDA中的时间戳信息可以确定该磁盘是否同步。因为当磁盘错误时,LVM无法更新磁盘上的VGDA信息。所以当该磁盘重新联机,并重新激活所属卷组(varyonvg)时,LVM将自动更新不同步的VGDA。
当然,如果事实上发生了VGDA不可用的情况,管理员也可以采用忽略QUORUM,强制激活卷组的方法激活卷组。在一般情况下这不是个好主意,除非在紧急情况下才可如此。
提示: 在其他UNIX(如HP-UX)中,关于卷组的描述数据结构同样要存储在一个区域中,HP-UX称之为VGRA(卷组保留区)/PVRA(物理卷保留区),概念类似。
逻辑分区(LP)指映射到物理分区的一个指针;逻辑卷(LV)指一组逻辑分区的集合,这些逻辑分区指向的物理分区可以跨越物理卷。
在卷组上创建逻辑卷时,逻辑卷要使用物理卷上的物理分区。物理分区是磁盘分区化分配的最小单位,是构成逻辑卷逻辑分区的物理结构,每一个逻辑分区都会映射到一个物理分区,逻辑分区与物理分区大小一致。
图3-8 描述的就是这样的结构:卷组A拥有两个物理卷PV1 和PV2,在卷组A中创建逻辑卷,该逻辑卷使用了 4 个逻辑分区,两个逻辑分区指向PV1 上的物理分区,另外两个逻辑分区指向PV2 上的物理分区。
图3-8 逻辑卷在卷组上的物理分区
创建逻辑卷时,逻辑卷由卷组内的一个或多个逻辑分区组成。如果卷组包含一个以上的物理卷,那么逻辑卷可能会跨越物理卷。正是由于卷组逻辑层面的特征,逻辑卷不要求在物理卷内连续,逻辑分区指向的物理分区可以在卷组内任意物理卷的任何位置。
由于逻辑卷是一个集合,那么在逻辑卷大小不够的情况下,如果卷组有足够的空闲物理分区,则逻辑卷可以随空间扩充,并且是联机状态下的动态空间扩充。
和卷组的控制结构类似,每个卷组都有一个逻辑卷控制块(Logical Volume ControlBlock,LVCB)来记录和控制逻辑卷的配置信息。LVCB存储于逻辑卷的头部数据块,占据很少(几百字节)的空间。逻辑卷的LVCB信息可以通过getlvcb命令查看,下面的示例用来查看系统逻辑卷lv_data(存放着Oracle数据)的LVCB信息:
AIX安装时将自动创建一个根卷组rootvg,这个卷组由安装AIX时指定的物理卷构成。这个卷组中包含了启动系统需要的所有逻辑卷,内容包括 /、/usr、/var、/tmp、/home、/opt等文件系统的逻辑卷及换页空间、JFS/JFS2 日志、引导数据、转储(dump)区等诸多逻辑卷。
AIX中可以随时用mklv命令或SMIT菜单建立逻辑卷,一般而言在每个卷组中用户可以定义的逻辑卷数为 256 个。但实际上的限制取决于分配给卷组的物理卷个数。
裸设备是一个逻辑卷或物理卷,AIX允许一些应用程序直接访问逻辑卷,例如Oracle中的数据文件、Sybase中的数据库设备文件。
AIX基本的文件系统是扩展的日志文件系统,该系统采用数据库日志(journaling)技术来维护文件系统控制结构数据的一致性。用户对文件、命令、应用程序的访问,可以通过文件系统的目录结构来完成。
AIX支持五种类型的文件系统。
■ JFS:日志文件系统,存在于磁盘上的一个逻辑卷内。
■ JFS2:增强的日志文件系统,存在于磁盘上的一个逻辑卷内。
■ CDRFS:CD-ROM/DVD-ROM盘的CD-ROM文件系统。
■ NFS:通过网络访问的文件系统。
■ GPFS:AIX提供的集群文件系统,用于文件系统并发性的存储和控制。
每种类型可以建立多个文件系统。在AIX系统中,不同的文件系统连接在一起,形成由一个根开始,分层扩展的单棵文件树。不同的文件系统,通过目录的方式连在一起,形成用户所见的文件列表或视图。
当AIX 首次安装时,会自动创建如下几个日志文件系统:
■ /文件系统,该文件系统建立在/dev/hd4 逻辑卷上。该文件系统位于文件层次树的顶点,包含对操作系统来说至关重要的文件和目录,包括设备目录和完成引导过程的程序。
■ /usr文件系统,该文件系统建立在/dev/hd2 逻辑卷上,包含操作系统命令、程序库和应用程序。
■ /var文件系统,该文件系统建立在/dev/hd9var逻辑卷上,存储假脱机文件和日志文件,文件系统里的文件随系统活动而频繁变化。
■ /home文件系统,该文件系统建立在/dev/hd1 逻辑卷上,存放用户主目录,这是存放用户数据的文件系统。
■ /tmp文件系统,该文件系统建立在/dev/hd3 逻辑卷上,是所有用户都可以访问的空间,用作工作空间和存储临时文件,应该经常清除。
■ /proc文件系统,该文件系统存放当前运行的进程数据和结构,主要用于与Linux的兼容。
■ /opt文件系统,该文件系统建立在/dev/hd10opt逻辑卷上,存放用户安装的应用软件或系统。
■ /admin文件系统(AIX6.1 及以上版本),该文件用于AIX内部管理。
因此,系统在启动状态下,我们至少可以看到已经启动的如下逻辑卷和文件系统:
文件系统的定义设置在/etc/filesystems文件中,该文件示例如下:
/etc/filesystems文件记录文件系统的分布特性和属性,这些属性以“节”的形式存放,每一节指定文件系统安装的默认目录位置、文件系统属性等。常见的属性如下。
■ check:用于确定是否使用fsck命令检查文件系统,true表示允许检查。
■ dev:用于挂载文件系统时对应的逻辑卷设备文件。
■ mount:被mount命令使用,确定系统中指定文件系统的挂载时机。可能的取值有如下。
● automatic:文件系统在系统启动时自动挂载。
● true:在系统初始化期间运行mount all命令自动挂载这些系统。
● false:文件系统不自动挂载。
■ vfs:指定要挂载的文件系统的类型,例如vfs= jfs2。
■ vol:使用mkfs命令给新的文件系统定义挂载点。
■ log:文件系统修改时,用来存储日志数据的设备,仅对日志文件系统有效。
提示: 在其他UNIX(例如HP-UX、Linux)中对应的配置文件是/etc/fstab。
为了让用户访问文件系统中的数据,必须先安装(挂载)文件系统,使一个文件系统成为整个文件系统层次结构中的一部分。将逻辑卷上的文件系统连接到层次目录的过程称为挂载。挂载时必须指定要挂载到的目录路径名称,指定挂载属性,例如,是否自动挂载等。
如图3-9 所示的是一个文件系统,即一棵倒置的树形结构。所有文件系统都要挂载到这个结构中的一个分支上去。如图3-9 所示的是一棵尚未挂载其他文件系统的目录树。
图3-9 AIX系统中文件系统的目录树结构
在我们创建了一个文件系统oracle_data后,将该文件系统挂载到/下,成为一个/下的目录/oracle_data。看上去,/oracle_data是一个目录,实质上oracle_data是一个在卷组datavg上定义的逻辑卷上的文件系统,如图3-10 所示。
图3-10 /oracle_data是一个独立的文件系统
和挂载操作对应的操作是卸载。使文件系统退出整个文件系统层次结构的操作称为卸载。下面的操作显示了两个文件系统test和test1,这两个文件系统分别建立在逻辑卷fslv00 和fslv01 上,挂载点分别为/test和/test1,文件系统类型为JFS2,大小都是 32MB,非自动挂载且不进行审计。其中,test文件系统采用默认挂载选项,即读写状态,test1文件系统指定了只读选项,如图3-11 所示。
图3-11 查看文件系统的挂载属性和状态
提示: 事实上,对于目前所有主流UNIX系统来说,上述的文件系统和目录树结构都是类似的,无论是HP-UX、Linux,还是Solaris。