全部博文(323)
分类: 系统运维
2008-05-13 23:12:15
LVM 故障诊断任务
本文中的主题提供诊断和恢复过程在遇到以下问题之一时使用:
· 磁盘驱动器问题
· 物理或逻辑卷错误
· 卷组错误
磁盘驱动器问题
如果磁盘驱动器用尽了可用空间,请参阅获取磁盘驱动器上的更多空间。如果怀疑磁盘驱动器机械性故障或已发生故障,请使用以下过程在磁盘上运行诊断:
1. 使用 root 用户权限,在命令行中输入以下 SMIT 快速路径:
smit diag
2. 选择当前 Shell 诊断以进入“AIX® 诊断”工具。
3. 阅读“诊断操作说明”屏幕后,按下 Enter 键。
4. 选择诊断例程。
5. 选择系统验证。
6. 在列表上滚动以查找和选择想要测试的驱动器。
7. 选择提交。
基于诊断结果,应该能够确定磁盘的情况:
· 如果检测到磁盘驱动器发生故障或已发生故障,则最重要的事情是从该磁盘恢复数据。如果磁盘仍是可访问的,请尝试完成迁移物理卷的内容中的过程。迁移是从发生故障的磁盘恢复数据的首选方式。以下过程描述如何在迁移无法成功完成的情况下恢复逻辑卷中的数据。
· 如果驱动器发生故障,并且可以不必重新格式化该驱动器就可以修复它,则无数据会丢失。请参阅在不必重新格式化的情况下恢复磁盘驱动器。
· 如果磁盘驱动器必须重新格式化或更换,请进行备份,如果可能,请在更换它之前从其卷组和系统配置中卸下该磁盘驱动器。单一副本文件系统中的一些数据可能丢失。请参阅使用重新格式化的磁盘驱动器或更换磁盘驱动器来进行恢复。
· 如果您的系统支持热可移动性功能,请参阅当系统保持可用时从磁盘故障恢复。
获取磁盘驱动器上的更多空间
如果用尽了磁盘驱动器上的空间,有几种方式纠正该问题。可以自动跟踪并除去不想要的文件,限制用户访问某些目录,或从另一个磁盘驱动器安装空间。
必须具有 root 用户、系统组或管理组权限以执行这些任务。
自动清除文件系统
使用 skulker 命令通过除去不想要的文件清除文件系统。从命令行输入以下内容:
skulker -p
skulker
命令用于定期从文件系统清除废弃或不需要的文件。候选文件包括 /tmp 目录中的文件、超过指定时限的文件、a.out 文件、核心文件或 ed.hup 文件。
skulker 命令通常每天运行,作为非高峰时数期间通过 cron 命令运行的记帐过程的一部分。
限制用户访问某些目录
另一种释放磁盘空间并可以保持其不被使用的方式是限制和监控磁盘使用情况。
· 通过输入以下命令限制用户访问某些目录:
chmod 655 DirName
此命令设置所有者(root 用户)具有读和写许可权,并设置组和其他用户具有只读许可权。DirName 是想要限制的目录的全路径名。
· 监控个别用户的磁盘使用情况。进行此操作的一种方式是将以下行添加到 /var/spool/cron/crontabs/adm 文件:
0 2 * * 4 /usr/sbin/acct/dodisk
此行在每星期四(4)的凌晨 2 时(0 2)执行 dodisk 命令。dodisk 命令启动磁盘使用情况记帐。此命令通常作为非高峰时数期间通过 cron 命令运行的记帐过程的一部分来运行。
从另一个磁盘驱动器安装空间
在磁盘驱动器上获取更多空间的另一种方式是从另一个驱动器安装空间。使用以下方式,可以将空间从一个磁盘驱动器安装到另一个磁盘驱动器:
· 使用 smit mountfs 快速路径。
· 使用 mount 命令。例如:
mount -n nodeA -vnfs /usr/spool /usr/myspool
mount 命令使文件系统可在指定的位置使用。
迁移物理卷的内容
要将属于一个或多个指定逻辑卷的物理分区从一个物理卷移动到卷组中的其他一个或多个物理卷,请使用以下说明。更换或修复有故障的磁盘前,也可以使用此过程从有故障的磁盘移动数据。此过程可以用于 root 卷组或用户定义的卷组中的物理卷。
注意: 从物理卷迁移引导逻辑卷时,必须清除源中的引导记录,否则它可能导致系统挂起。当执行 bosboot 命令时,也必须执行以下过程的步骤4 中描述的 chpv -c 命令。
1. 如果想将数据迁移到新磁盘,请执行以下步骤。否则,继续步骤 2。
a. 通过输入以下内容检查磁盘是否可由系统识别并且可用:
lsdev -Cc disk
输出与以下类似:
hdisk0 可用 10-60-00-8,0 16 位 LVD SCSI 磁盘驱动器
hdisk1 可用 10-60-00-9,0 16 位 LVD SCSI 磁盘驱动器
hdisk2 可用 10-60-00-11,0 16 位 LVD SCSI 磁盘驱动器
b. 如果列出了磁盘并且它处于可用状态,则通过输入以下内容检查它是否不属于另一个卷组:
lspv
输出看起来类似如下:
hdisk0 0004234583aa7879 rootvg 活动
hdisk1 00042345e05603c1 无 活动
hdisk2 00083772caa7896e imagesvg 活动
在该示例中,hdisk1 可以用作目的地磁盘,因为第三个字段显示其未被卷组使用。
c. 通过输入以下内容将新磁盘添加到卷组:
extendvg VGName diskname
此处 VGName 是卷组的名称而 diskname 是新磁盘的名称。在先前步骤中所示的示例中,diskname 应该替换为 hdisk1。
2. 源和目的地物理卷必须在相同的卷组中。要确定两个物理卷是否都在卷组中,请输入:
lsvg -p VGname
此处 VGname 是卷组的名称。root 卷组的输出看起来与以下类似:
rootvg:
PV 名称 PV 状态 PP 总数 可用 PP 可用分发
hdisk0 活动 542 85 00..00..00..26..59
hdisk1 活动 542 306 00..00..00..00..06
请注意“可用 PP”的数量。
3. 检查对想要移动的源的目标磁盘是否有足够空间:
a. 通过输入以下内容确定源磁盘上的物理分区的数量:
lspv SourceDiskName | grep "USED PPs"
此处 SourceDiskName 是源磁盘的名称,例如,hdisk0。输出看起来与以下类似:
USED PPs: 159(636 兆字节)
在此示例中,需要目的地磁盘上的 159“可用 PP”以成功完成迁移。
b. 比较源磁盘的“已使用的 PP”的数量与目的地磁盘或磁盘组上的“可用 PP”的数量(步骤 )。如果“可用 PP”的数量大于“已使用的 PP”的数量,则有足够的空间来迁移。
4. 仅在将数据从 rootvg 卷组中的磁盘迁移时才按此步骤进行操作。如果正在将数据从用户定义的卷组中的磁盘迁移,则继续步骤5。
通过输入以下内容查看引导逻辑卷(hd5)是否在源磁盘上:
lspv -l SourceDiskNumber | grep hd5
如果没有获取输出,则引导逻辑卷不是位于源磁盘上。继续步骤 5。
如果获取与以下类似的输出:
hd5 2 2 02..00..00..00..00 /blv
则运行以下命令:
migratepv -l hd5 SourceDiskName DestinationDiskName
您将接收到警告您在目的地磁盘上执行 bosboot 命令的消息。也必须执行 mkboot -c 命令来清除源上的引导记录。输入以下命令序列:
bosboot -a -d /dev/DestinationDiskName
bootlist -m normal DestinationDiskName
mkboot -c -d /dev/SourceDiskName
5. 通过输入以下 SMIT 快速路径迁移数据:
smit migratepv
6. 列出物理卷并选择先前检查的源物理卷。
7. 转至目的地物理卷字段。如果接受缺省值,则卷组中的所有物理卷可用于传送。否则,选择一个或多个对您移动(从4 步骤)的分区提供了足够的空间的磁盘。
8. 愿意的话,请转至属于此逻辑卷字段的“仅移动数据”,并且列出和选择逻辑卷。仅可以移动分配给逻辑卷的物理分区,该逻辑卷被指定位于所选择作为源物理卷的物理卷上。
9. 按下 Enter 键以移动物理分区。
此时,数据现在驻留在新的(目的地)磁盘上。然而,原(源)磁盘保留在卷组中。如果磁盘仍然可靠,则可以继续将其用作热备用磁盘。特别是在磁盘有故障时,建议执行以下步骤:
1. 要从卷组除去源磁盘,请输入:
reducevg VGNname SourceDiskName
2. 要从系统物理上除去源磁盘,请输入:
rmdev -l SourceDiskName –d
如果在不必重新格式化坏磁盘的情况下修复坏的磁盘并将其放回系统中,则可以让系统在引导时自动激活并重新同步驱动器上的旧文件物理分区。旧文件物理分区包含您的系统不能使用的数据。
如果怀疑旧文件物理分区,请在命令行中输入以下命令:
lspv -M PhysVolName
其中 PhysVolName 是您的物理卷的名称。lspv 命令输出将列出您的物理卷上的所有分区。以下是示例输出的摘录:
hdisk16:112 lv01:4:2 旧文件
hdisk16:113 lv01:5:2 旧文件
hdisk16:114 lv01:6:2 旧文件
hdisk16:115 lv01:7:2 旧文件
hdisk16:116 lv01:8:2 旧文件
hdisk16:117 lv01:9:2 旧文件
hdisk16:118 lv01:10:2 旧文件
第一列显示物理分区,第二列显示逻辑分区。任何旧文件物理分区记录在第三列。
使用重新格式化的磁盘驱动器或更换磁盘驱动器来进行恢复
本节描述当必须重新格式化或更换发生故障的磁盘时如何从发生故障的磁盘驱动器恢复数据。
注意: 在重新格式化或更换磁盘驱动器之前,请将所有到非镜像文件系统的引用从发生故障的磁盘中除去,并且从卷组和系统配置除去磁盘。如果不这样做,则在 ODM(对象数据管理器)和系统配置数据库中创建问题。这些基本步骤的说明包含在『在更换或重新格式化已发生故障或正发生故障的磁盘之前』下的以下过程中。
以下过程使用的情况中,名为 myvg 的卷组包含三个磁盘驱动器,称为 hdisk2、hdisk3 和 hdisk4。在此情况中,hdisk3 已毁坏。非镜像的逻辑卷 lv01 和 mylv 逻辑卷的副本包含在 hdisk2 上。mylv 逻辑卷已制作了镜像并具有三个副本,每个副本占用其磁盘上的两个物理分区。发生故障的 hdisk3 包含 mylv 的另一个副本和名为 lv00 的非镜像的逻辑卷。最后,hdisk4 包含 mylv 的第三个副本以及名为 lv02 的逻辑卷。下图显示此情况。
此过程分为以下关键段:
· 在更换或重新格式化发生故障的磁盘之前为保护数据而做的事情
· 要重新格式化或更换磁盘而遵循的过程
· 在重新格式化或更换磁盘后为恢复数据而做的事情
在更换或重新格式化已发生故障或正发生故障的磁盘之前:
1. 使用 root 用户权限登录。
2. 如果不熟悉在发生故障的驱动器上的逻辑卷,请使用运转正常的磁盘查看发生故障的磁盘的内容。例如,要使用 hdisk4 查看 hdisk3,请在命令行中输入以下命令:
lspv -M -n hdisk4 hdisk3
lspv 命令显示有关卷组内的物理卷的信息。输出看起来与以下类似:
hdisk3:1 mylv:1
hdisk3:2 mylv:2
hdisk3:3 lv00:1
hdisk3:4-50
第一列显示物理分区,第二列显示逻辑分区。分区 4 至 50 可用。
3. 如果可能,备份发生故障的设备上的所有单一副本逻辑卷。
4. 如果具有单一副本文件系统,则从磁盘卸下它们。(可以从 lspv 命令的输出中标识单一副本文件系统。单一副本文件系统具有与输出上的物理分区相同数量的逻辑分区。)不必卸下镜像的文件系统。
在该情况下,发生故障的磁盘 hdisk3 上的 lv00 是单一副本文件系统。要卸下它,请输入以下命令:
unmount /dev/lv00
如果不知道文件系统的名称,则假定 /etc/filesystems 文件不是单独位于已发生故障的磁盘上,请在命令行中输入 mount 以列出所有安装的文件系统并查找与您的逻辑卷关联的名称。还可以使用 /etc/filesystems 文件上的 grep 命令以只列出与您的逻辑卷关联的文件系统名称(如果有)。例如:
grep lv00 /etc/filesystems
输出看起来类似如下:
dev = /dev/lv00
log = /dev/loglv00
注:
a. 如果您正在尝试卸下的文件系统当前正在使用,则 unmount 命令失败。unmount 命令仅在无文件系统的文件打开和无用户的当前目录在该设备上时执行。
b. unmount 命令的另一个名称是 umount。这两个名称可互换。
5. 通过输入 rmfs 命令从已发生故障的物理卷除去所有单一副本文件系统:
rmfs /FSname
6. 除去所有位于发生故障的磁盘的镜像的逻辑卷。
注:
不能对 rootvg 卷组中物理卷的 hd5 和 hd7 逻辑卷使用 rmlvcopy。因为这些逻辑卷只有一份副本,所以系统不允许除去这些逻辑卷。
rmlvcopy 命令从每个逻辑分区除去副本。例如,输入:
rmlvcopy mylv 2 hdisk3
通过除去 hdisk3 上的副本,将属于 mylv 逻辑卷的每个逻辑分区的副本数量从三个减少为两个(hdisk4 上一个,hdisk2 上一个)。
7. 如果发生故障的磁盘是 root 用户卷组的一部分,并且包含逻辑卷 hd7,则请通过在命令行中输入以下命令来除去主转储设备(hd7)
sysdumpdev -P -p /dev/sysdumpnull
sysdumpdev 命令更改运行系统的主或辅助转储设备位置。当重新引导时,转储设备返回到其原位置。
注:
从 AIX 5.3 开始,您可以选择转储到 DVD 设备。
8. 使用以下命令除去任何位于磁盘上的调页空间:
rmps PSname
其中 PSname 是要除去的调页空间的名称,它实际上是调页空间所驻留的逻辑卷的名称。
如果 rmps 命令没有成功,则在继续此过程之前必须使用 smit chps 快速路径释放主调页空间并重新引导。如果有活动的调页空间,则步骤10 中的 reducevg 命令可能失败。
9. 使用 rmlv 命令,从卷组中除去任何其他逻辑卷,如那些不包含文件系统的逻辑卷。例如,输入:
rmlv -f lv00
10. 使用 reducevg 命令从卷组中除去已发生故障的磁盘。例如,输入:
reducevg -df myvg hdisk3
如果不能执行 reducevg 命令,或者如果该命令未成功,则在重新格式化或更换驱动器后,步骤 13 中的过程可以帮助清除 VGDA/ODM 信息