LVM文件系统与磁盘问题的诊断
当每个硬盘被加入一个卷组(VG)的时候就被分配了一个物理卷标识符(PVID)。不能使用dd命令拷贝两个物理卷的内容,由于PVID也会被拷贝的,这样两个不一致的物理卷就有了相同的PVID,系统会出错。
当硬盘出现错误的时候,通常会进行数据重定位。有三种类型的数据重定位:
1)硬盘内部的数据重定位:最底层的重定位,发生在磁盘内部,出现的时候不可能通知用户。
2)由LVM产生的硬件重定位:更高层次的重定位,LVM将有问题的物理地址A上的数据拷贝到物理地址B,LVM会继续读地址A上的数据,但是硬盘已经将真实的IO转向物理地址B。
3)软件重定位:最高层次的重定位,也由LVM设备产生。LVM生成一个坏道表,当读物理地址A上的数据时,先检查坏道表,假如A在坏道表中,就转向物理地址B。
当用户觉得LVM有问题的时候,首先要做的情况就是备份,尽可能地储存卷组中的数据。卷组发生问题后进行的备份需要与发生问题前进行的备份进行对比。
ODM 重新同步:
LVM发生问题往往是硬盘的物理问题造成ODM中的数据与硬盘上储存的VGDA,VGSA,LVCB不一致步。当LVM操作不正常地结束并与ODM不一致的话,ODM就会出错。比如,当导入一个卷组的时候,ODM所在文件系统(通常是root,/)大小溢出。
1)假如用户觉得某个卷组的ODM有问题,使ODM与正确的数据同步的方法是:将该卷组从系统中varyoff并export,再import并varyon卷组,这样就能够刷新ODM中的数据。只是这种方法只能对非rootvg 的卷组有效。
2)关于rootvg卷组,能够使用命令#redefinevg rootvg来刷新ODM中的数据。该命令将对系统中硬盘与卷组的对应关系进行检测。
3)假如硬盘上的LVM信息出错,使用命令#synclvodm –v myvg来重建并同步LVCB,VGDA等信息。该命令将同步myvg卷组中所有的逻辑卷。
4)假如卷组中的一个或者多个逻辑卷被做过镜像,同时怀疑镜像可能有损坏能够使用命令#syncvg –l lv02。这个命令将同步逻辑卷lv02的镜像。用syncvg命令可用来同步单个逻辑卷,
或者者一个物理分区或者者整个卷组。
导入卷组(importvg)的问题:
假如使用importvg命令不能成功将一个卷组导入进一个系统的话,很有可能是下面的几种问题:
1)AIX的版本:检查要导入的卷组是否被系统运行的AIX版本支持。低版本的AIX不能支持由高版本的AIX所导出的卷组。
2)错误的PVID:检查要导入的卷组中的硬盘是否都有有效的PVID号。能够使用#lspv命令来显示硬盘的PVID号,假如某个盘不显示PVID号,使用#chdev命令来解决问题。比如#chdev –l hdisk4 –a pv=yes命令就能够使一个原先没有PVID的hdisk4获得一个正确的PVID号。
3)当卷组导出后硬盘被更换了:
0516-056 varyon testvg:The volume group is not varied on because a physical volume is maked missing.Run diagnostics.
假如使用importvg命令失败,同时出现以上错误信息的话,说明有物理卷丢失了,很有可能是在卷组被导出后又对硬盘进行了变更。能够使用#importvg –f命令来对卷组进行强制导入。然后根据情况使用#reducevg命令来去除系统提示出错的硬盘。
4)共享的硬盘环境:在共享硬盘的环境,比如说一个SSA系统,在被2个或者者更多的系统所使用的情况下,定义的物理卷就不能够用了,由于它们已经被其它的机器导入同时vary on了。如今应使用lspv命令在所有的机器上对比PVID号。
假如使用importvg命令失败,通过查询错误日志能够到问题所在。
扩展最大的物理分区(PP)量:
当在一个卷组中加入一个比该卷组现有容量大的多的硬盘时,很有可能出现先前定义的PP数量不够。能够使用#lsvg testvg命令来查看现有的卷组信息。使用命令#chvg –t 2 testvg能够将testvg卷组的最大PP量扩大为原先的两倍。
更换硬盘
1)如何检查磁盘错误:通常情况下错误日志分析系统在系统错误的时候会给root用户发一封邮件,通过查看邮件能够得到硬盘错误信息。也能够使用命令#lsvg –l mirrorvg来查看所有镜像的信息,假如某个镜像逻辑卷的LV STATE为stale状态,就说明该镜像卷不处于同步状态。使用#errpt命令来查看错误日志,错误日志的信息将会显示该镜像卷不处于同步状态的原因。在更换硬盘前,需要对文件系统做好备份,以避免在更换过程中出现不可预料的问题。假如文件系统中含有数据库文件,需要使用特定的数据库备份工具来备份。
2)卸载一块坏的硬盘:使用rmlvcopy命令卸载一个逻辑卷镜像的物理分区,该物理分区处于坏的硬盘上。比如命令#rmlvcopy lvdb02 1 hdisk4,该条命令的含义为去除逻辑卷lvdb02在物理卷hdisk4上的镜像,命令执行完后,该逻辑卷每个LP对应一个PP,也就是说该逻辑卷没有镜像。使用#lslv –l lvdv02检查上一条命令执行完毕后的结果。然后使用命令#reducevg –f mirrorvg hdisk4将原先做为镜像用的hdisk4物理硬盘从卷组中去除。使用命令#lsvg –l mirrorvg来检查上一条命令执行后的结果。使用命令#rmdev –d –l hdisk4将该硬盘信息从ODM库中去除。(注意,上述步骤能够用来卸载SCSI硬盘,但是关于SSA硬盘还需要在smit菜单中将pdisk与hdisk的对应关系去除。)现在就能够安全地将坏的硬盘从槽位中拔出来。
3)添加一块新的硬盘:下面的步骤讲述的是如何在一个生产环境中添加一块新的硬盘。将硬盘插入槽位后使用命令#cfgmgr来使系统识别出新的硬盘,同时会将该硬盘做为一个正确的对象添加进该系统。假如使用命令#cfgmgr –v则会显示更全面的信息,方便进行除错。使用命令#lsdev –Cc disk来检查系统是否已经识别出新加的硬盘。然后使用命令#extendvg mirrorvg hdisk4把该硬盘添加进卷组。重新建立逻辑卷的镜像#mklvcopy lvdb02 2 hdisk4。执行了上述命令后逻辑卷lvdb02的每1个LP就对应2个PP,也就是说为逻辑卷lvdb02在hdisk4上建立了一个镜像。只是镜像卷还没有与逻辑卷同步,使用命令#syncvg –p hdisk4将逻辑卷与物理卷同步。syncvg命令能够对物理卷、逻辑卷、卷组进行同步。
4)在错误地移除一块硬盘后所需的处理:假如在拔除硬盘前对系统没有进行正确的操作,拔除后系统又重启了,这时候就需要使用命令#synclvodom –v lvxxx来重建LVCB信息。只是这种情况通常适用于剩余的文件系统不依靠于拔除的硬盘。假如文件系统分布在所有的硬盘上,包含坏的,这时候通常只能使用备份来恢复了:(。
AIX JFS问题:
与LVM中产生的问题一样,AIX JFS产生的问题也能够追溯到底层的物理硬盘的问题。使用
命令#lsjfs来检查各个挂载点上的文件系统的信息。
增加文件系统的大小:比如使用命令#chfs –a size=+300000 /usr能够把./usr的大小增加300000个block的大小,每个bolck的大小为512byte。假如不加“+”就表示为增到到,比如#chfs –a size=300000 /usr就表示把/usr增大到300000个512的byte,大约为150M。注意这里实际增加的容量与增加到的容量都是PP大小的整数倍,由于分配给文件的最小的块就是一个PP。
系统的检查与恢复:使用命令#fsck /mountpoint来检查挂载点的文件系统,建议用户在每次挂载文件系统之前都使用该命令来检查。假如执行了该命令后发现文件系统有错误那系统会提示是否修复该错误,假如不能修复,那就只能从备份上恢复了:(。
修复一个坏的超级块(superblock):假如在使用fsck或者者mount命令时出现下面的错误,就说明存在一个损坏的超级块。
fsck: Not an AIX3 file system
fsck: Not an AIXV3 file system
fsck: Not an AIX4 file system
fsck: Not an AIXV4 file system
fsck: Not a recognized file system type
mount: invalid argument
使用命令# dd count=1 bs=4k skip=31 seek=1 if=/dev/lv00 ōf=/dev/lv00能够从备份上还原的错误的超级块。这里count表示的if模块的数量,bs表示的是指定的模块的大小,skip表示的是在开始拷贝之前跳过的模块数量,seek表示的是在开始拷贝之前从输入文件寻seek所指定的记录。在很多情况下,从备份上回复超级块会覆盖文件系统,假如问题还不能解决的话重建一个文件系统再从备份上恢复。
稀疏文件:不是所有的逻辑块都被分配一个相应的逻辑块的文件叫做稀疏文件。稀疏文件通常用于数据库文件。使用#ls命令只能查看稀疏文件开始文件块与结束文件块之间的大小,而不能查看文件真正的大小,这时候需要使用命令#du –rs sparsefile来查看。#tar命令不具备备份稀疏文件的功能。新的AIX5版本中的restore与backup命令提供了对稀疏文件的支持。
卸载文件系统的问题:在卸载文件系统的时候有可能遇到这样的错误提示:
Device busy或者者
A device is already mounted or cannot be unmounted
假如一个文件系统打开了一个文件,那么务必在卸载之前将该文件关闭。比如:
# umount /home
umount: 0506-349 Cannot unmount /dev/hd1: The requested resource is busy.
# fuser -x -c /home
/home: 11630
# ps -fp 11630
UID PID PPID C STIME TTY TIME CMD
guest 11630 14992 0 16:44:51 pts/1 0:00 -sh
# kill -1 11630
grep命令有什么用# umount /home
1)当用户要卸载/home挂载点的时候,系统提示设备正忙,这时能够使用#fuser –x –c /home来查看哪个进程还在访问home挂载点。系统显示进程号为11630的进程还在访问home挂载点。使用命令#ps –fp 11630来查看该进程的全面信息,用过#kill –l 11630来将该进程杀死。这时候就能够成功卸/home挂载点了。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。