分类: 系统运维
2011-07-16 14:55:20
1.
磁盘和文件的系统管理是一项重要的系统管理任务。它包括添加和删除磁盘、配置磁盘、基于某种配置生成和管理文件系统和磁盘问题的修复。
2.
每个物理磁盘都有两个相关的设备文件,一个是字符设备文件,一个是块设备文件。
每一个磁盘在被系统使用之前都必须经过配置。
一个磁盘可以被细分为多个部分组成,这些部分可能是:
HP-UX提供了两种磁盘管理的方法:
整盘分区:
一个磁盘可以配置成以下5中方式:
不足:
逻辑卷管理磁盘分区(LVM):
物理卷:实际的物理磁盘驱动器。使用pvdisplay命令显示物理卷。
卷组: 多个物理卷组合成一个卷组,它将所有物理卷的空间融合成一个独立的实体。
第一次安装HP-UX,默认生成一个根卷组名为:/dev/vg00。使用vgdisplay 显示。
逻辑卷:由一个或多个物理卷构成,在卷组中创建并可以跨越多个物理卷。
对于逻辑卷,你可以任何时候根据需要去改变它的尺寸而不丢失数据。
使用lvdisplay命令显示逻辑卷。
逻辑卷管理使你能将几个磁盘(物理卷)里的空间组合成一个卷组。然后把卷组里的空间再划分成逻辑卷。逻辑卷克服了整盘方法的一些不足,可以实现以下功能:
卷组设备文件为/dev/vg00/group。
每一个逻辑卷组中都有两个设备文件,字符与块。
所有lvm设备文件的主号为64次号显示了逻辑卷名跟逻辑卷组之间的成员关系。
物理扩展(PE):是最小的磁盘空间分配单元,缺省为4M。
逻辑扩展(LE):是内核内存中指向磁盘上某一个PE的指针。
PE的大小在创建卷组时背固定,整个卷组中的PE都是一样的。
为了扩大逻辑卷,LVM只需要分配更多的LE。
3.
创建物理卷:
创建物理卷是LVM管理磁盘的第一步,为了找出某个磁盘相关的设备文件,使用IOSCAN命令。
也许你想查看磁盘的大小,可以使用diskinfo命令完成。
在创建之前,先通过mediainit命令对一个磁盘进行格式化和校检其完整性。
创建物理卷:
首先格式化硬盘:mediainit /dev/rdsk/c2t5d0 #后面的参数必须为字符设备文件
创建物理卷:pvcreate /dev/rdsk/c2t5d0
若磁盘已经属于某个卷组,可以用-f选项强制执行创建(慎用)。
建好卷组后,可以通过pvdisplay命令来检查它。(没有成为卷组前不能pvdisplay)
LVM使用的数据结构会造成一些磁盘空间的开销。
非启动盘上如果设置了较小的PE或创建了很多物理卷,则LVM数据结构将会比较大。
这个开销在可启动的LVM盘上是固定的(2912KB)。
4.
创建卷组:
建完物理卷后,就可以将它添加到卷组中。
首先在/dev目录下面创建一个卷组名为vg03的目录:mkdir /dev/vg03。
在该目录下面创建卷组设备文件,主号为64,次号显示组名:
mknod /dev/vg03/group c 64 0x030000
最后用vgcreate命令创建卷组,以物理卷名为参数:
vgcreate /dev/vg03 /dev/dsk/cdt5d0
关于vgcreate的一些选项:
建好卷组后,可以通过vgdisplay命令来检查它。
5.
创建逻辑卷:
逻辑卷可以:
用lvcreate命令可以创建逻辑卷。
当逻辑卷新创建时,其相应的字符设备及块设备文件会在卷组目录下生成。
例如:为了在卷组vg03中创建一个空间为800M,名为moko的逻辑卷:
lvcreate -L 800M -n moko vg03
关于lvcreate命令的选项:
6.
卷组所包含的每一个磁盘都有LVM的数据结构:
物理卷保留区(PVRA):由pvcreate命令创建,含有物理卷信息
卷组保留区(VGRA):由vgcreate命令创建,包含卷组状态区(VGSA)和卷组描述区(VGDA),用于卷组的设备驱动信息。
坏块重新分配区域(BBRA):由pvcreate创建,它是磁盘尾部的一个区域,发现物理卷缺陷时由LVM使用。
7.
文件系统:
文件系统时将文件和目录一起存储的集合。
分配给文件系统的区域被分成两个主要部分,即用户区和元数据区。
用户区用于存储用户文件中真正的数据。
元数据区存储文件系统的结构数据:
8.
高性能文件系统(HFS):
传统的HP-UX文件系统,作为/stand的文件系统。
所有HFS文件系统的前8KB空间用作HFS主超级块,包含一般的文件系统信息。
超级块还包含指向文件系统中所有其他HFS结构数据的指针。
HFS拥有多个超级块备份,位置在/var/adm/sbtab。
被损坏的HFS超级块通过这些备份进行修复。
在一个读请求中,HFS块是最小数据单元,缺省为8KB大小,有效数据块为4-64K,2的乘方。
段是用于分配的最小数据单元,HFS块可以分成多个段。
HFS便于管理,然而不能缩减它的空间,也不能方便地扩展空间,扩展前必须卸载文件系统。
当创建HFS文件系统时,必须标明你需要创建多少I节点。
I节点存放在新文件系统的I节点表中。
如果没有空闲的I节点,即使你有空闲的数据块,也不能创建新文件目录。
可以通过以下两种方式添加新的I节点:
系统崩溃或不正确的关闭会对HFS文件系统造成灾难性的后果,且恢复过程缓慢并不可预测。
在某些情况下,可能需要重新创建文件系统并从磁带恢复数据。
日志文件系统(JFS):
也被称为Veritas文件系统(vxfs)。
日志文件系统是为了克服HFS的一些不足而设计的。
这种文件系统具有快速恢复的特性。
HP的在线日志文件系统(online JFS)它基于JFS扩展,可以对文件系统进行在线管理,不用先卸载。
JFS也保存超级块的多个拷贝,与HFS不同,它能自动找到冗余超级块,所以备份不存储在sbtab文件中。
JFS的主要优点是所有对结构数据的修改都保存在日志中。
这种日志机制保证了文件系统的完整性,并且系统崩溃时能很快恢复文件系统。
如果系统崩溃,文件系统能通过应用JSF日志中的所有改变记录被迅速恢复。
系统崩溃后,简单重做日志中的事务处理,就可以在10-20秒内将文件系统结构数据恢复到相应状态。
相比于HFS,JFS另一个显著有点就是它可以动态增加I节点的数量。
与HFS一样,JFS将文件系统分成若干个JFS块,缺省每块为1KB大小。
JFS是一种以extent为基础的文件系统,为了达到性能优化,文件和目录中的数据应当是连续的。
在动态文件系统中,可能需要定期使用fsadm碎片整理工具。
内核文件不能在JFS文件系统中。
9.
创建新的文件系统:
要使一个文件系统真正生效,需要经过4个步骤:
(1)先用newfs创建新文件系统
newfs命令可以用于创建文件系统,如果你采用LVM,在使用newfs之前,需要先完成下面3个步骤
建立物理卷,利用这些物理卷创建一个或多个卷组,创建逻辑卷。
执行了上面的步骤后,再用newfs在逻辑卷上创建一个文件系统,使用字符设备文件:
例:在/dev/vg03/rlvol4上创建JFS文件系统,使用下面的命令
newfs -F vxfs /dev/vg03/rlvol4 #在/dev/vg03/rlvol4上创建JFS文件系统
newfs -F vxfs -o largefiles /dev/vg03/rlvol5 #/dev/vg03/rlvol5上创建一个支持大文件的系统
newfs -F hfs -b 2048 /dev/vg03/rlvol5 #建一个块尺寸2KB的HFS文件系统
在一个整盘方法创建的磁盘c2t5d0上建立一个JFS文件系统,并留出100MB空间用于交换:
newfs -F vxfs -R 100 /dev/rdsk/c2t5d0
newfs命令的一些选项:
*:-i 4096 表示每4KB空间需要使用1个I节点
newfs命令需要使用字符设备文件做参数,逻辑卷或磁盘会被覆盖,所以数据会被破坏。
如果没有使用-F来定义文件系统类型,将采取/etc/default下面的定义,HP11.0默认为vxfs。
(2)然后用mkdir命令为文件系统创建一个挂在用的目录
mkdir /mnt
(3)建立目录后,用mount命令将新文件系统挂载
mount -F vxfs /dev/vg03/lvol4 /mnt #把JFS文件系统/dev/vg03/lvol4挂载在/mnt目录
可以用mount -v或bdf查看已挂载的文件系统。
fuser /mnt 可以查看/mnt是否正在被用户使用。
fuser -ku -c /mnt 可以把正在使用/mnt文件系统的所有进程停止下来。
umount /mnt 可以卸载挂载在/mnt目录的文件系统。
umount /dev/vg01/myfs1 卸载使用myfs1逻辑卷的文件系统。
umount -a 可以卸载所有当前挂载的文件系统。
umount -aF vxfs 可以卸载所有JFS文件系统。
mount使用的是块设备文件。
文件系统必须挂起在空目录下,如果文件系统被挂起在已经包含文件和目录的目录下,则这些文件和目录将会被隐藏。直到这个文件系统被卸载。不可能把文件系统挂载在正在被其他用户或进程使用的目录,试图吧这个文件系统挂在已经使用的目录上会得到“设备忙”的信息。
(4)修改/etc/fstab文件,添加一行相关信息,实现系统启动时自动挂载文件系统
/e tc/fstab文件示例:
/dev/vg00/lvol4 /tmp vxfs delaylog 0 2
/dev/vg00/lvol5 /home vxfs delaylog 0 2
/dev/vg00/lvol6 /opt vxfs delaylog 0 2
/dev/vg00/lvol7 /usr vxfs delaylog 0 2
/dev/vg00/lvol8 /var vxfs delaylog 0 2
...
行信息包含了文件系统名,挂载点,文件系统类型以及其他相关选项。
添加一行例子:
/dev/vg00/lvol4 /moko xvfs delaylog 0 2
在启动过程中,脚本/sbin/init.d/localmount被执行,它调用mount -a命令,将/etc/fstab文件中所列的文件系统全部挂载。
10.
管理文件系统:
改变文件系统的大小包括3个步骤:
(1)扩展卷组:
如果在一个卷组中,没有未分配的空间,你需要先扩展卷组,可以通过增加一个硬盘来实现。通过创建一个物理卷,然后将这个新的物理卷使用vgextend命令加入到卷组中,从而增加卷组容量。
例:pvcreate /dev/rdsk/c0t3d0
vgextend vg03 /dev/dsk/c0t3d0
(2)扩展逻辑卷:
扩展卷组后,通过lvextend命令扩展逻辑卷的尺寸。
例:lvextend -L 800 /dev/vg03/lvol4 #将逻辑卷由本来400M增加到800M
lvextend -L 800 /dev/vg03/lvol4 /dev/dsk/c0t3d0 #在特定磁盘上扩展逻辑卷
(3)扩展文件系统:
扩展了逻辑卷的空间不会自动扩展文件系统的空间,应使用extendfs命令给文件系统增加空间。
在扩展之前,必须先卸载该文件系统(在线式JFS除外)。
例:extendfs -F vxfs /dev/vg03/lvo14
在线式JFS扩展系统时,不用卸载,需要使用另一个命令fsadm来扩展文件系统,例:
fsadm -F vxfs -b 819200 /mnt #将/mnt文件系统扩展到800MB(819200KB)
监视磁盘使用情况
bdf能够显示所有已挂载的文件系统以及每个文件系统的信息:文件系统名称,总的磁盘空间,已用的磁盘空间,可用的磁盘空间,磁盘利用的百分率,挂载点。
加上-i选项在输出中增加了3个文件系统可用I节点的列:
iused:文件系统上正在使用的I节点数。
ifree:文件系统上可用的i节点。
第三个位I节点的使用比例。
也可以使用du命令显示一个目录多少空间被使用。
清理磁盘空间
core文件一般作为严重错误或QUIT信号的结果,产生在进程被异常终止时。程序员可以通过使用它来确定当进程被终止时的情况。
core文件可能很大,当不再需要时可以从系统上删除,用find命令找出这些文件并清除:
find / -name core -exec ll {} \; #显示所有core文件
find / -name core -exec rm {} \; #清除所有core文件
/var包含系统日志和缓冲区日志,如果不仔细监控,很容易占满文件系统:
>/var/adm/btmp #清空btmp日志文件
>/var/adm/wtmp #清空wtmp日志文件
可以用find命令找出不再需要却忘了删除的大文件:
find /tmp -atime +30 -size +1000c -exec ll -ud {} \;
以上例子是查找并显示/tmp目录下面大于1000个字符,在30天内没有被访问的文件。
11.
文件系统修复:
系统崩溃或非正常关机的关机操作都会导致文件系统元数据出现错误,这时,你应该对文件系统进行修复。
fsck命令可用来检查并修复系统。
如果系统崩溃或进行了非正常的关机操作,fsck命令会自动运行,需要时也可以手工执行。
执行fsck前,必须卸载文件系统。
如果在元数据区遇到不一致的情况,fsck命令会删除一些文件。
有些文件不能被fsck完全识别,它会被放到lost+found目录下。
在用完fsck修复完文件后,你应该从先前的备份上将一些被毁坏的文件恢复到系统上。
例:fsck -F vxfs /dev/vg03/rlvol4
执行fsck时需要知道文件系统的类型。指定需要检查的文件系统所在磁盘或逻辑卷的字符设备文件。
fsck命令的一些选项:
12.
重要的LVM命令:
extendfs 扩展一个文件系统
lvchange 改变一个逻辑卷的属性
lvcreate 创建一个逻辑卷
lvdisplay 列出逻辑卷信息
lvextend 扩展逻辑卷
lvlnboot 将逻辑卷设成root ,dump 或 swap
lvreduce 减少一个逻辑卷的尺寸
lvremove 将卷组中的一个逻辑卷删除
lvrmboot 将逻辑卷作为root ,dump 或 swap使用
pvchange 改变一个物理卷的属性
pvcreate 创建一个物理卷
pvdisplay 列出物理卷的属性
pvmove 将某物理卷从一个卷组移动到另一个卷组
vgcfgbackup 备份LVM的配置信息
vgcfgrestore 从备份的LVM配置信息中恢复
vgchange 改变一个卷组的属性
vgcreate 创建一个卷组
vgdisplay 列出一个卷组的属性
vgextend 扩展卷组
vgexport 从系统输出一个卷组
vgimport 从系统输入一个卷组
vgreduce 通过删除物理卷来减小卷组
vgremove 删除一个卷组