解决LVM和硬盘PVID问题
问与答
题
该技术说明讨论了PVID的各种问题以及如何解决它们。
回答
AIX上的逻辑卷管理器(LVM)使用物理卷标识符(PVID)来跟踪属于LVM卷组的磁盘驱动器。这是系统生成的16位数字,实际存储在硬盘驱动器上并读入ODM。LVM还将此PVID存储在卷组的卷组描述符区域(VGDA)中。系统上的每个PVID唯一标识一个物理卷。
PVID问题
重复的PVID
同一PVID显示在多个磁盘上。
问题诊断
1.验证多个磁盘上是否有重复的PVID。
$ lspv
或
如果您知道导入的卷组的名称有问题,请使用:
$ lspv | grep VGNAME
lspv命令从ODM中读取,它不从磁盘读取PVID。我们需要检查ODM中列出的PVID是否与磁盘上的PVID相同。
2.要从磁盘读取PVID,必须以root或su身份登录到该磁盘,然后使用:
#lquerypv -h / dev / hdisk7 80 10
输出示例:
00000080 00021AC8 E561D594 00000000 00000000 | ..... a .......... |
磁盘的PVID在第2列和第3列中。
可能的原因和解决方案1:磁盘上的ODM和PVID不匹配
如果磁盘上的PVID与lspv的ODM输出不匹配,请使用chdev命令重新读取正确的信息。从磁盘输入PVID,然后重新填充ODM。
示例:
#lspv | grep hdisk24
hdisk24 deadbeefdeadbeef无
检查写入磁盘的PVID是否正确:
#lquerypv -h / dev / hdisk24 80 10
00000080 00050A85 577D8A61 00000000 00000000 | .... W} .a ........ |
因此,ODM版本与写入磁盘的版本不匹配。验证此问题的另一种方法是直接查询ODM:
#odmget -q“名称= hdisk24和属性= pvid” CuAt
CuAt:
名称=“ hdisk24”
属性=“ pvid”
值=“ deadbeefdeadbeef0000000000000000”
类型=“ R”
泛型=“ D”
rep =“ s”
nls_index = 2
强制系统重新读取磁盘上的PVID并重新填充ODM:
#chdev -a pv = yes -l hdisk24
hdisk24已更改
现在检查lspv是否显示正确的PVID:
#lspv | grep hdisk24
hdisk24 00050a85577d8a61无
您也可以直接仔细检查ODM:
#odmget -q“ name = hdisk24 and attribute = pvid” CuAt
CuAt:
属性=“ pvid”
值=“ 00050a85577d8a610000000000000000”
类型=“ R”
泛型=“ D”
rep =“ s”
nls_index = 2
可能的原因和解决方案2:磁盘相互复制
近年来,SAN存储已成为一种使用光纤通道网络将新磁盘连接到系统的流行方法。这些SAN存储系统中的某些包含一种为每个磁盘(或LUN)逐位复制以将其带到另一个站点或计算机的方法。副本是精确的,直到LUN的VGDA和PVID区域。如果将这两个磁盘(原始磁盘和副本)都分区到同一主机,并且被cfgmgr看到,它将导致系统在命令中显示重复的PVID,例如作为lspv,lsvg,
由于重复的PVID,Varyyonvg(从importvg或Vareonvg调用)将失败:
#importvg -y datavg hdisk20
0516-1775varyonvg:物理卷hdisk21和hdisk20具有相同的PVID(00050a85470c2eeb)。
0516-780 importvg:无法从hdisk20导入卷组。
答:找出这些磁盘是否确实是彼此的副本。如果不需要第二个磁盘(或一组磁盘)上的卷组副本,则可以擦除VGDA和PVID区域,从而允许用户在磁盘上创建新的卷组。
一句话警告,这是对磁盘的永久更改。
首先,使用以下方法擦除驱动器上的PVID:
#chdev -a pv = clear -l hdiskX (如果使用其他路径管理器,则名称可能会有所不同)
接下来,清除驱动器上的VGDA:
#chpv -C hdiskX
然后,您可以使用mkvg命令在磁盘上创建新的卷组,或将它们添加到现有卷中与extendvg组。
B.但是,如果磁盘是彼此的副本以用于备份策略,并且源卷和备份(或目标)卷组都需要存在于同一台机器上,则将需要导入目标卷组使用recreatevg。使用recreatevg的好处是,它可以在导入卷组时更改磁盘的PVID,并使用这些新的PVID更新VGDA。
此时应注意,AIX不允许两个逻辑卷具有相同的名称,或两个文件系统具有相同的安装点。默认情况下,recreatevg命令将更改逻辑卷名和安装点,因为它是用于重新创建现有卷组的。
缺省情况下,recreatevg将更改现有逻辑卷名称,方法是在名称前添加字符串“ fs”,并在文件系统安装点路径前添加“ / fs”。可以通过使用-L和-Y标志重新创建vg来更改它们。
例如,如果我有一个带有文件系统和日志设备的卷组“ origvg”,并且在hdisk6上有它的SAN副本:#lsvg
-l origvg
origvg:
LV名称类型LP PPs PV PV LV状态安装点
loglv01 jfs2log 1 1 1已关闭/已
同步N / A fslv02 jfs2 256 256 1已关闭/已同步/ data
#lspv | grep的origvg
hdisk5的00050a85ef3356ec origvg活跃
hdisk6 00050a85ef3356ec origvg活跃
我可以清除掉PVID和hdisk6然后对其运行recreatevg:
#chdev命令-a PV =清除-l hdisk6
hdisk6改变
#LSPV
hdisk5的00050a85ef3356ec origvg活跃
hdisk6无无
#recreatevg -y copyvg hdisk6
copyvg
hdisk5 00050a85ef3356ec origvg有效
hdisk6 00050a85ee6d1446 copyvg active
#lsvg -l copyvg
copyvg:
LV名称类型LPs PPs PVs LV状态安装点
fsloglv01 jfs2log 1 1 1关闭/
同步N / A fsfslv02 jfs2 256 256 1关闭/同步N / ID
可能的原因和解决方案3在单个磁盘路径上存在,而不是在
使用SDD多路径的多路径设备示例中存在:
vpath34可用的数据路径优化器伪设备驱动程序
此vpath由以下hdisk组成。
hdisk138可用01-01-02
U789D.001.DQD35BK-P1-C2-T2-W5005076801402F1D-L22000000000000 FC 2145
hdisk139可用01-01-02
U789D.001.DQD35BK-P1-C2-T2-W5005076801402F2D-L22000000000000 FC 2145
hdisk140可用03-00-02
U789D.001.DQD35PG-P1-C6-T1-W5005076801302F2D-L22000000000000 FC 2145
hdisk141可用03-00-02
U789D。 001.DQD35PG-P1-C6-T1-W5005076801302F1D-L22000000000000 FC 2145
----------------------------------- ----------------------------------
从lspv输出:
hdisk138无无
hdisk139无无
hdisk140无无
hdisk141无无
vpath34 00cb3e924851eb12 oravg1
这是vpath的正确配置,其中PVID与ODM中的vpath设备关联。
如果PVID出现在各个路径(hdisk)上,则可以使用以下两个SDD命令之一移动它:
hd2vp SDD脚本,可将hdisk设备卷组转换为
SDD vpath设备卷组。
dpovgfix 该命令用于修复混合了
vpath和hdisk物理卷的SDD卷组。
任何创建伪设备用于访问LUN的多路径驱动程序都可能发生这种情况。另一个示例是EMC PowerPath,它使用“ hdiskpowerX”伪设备,该设备应具有PVID,而各个路径均列为“ hdiskX”,没有pvid或卷组关联。
PVID错误
磁盘上的PVID显示在“ lspv”中,但它不是正确的PVID。同样,“ lspv”可能未显示与卷组关联的驱动器。
问题诊断
如果磁盘显示PVID但没有VG:
lspv输出:
hdisk11 00c7a967e5b40149无
检查磁盘本身上的PVID以确定它是否与lspv输出匹配:
#lquerypv -h / dev / hdisk11 80 10
00000080 00C7A967 E5B40149 00000000 00000000 |。 .g ... I ........ |
现在检查ODM以查看那里有什么PVID。通常这将与lspv输出匹配,因为lspv是从那里获取数据的。
#odmget -q“名称= hdisk11和属性= pvid” CuAt
CuAt:
名称=“ hdisk11”
属性=“ pvid”
值=“ 00c7a967e5b401490000000000000000”
类型=“ R”
泛型=“ D”
rep =“
因此,磁盘上的ODM和PVID匹配。
现在,检查磁盘上VGDA中列出的PVID:
#lqueryvg -Ptp hdisk11
物理:00c7a967cc88015c 2 0
可能的原因和解决方案1:磁盘上的PVID已更改
如果磁盘上VGDA中的PVID不包含上述lquerypv命令中的PVID,则可能有人更改了磁盘上的PVID。这也可能使磁盘处于“丢失”状态。另一个症状是可能无法导入的vg。
#importvg -y datavg hdisk11
0516-1939:在VGDA中找不到PV标识符。
0516-780 importvg:无法从hdisk11导入卷组。
问题诊断:
检查磁盘上的PVID
#lquerypv -h / dev / hdisk11 80 10
00000080 00C7A967 E5B40149 00000000 00000000 | ... g ... I ........ |
将其与VGDA中的PVID进行比较:
#lqueryvg -Ptp hdisk11
物理:00c7a967cc88015c 2 0
因此,这里写入磁盘的PVID不是应该的。
解决方案
可以使用recreatevg命令解决此问题。我们将用recreatevg重写卷组中每个磁盘的所有PVID,并使用这些PVID更新VGDA,以便所有内容再次匹配。
我们将使用标志“ -Y NA”和“ -L /”,以便逻辑卷名称和文件系统安装点不会更改。如果没有这些选项,则recreatevg将采取默认操作,即更改逻辑卷名称并为每个安装点添加前缀。
属于卷组 的所有磁盘的名称必须包含在命令行中。这与importvg的行为不同,后者仅需要1个磁盘的名称。
#recreatevg -y datavg -Y NA -L / hdisk11
datavg
现在检查所有内容。
#lspv | grep hdisk11
hdisk11 00c7a967e61887e7 datavg active
#lsvg -p datavg
datavg:
PV_NAME PV状态总计PPs免费PPs免费分发
hdisk11 active 639 639 128..128..127..128..128
可能的原因和解决方案2:ODM中的PVID丢失或错误
问题诊断:
在这种情况下,lspv不显示有关磁盘的任何信息:
#lspv
hdisk4无无,
或者它可能显示PVID但没有关联的卷组:
hdisk4 abcdabcdabcdabcd无
其他症状可能是该卷组仅显示了磁盘的PVID,而没有显示名称:#lsvg
-p testvg
0516-304:在设备
配置数据库中找不到设备ID 00c7a967e601c226 。
testvg:
PV ID PV状态总计PPs免费PPs免费分发
00c7a967e601c226有效639 639 128..128..127..128..128
如果磁盘上VGDA中的PVID与上述lquerypv命令中的PVID匹配,但与lspv输出或ODM不匹配,则可以将正确的PVID重新读入ODM。
首先,从存储它的磁盘位置读取现有的PVID:
#lquerypv -h / dev / hdisk4 80 10
00000080 00C7A967 E601C226 00000000 00000000 | ... g ...&........ |
现在,将其与我们在上面的lsvg -p输出中看到的PVID进行比较。
#lqueryvg -Ptp hdisk4
物理:00c7a967e601c226 2 0
在这种情况下,磁盘上的PVID很好,并且与VGDA中的PVID匹配,但是ODM错误。
解决方案
我们可以使用chdev修复ODM,以再次重新读取正确的PVID:
#chdev -a pv = yes -l hdisk4
hdisk4已更改
现在验证它是否已修复:
#lspv | grep hdisk4
hdisk4 00c7a967e601c226 testvg active
#lsvg -p testvg
testvg:
PV_NAME PV状态总计PPs免费PPs免费分发
hdisk4 active 639639 128..128..127..128..128
#odmget -q“ name = hdisk4 and attribute = pvid“ CuAt
CuAt:
名称=” hdisk4“
属性=” pvid“
值=” 00c7a967e601c2260000000000000000“
类型=” R“
泛型=” D“
rep =” s“
nls_index = 2
可能的原因和解决方案3:完全没有PVID
问题诊断:
如果ODM或磁盘上都没有PVID,则可以重写一个。卷组的VGDA也必须使用此新的PVID更新,否则LVM将不知道该磁盘属于正确的卷组。
解决方案:
按照与“可能的原因和解决方案1:磁盘上的PVID已更改”相同的步骤,使用recreatevg在ODM和卷组的VGDA中重写磁盘上的PVID。