AIX系统移动lv.docx
《AIX系统移动lv.docx》由会员分享,可在线阅读,更多相关《AIX系统移动lv.docx(15页珍藏版)》请在冰豆网上搜索。
AIX系统移动lv
AIX系统移动lv
移动磁盘数据
磁盘维护
DavidTansley,系统管理员,AceEurope
简介:
磁盘上的数据维护是任何系统管理员的常见任务。
根据我的经验,数据移动就是一项频繁执行的任务。
数据移动可能由您磁盘上的热点所导致,一种快速修复方法是将一些逻辑卷转移到另一个磁盘上,以缓解阻塞。
在这种情况下,migratelp命令是您最值得信赖的朋友。
当遇到有故障的磁盘或者需要将数据从一个磁盘迁移到另一个磁盘时,可以使用migratepv令或创建一个镜像副本,并且您不会受限于一种方法。
对于原始卷组(VG),在向VG添加一个磁盘时,您可能遇到因数(factoring)问题。
但是,通过理解VG的特征,可以更改因数。
在本文中,我们将用一些示例讨论这些常见的磁盘维护任务。
在谈到磁盘维护时,熟悉磁盘相关属性的一些常见缩略语很有好处,因为它可让谈话变得更简练。
• VG:
卷组
• LV:
逻辑卷
• LP:
逻辑分区
• PP:
物理分区
• PV:
物理卷(磁盘)
许多时候,您刚到达办公室,就会听到所有用户和支持人员开始抱怨系统运行缓慢。
常规的快速检查包括:
• 处理器限制
• 内存限制
• 磁盘访问
• 网络
• 进程侵扰
执行一些性能测试后您可能得出结论,是磁盘访问、数据在磁盘上的分散性导致了访问阻塞。
没有人喜欢这样。
所以,让我们假设您已通过分析来自filemon、topas、nmon或lvmstat等工具的输出,识别了磁盘上的热点。
您需要将该数据移动到另一个磁盘,以缓解阻塞。
另一个磁盘可能是一个新磁盘,更有可能是VG中一个未装满数据的现有磁盘。
让我们通过两个场景,看看如何将数据从一个磁盘移动到另一个。
但是,在此之前,最好了解一些命令,这样在查看LV和PV时就会很方便。
最重要的磁盘相关命令
以下是我认为您在执行数据迁移任务之前获取正确的信息,所需要知道的所有命令。
从一个PV获取信息
所关注磁盘的大小(以MB为单位)始终是需要知道的信息。
假设磁盘名为hdisk4,使用getconf命令查找大小:
#getconfDISK_SIZE/dev/hdisk4
9216
使用lspv命令提取磁盘信息。
lspv-l :
上面的命令列出LV和LP,以及PP和文件系统的挂载点(如果适用)。
lspv-m :
上面的命令列出PV、PP编号、LV和LP编号。
从一个VG获取信息
使用lsvg命令获取一个(或多个)PV所在的VG的布局。
lsvg :
上面的命令列出了有关VG属性的一般信息,主要是PP大小、总空间、空闲空间和已用空间。
lsvg-l :
上面的命令列出了文件系统的类型、LP和PV,以及LV状态(打开还是关闭)和文件系统挂载点(如果适用)。
lsvg-p :
上面的命令列出了属于该VG的PV,以及总PP空间和空闲PP空间。
从LV获取信息
可使用lslv命令获取有关LV的信息。
lslv-l :
上面的命令列出了LV所在的PV。
lslv-m :
上面的命令列出了LP、分区编号和PV,这些信息适用于LV所在的所有PV。
上述命令的输出为您提供了充分的信息来确定是否适合使用以下迁移技术执行数据迁移:
• migratelp
• migratepv
• 磁盘镜像
在此演示中,我创建了小型文件系统,即小型LV,因为我需要让输出尽可能的少。
在现实中,正常应用程序的LV会很大。
因此,LV的LP清单会很长。
一个技巧是打印出LV清单,然后使用一个标记笔确定要移动的LP。
使用migratelp命令移动数据
如果需要移动LP,也就是要将LV的一个部分从一个磁盘移动到另一个磁盘,那么可以使用migratelp。
您可指定一个或多个LV分段中您希望移动到另一个磁盘的部分。
LV监视工具lvmstat的输出与您需要用于migratelp命令的输入格式很相似,这并不是巧合。
对于本演示,migratelp命令的格式为:
migratelp
可能您希望移动的LV已建立镜像。
这没有问题,只需选择您希望移动的副本即可。
假设我们拥有以下磁盘:
#lspv
hdisk1 00c23bed42b3afff None
hdisk2 00525c6a888e32cd vg00 active
hdisk3 00c23bed32883598 None
hdisk0 00c23bed42b3aefe rootvg active
我们认为LVfslv00的负担过重,这些负担可能源于磁盘读写。
我们决定将另一个磁盘(也就是VGvg00)放入该LV中,将LVfslv00的一部分迁移到新磁盘中,以缓解阻塞。
首先,让我们看看磁盘hdisk2,fslv00目前位于其中:
#lspv-lhdisk2
hdisk2:
LVNAME LPs PPs DISTRIBUTION MOUNTPOINT
fslv00 4 4 00..04..00..00..00 /devhold
loglv00 1 1 00..01..00..00..00 N/A
fslv01 4 4 00..04..00..00..00 /apps
现在,让我们看看实际的VG,vg00。
# lsvg-lvg00
vg00:
LVNAME TYPE LPs PPs PVs LVSTATE MOUNTPOINT
loglv00 jfs2log 1 1 1 open/syncd N/A
fslv00 jfs2 4 4 1 open/syncd /devhold
fslv01 jfs2 4 4 1 open/syncd /apps
我们现在可以看到,该LVfslv00位于一个磁盘上。
现在将另一个磁盘hdisk3添加到VG上:
#extendvgvg00hdisk3
确认该磁盘已添加,我们知道已经添加了该磁盘,因为我们在扩展VG时未遇到任何错误:
#lsvg-pvg00
vg00:
PV_NAME PVSTATE TOTALPPs FREEPPs FREEDISTRIBUTION
hdisk2 active 542 533 09..99..108..108..109
hdisk3 active 2187 2187 438..437..437..437..438
现在,让我们看看我们的LV布局。
同样的,我们可以看到所有LP都在位于hdisk2上的LVfslv00之上:
# lslv-mfslv00
fslv00:
/devhold
LP PP1 PV1 PP2 PV2 PP3 PV3
0001 0111hdisk2
0002 0112hdisk2
0003 0113hdisk2
0004 0114hdisk2
现在将前两个LP(即0001和0002)从fslv00移动到新磁盘hdisk3。
#migratelpfslv00/1hdisk3
migratelp:
Mirrorcopy1oflogicalpartition1oflogicalvolume
fslv00migratedtophysicalpartition439ofhdisk3.
#migratelpfslv00/2hdisk3
migratelp:
Mirrorcopy1oflogicalpartition2oflogicalvolume
fslv00migratedtophysicalpartition440ofhdisk3.
上述两个migratelp命令的运行很正常。
现在通过再次查询fslv00确认这些LP已在新磁盘上:
#lslv-mfslv00
fslv00:
/devhold
LP PP1 PV1 PP2 PV2 PP3 PV3
0001 0439hdisk3
0002 0440hdisk3
0003 0113hdisk2
0004 0114hdisk2
和预期一样,该LV现在已分散在两个磁盘上:
hdisk2和hdisk3。
可以通过列出两个hdisk的内容来进一步确认这一点,如下所示:
#lspv-lhdisk3
hdisk3:
LVNAME LPs PPs DISTRIBUTION MOUNTPOINT
fslv00 2 2 00..02..00..00..00 /devhold
#lspv-lhdisk2
hdisk2:
LVNAME LPs PPs DISTRIBUTION MOUNTPOINT
fslv00 2 2 00..02..00..00..00 /devhold
loglv00 1 1 00..01..00..00..00 N/A
fslv01 4 4 00..04..00..00..00 /apps
如果您在某一刻觉得迁移没有意义,不用担心,只需将它们迁移回来即可,如下所示:
#migratelpfslv00/1hdisk2
migratelp:
Mirrorcopy1oflogicalpartition1oflogicalvolume
fslv00migratedtophysicalpartition111ofhdisk2.
#migratelpfslv00/2hdisk2
migratelp:
Mirrorcopy1oflogicalpartition2oflogicalvolume
fslv00migratedtophysicalpartition112ofhdisk2.
现在,如果我们查询hdisk3,就会发现hdisk3上的部分中应该没有LV:
#lspv-lhdisk3
没有返回输出,这表明该磁盘上没有数据。
然而,对于hdisk2,fslv00的布局现在已完全还原到之前的状态:
#lspv-lhdisk2
hdisk2:
LVNAME LPs PPs DISTRIBUTION MOUNTPOINT
fslv00 4 4 00..04..00..00..00 /devhold
loglv00 1 1 00..01..00..00..00 N/A
fslv01 4 4 00..04..00..00..00 /apps
如果需要进一步确认,只需查询LV即可:
#lslv-mfslv00
fslv00:
/devhold
LP PP1 PV1 PP2 PV2 PP3 PV3
0001 0111hdisk2
0002 0112hdisk2
0003 0113hdisk2
0004 0114hdisk2
镜像迁移
可通过许多方法移动数据。
前面我们查看了migratelp命令。
现在让我们看看磁盘镜像。
在此演示中,想象我们有一个故障磁盘,需要将数据转移到新磁盘。
我们装入了另一个磁盘,然后将LV镜像复制到新磁盘。
完成镜像复制之后,将会删除原始副本。
然后从VG中删除故障磁盘。
我们假设已将一个磁盘装入VGvg00中。
下一个任务是在新磁盘中创建这些VG的副本。
首先,让我们检查一下VGvg00的布局:
# lsvg-lvg00
vg00:
LVNAME TYPE LPs PPs PVs LVSTATE MOUNTPOINT
loglv00 jfs2log 1 1 1 open/syncd N/A
fslv00 jfs2 4 4 1 open/syncd /devhold
fslv01 jfs2 4 4 1 open/syncd /apps
假设新磁盘hdisk3已添加到VGvg00中。
接下来,在新添加的磁盘上创建所有LV的副本。
在本演示中,mklvcopy命令的格式为:
mklvcopy
其中copy_number为2,即LV的第二个(副本),destination_PV(在本演示中)为hdisk3。
#mklvcopyfslv002hdisk3
#mklvcopyfslv012hdisk3
#mklvcopyloglv002hdisk3
现在我们在新磁盘上已经有了LV的副本。
接下来,我们需要使用syncvg命令同步/镜像LV:
#syncvg-lfslv00
#syncvg-lfslv01
#syncvg-lloglv00
我们现在已完成到新磁盘hdisk3的镜像。
这可以通过列出VG中的LV来确认。
请注意,PP列是每个LV的LP的两倍。
这意味着这些LV已完成镜像:
# lsvg-lvg00
vg00:
LVNAME TYPE LPs PPs PVs LVSTATE MOUNTPOINT
loglv00 jfs2log 1 2 2 open/syncd N/A
fslv00 jfs2 4 8 2 open/syncd /devhold
fslv01 jfs2 4 8 2 open/syncd /apps
现在我们的数据已放在一个好的磁盘上,可以删除原始副本,即故障磁盘hdisk2上的LV。
在本演示中,rmlvcopy命令的格式为:
rmlvcopy
其中,在LV第一次出现时或者在您更喜欢原始LV的时候,copy_number将为1,在本演示中PV_to_remove_copy为hdisk2
现在将这些LV副本从故障磁盘hdisk2中删除:
#rmlvcopyfslv001hdisk2
#rmlvcopyfslv011hdisk2
#rmlvcopyloglv001hdisk2
来自hisk2的所有副本现在已删除。
hdisk2不应再有任何数据,这可以通过查看VG来确认。
在以下输出中,请注意,对于hdisk2,TOTALPP和FREEPP值是相同的,这意味着该磁盘是空的:
#lsvg-pvg00
vg00:
PV_NAME PVSTATE TOTALPPs FREEPPs FREEDISTRIBUTION
hdisk2 active 542 542 109..108..108..108..109
hdisk3 active 2187 2178 438..428..437..437..438
可以通过列出两个磁盘进一步确认这一点。
hdisk2应该没有数据,但hdisk3上应有LV。
#lspv-lhdisk2
没有返回任何输出,这表明该磁盘上没有数据。
#lspv-lhdisk3
hdisk3:
LVNAME LPs PPs DISTRIBUTION MOUNTPOINT
fslv00 4 4 00..04..00..00..00 /devhold
loglv00 1 1 00..01..00..00..00 N/A
fslv01 4 4 00..04..00..00..00 /apps
现在,剩下的任务是从VG删除故障磁盘hdisk2:
#reducevgvg00hdisk2
要确认VG现在仅包含好的hdisk3磁盘,请执行以下命令:
#lsvg-pvg00
vg00:
PV_NAME PVSTATE TOTALPPs FREEPPs FREEDISTRIBUTION
hdisk3 active 2187 2178 438..428..437..437..438
数据已成功从一个故障磁盘移动到VGvg00中的一个新磁盘。
在某一时刻,故障磁盘与VG是没有关联的,应该在此时物理更换它。
使用migratepv命令复制LV中的数据
当有一个内容非常稠密的磁盘包含许多要迁移的LV时,有时使用migratepv命令复制数据很有效。
您还可以使用此命令复制单独的LV。
假设我们需要将数据从hdisk2迁移到hdisk3。
目标磁盘的大小可能比来源磁盘更小,只要所有LV都能装入目标磁盘。
在本演示中,migratepv命令的格式为:
migratepv
migratepv-l
其中 是您希望迁移的LV的名称。
在VGvg00的以下输出中,可以注意到hdisk3是空的。
这可以通过查看TOTALPP和FREEPP值来确认,这两个值是相同的。
这意味着该磁盘上没有数据。
#lsvg-pvg00
vg00:
PV_NAME PVSTATE TOTALPPs FREEPPs FREEDISTRIBUTION
hdisk2 active 542 532 109..98..108..108..109
hdisk3 active 2187 2187 438..437..437..437..438
要进一步确认所有LV都在hdisk2上,可对每个LV运行lslv命令:
#lslv-mfslv00
fslv00:
/apps
LP PP1 PV1 PP2 PV2 PP3 PV3
0001 0111hdisk2
0002 0112hdisk2
0003 0113hdisk2
0004 0114hdisk2
0005 0115hdisk2
#lslv-mfslv01
fslv01:
/devhold
LP PP1 PV1 PP2 PV2 PP3 PV3
0001 0116hdisk2
0002 0117hdisk2
0003 0118hdisk2
0004 0119hdisk2
#lslv-mloglv00
loglv00:
N/A
LP PP1 PV1 PP2 PV2 PP3 PV3
0001 0110hdisk2
现在,让我们使用以下migratepv命令将LVfslv00从hdisk2迁移到hdisk3:
#migratepv-lfslv00hdisk2hdisk3
通过查看LV,我们可以确定LVfslv00现在位于hdisk3上:
#lslv-mfslv00
fslv00:
/apps
LP PP1 PV1 PP2 PV2 PP3 PV3
0001 0439hdisk3
0002 0440hdisk3
0003 0441hdisk3
0004 0442hdisk3
0005 0443hdisk3
假设您现在需要将其他所有LV(也就是来自hdisk2的所有数据)复制到hdisk3上,可运行以下命令:
#migratepvhdisk2hdisk3
成功完成migratepv命令后,hdisk2上将没有任何数据,所有数据现在都位于hdisk3上:
#lspv-lhdisk2
上面的命令不会返回任何输出,这表明该磁盘上没有任何数据。
#lspv-lhdisk3
hdisk3:
LVNAME LPs PPs DISTRIBUTION MOUNTPO