在谈论磁盘维护时,建议您习惯一些与磁盘相关的属性的常用缩写,因为它可以减少混乱的情况。
VG:卷组 LV:逻辑卷 LP:逻辑分区 PP:物理分区 PV:物理卷(磁盘)很多时候,您刚来到办公室,所有用户和支持人员开始抱怨系统运行缓慢。 通过数字快速检查包括:
处理器绑定 内存绑定 磁盘存取 网络 Craft.io猎犬在进行了一些质量测试之后,您可能已经得出结论,那就是磁盘访问,磁盘上的数据传播在访问时引起了拥塞。 没有人喜欢它,但是当您需要移动或迁移LV时,通常不会受到太大的注意。 因此,让我们假设您已经通过解释诸如filemon , topas , nmon或lvmstat之类的工具的输出来确定磁盘上的热点。 您需要将该数据移到另一个磁盘上以缓解拥塞。 另一个磁盘可以是新磁盘,也可以是VG中的一个现有磁盘,该磁盘上的数据没有那么满。 看几个场景,让我们看看如何将数据从一个磁盘移动到另一个磁盘。 不过,在执行此操作之前,最好先了解一些在查看LV和PV时非常方便的命令。
我相信以下是在执行数据迁移任务之前提取正确信息所需了解的所有命令。
从PV获取信息
了解有关磁盘的大小(以MB为单位)始终是个好主意。 假设磁盘为hdisk4 ,请使用getconf命令查找大小:
# getconf DISK_SIZE /dev/hdisk4 9216使用lspv命令提取有关磁盘的信息。
lspv -l <hdiskx> :
上面的命令在适用的情况下列出了文件系统的LV和LP以及PP和挂载点。
lspv -m <hdiskx> :
上面的命令列出了PV,PP号,LV和LP号。
从VG获取信息
使用lsvg命令提取一个或多个PV所在的VG的布局。
lsvg <vg_name>:上面的命令列出了有关VG属性的一般信息,尤其是PP大小,总计,可用和已使用。
lsvg -l <vg_name>:上面的命令列出了文件系统的类型,LP和PV以及LV状态(无论是打开还是关闭)以及文件系统安装点(如果适用)。
lsvg -p <vg_name>:上面的命令列出了属于该VG的PV以及总计PP和可用PP。
从LV获取信息
您可以使用lslv命令提取有关LV的信息。
lslv -l <lv_name>:上面的命令列出了LV所在的PV。
lslv -m <lv_name>:上面的命令列出了LV所驻留的所有PV的LP,分区号和PV。
在处理以下迁移技术时,上述命令的输出为您提供足够的信息,以确定数据迁移是否适合进行:
migrationlp 迁移电视 磁盘镜像在本演示中,我创建了小型文件系统,这意味着LV的尺寸较小,这是因为我可以使输出保持最小,实际上,正常应用程序的LV将会很大,因此,列出了LP的LP。 LV很长。提示是打印出LV列表,然后使用荧光笔标识要移动的LP。
如果您需要将LP(属于LV的一部分)从一个磁盘移到另一个磁盘,那么migrationlp是您的朋友。 您可以指定要移至另一个磁盘的一个或多个LV段的一部分。
LV监视工具lvmstat的输出与您为migratelp命令使用的所需输入格式非常相似,这并非巧合。
对于此演示, migratelp命令的格式为:
migratelp <LV/LP> <destination_PV>可能是您要移动的LV已镜像的情况。 可以,只需选择要移动的副本即可。
假设我们有以下磁盘:
# lspv hdisk1 00c23bed42b3afff None hdisk2 00525c6a888e32cd vg00 active hdisk3 00c23bed32883598 None hdisk0 00c23bed42b3aefe rootvg active已经确定LV fslv00正在承受压力,可能是由于对磁盘的读写fslv00 。 已经决定在其中放置另一个磁盘(即VG vg00 ),并将部分LV fslv00迁移到新磁盘以缓解拥塞。 首先,让我们看一下fslv00当前所在的磁盘hdisk2 :
# lspv -l hdisk2 hdisk2: LV NAME LPs PPs DISTRIBUTION MOUNT POINT 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 -l vg00 vg00: LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT 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现在,我们可以看到LV fslv00驻留在一个磁盘上。 现在,将另一个磁盘hdisk3添加到VG:
# extendvg vg00 hdisk3确认已添加磁盘,但是我们已经知道磁盘已添加,因为扩展VG时没有出现任何错误:
# lsvg -p vg00 vg00: PV_NAME PV STATE TOTAL PPs FREE PPs FREE DISTRIBUTION hdisk2 active 542 533 109..99..108..108..109 hdisk3 active 2187 2187 438..437..437..437..438现在,让我们看一下LV的位置。 同样,我们可以看到所有LP都位于hdisk2上的LV fslv00上:
# lslv -m fslv00 fslv00:/devhold LP PP1 PV1 PP2 PV2 PP3 PV3 0001 0111 hdisk2 0002 0112 hdisk2 0003 0113 hdisk2 0004 0114 hdisk2现在,让我们将前两个LP(即0001和0002 )从fslv00移至新磁盘hdisk2 。
# migratelp fslv00/1 hdisk3 migratelp: Mirror copy 1 of logical partition 1 of logical volume fslv00 migrated to physical partition 439 of hdisk3. # migratelp fslv00/2 hdisk3 migratelp: Mirror copy 1 of logical partition 2 of logical volume fslv00 migrated to physical partition 440 of hdisk3.通过以上两个migratelp命令,一切看起来都不错。 现在,通过再次查询LV fslv00来确认LP在新磁盘上:
# lslv -m fslv00 fslv00:/devhold LP PP1 PV1 PP2 PV2 PP3 PV3 0001 0439 hdisk3 0002 0440 hdisk3 0003 0113 hdisk2 0004 0114 hdisk2正如预期的那样,LV现在分布在两个磁盘上: hdisk2和hdisk3 。
您可以通过列出两个hdisk的内容来进一步确认,如下所示:
# lspv -l hdisk3 hdisk3: LV NAME LPs PPs DISTRIBUTION MOUNT POINT fslv00 2 2 00..02..00..00..00 /devhold # lspv -l hdisk2 hdisk2: LV NAME LPs PPs DISTRIBUTION MOUNT POINT 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如果您确定在某个时候迁移没有影响,没问题,只需将它们移回,如下所示:
# migratelp fslv00/1 hdisk2 migratelp: Mirror copy 1 of logical partition 1 of logical volume fslv00 migrated to physical partition 111 of hdisk2. # migratelp fslv00/2 hdisk2 migratelp: Mirror copy 1 of logical partition 2 of logical volume fslv00 migrated to physical partition 112 of hdisk2.现在,如果我们查询hdisk3 ,则hdisk3上应该没有LV hdisk3:
# lspv -l hdisk3没有输出返回,这表明磁盘上没有数据。
但是,对于hdisk2而言,关于fslv00的位置,现在一切都回到了以前的样子:
# lspv -l hdisk2 hdisk2: LV NAME LPs PPs DISTRIBUTION MOUNT POINT 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 -m fslv00 fslv00:/devhold LP PP1 PV1 PP2 PV2 PP3 PV3 0001 0111 hdisk2 0002 0112 hdisk2 0003 0113 hdisk2 0004 0114 hdisk2有很多方法可以移动数据。 以前,我们看过migratelp命令。 现在让我们看一下磁盘镜像。 在此演示中,假设我们有一个故障磁盘,并且需要将数据转移到新磁盘上。 我们引入另一个磁盘,然后将LV镜像到新磁盘。 镜像完成后,原始副本将被删除。 然后将故障磁盘从VG中删除。 假设已经将磁盘放入VG vg00 。 下一个任务是在新磁盘中创建LV的副本。
首先,让我们回顾一下VG的布局vg00 :
# lsvg -l vg00 vg00: LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT 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已添加到VG vg00 。 接下来,为所有LV创建到新添加磁盘的副本。 在此演示中, mklvcopy命令的格式为:
mklvcopy <LV_name> <copy_number> <destination__PV>其中copy_number为2 ,即LV的第二次(复制)出现,而destination_PV (在此示例中)为hdisk3 。
# mklvcopy fslv00 2 hdisk3 # mklvcopy fslv01 2 hdisk3 # mklvcopy loglv00 2 hdisk3现在,我们在新磁盘上有了LV的副本。 接下来,我们需要使用syncvg命令同步/镜像LV:
# syncvg -l fslv00 # syncvg -l fslv01 # syncvg -l loglv00现在,我们都已镜像到新磁盘hdisk3 。 可以通过列出VG来确认。 请注意,每个LV的PP列是LP的两倍。 这意味着LV已镜像:
# lsvg -l vg00 vg00: LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT 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_name> <copy_number> <PV_to_remove_copy>对于第一次出现的LV,或者如果您更喜欢原始的LV,其中copy_number将为1 ,而在此示例中, PV_to_remove_copy为hdisk2
因此,让我们从故障磁盘hdisk2删除那些LV副本:
# rmlvcopy fslv00 1 hdisk2 # rmlvcopy fslv01 1 hdisk2 # rmlvcopy loglv00 1 hdisk2现在已删除hisk2所有副本。 我们在hdisk2上不应有任何数据,这可以通过查看VG来确认。 在以下输出中,请注意,对于hdisk2 , TOTAL PP和FREE PP值相同,这意味着磁盘为空:
# lsvg -p vg00 vg00: PV_NAME PV STATE TOTAL PPs FREE PPs FREE DISTRIBUTION hdisk2 active 542 542 109..108..108..108.. 109 hdisk3 active 2187 2178 438..428..437..437.. 438您可以通过列出两个磁盘来进一步确认。 hdisk2应该没有数据,但是hdisk3应该有LV。
# lspv -l hdisk2不返回任何输出,这表明磁盘上没有数据。
# lspv -l hdisk3 hdisk3: LV NAME LPs PPs DISTRIBUTION MOUNT POINT 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 :
# reducevg vg00 hdisk2要确认VG现在只有好的hdisk3磁盘,请执行以下操作:
# lsvg -p vg00 vg00: PV_NAME PV STATE TOTAL PPs FREE PPs FREE DISTRIBUTION hdisk3 active 2187 2178 438..428..437..437..438数据已成功从故障磁盘移至VG中的新磁盘vg00 。 在某个时候,现在已经与VG不相关的故障磁盘将被物理替换。
当您拥有一个包含许多要迁移的LV的人口稠密的磁盘时,使用migratepv命令复制数据有时会更有效率。 您也可以使用此命令来复制单个LV。 假设我们需要将数据从hdisk2迁移到hdisk3 。
The size of the destination disk can be smaller than the source disk, as long as the total of the LVs will all fit into the destination disk.在此演示中,使用的migratepv命令的格式为:
migratepv < source_PV> <destination_PV> migratepv -l <LV> < source_PV> <destination_PV>其中<LV>是要迁移的LV的名称。
在VG vg00的以下输出中,您会注意到hdisk3空。 通过查看相同的TOTAL PP和FREE PP值可以确认这一点。 这意味着该磁盘上没有数据。
# lsvg -p vg00 vg00: PV_NAME PV STATE TOTAL PPs FREE PPs FREE DISTRIBUTION hdisk2 active 542 532 109..98..108..108..1 09 hdisk3 active 2187 2187 438..437..437..437.. 438通过为每个LV运行lslv命令,我们可以进一步确认所有LV都驻留在hdisk2上:
# lslv -m fslv00 fslv00:/apps LP PP1 PV1 PP2 PV2 PP3 PV3 0001 0111 hdisk2 0002 0112 hdisk2 0003 0113 hdisk2 0004 0114 hdisk2 0005 0115 hdisk2 # lslv -m fslv01 fslv01:/devhold LP PP1 PV1 PP2 PV2 PP3 PV3 0001 0116 hdisk2 0002 0117 hdisk2 0003 0118 hdisk2 0004 0119 hdisk2 # lslv -m loglv00 loglv00:N/A LP PP1 PV1 PP2 PV2 PP3 PV3 0001 0110 hdisk2现在,让我们使用以下migratepv命令将LV fslv00从hdisk2迁移到hdisk3 :
# migratepv -l fslv00 hdisk2 hdisk3通过查看LV,我们可以知道LV fslv00现在位于hdisk3 :
# lslv -m fslv00 fslv00:/apps LP PP1 PV1 PP2 PV2 PP3 PV3 0001 0439 hdisk3 0002 0440 hdisk3 0003 0441 hdisk3 0004 0442 hdisk3 0005 0443 hdisk3假设您现在需要跨所有其他LV复制,即将所有数据从hdisk2 hdisk3到hdisk3 ,请运行以下命令:
# migratepv hdisk2 hdisk3成功完成migratepv命令之后, hdisk2上将没有任何数据,并且所有数据现在都位于hdisk3 :
# lspv -l hdisk2上面的命令不返回任何输出,这表明磁盘上没有数据。
# lspv -l hdisk3 hdisk3: LV NAME LPs PPs DISTRIBUTION MOUNT POINT fslv00 5 5 00..05..00..00..00 /apps loglv00 1 1 00..01..00..00..00 N/A fslv01 4 4 00..04..00..00..00 /devhold接下来,运行以下命令以确认VG已打开LV,并且没有问题。
# lsvg -l vg00 vg00: LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT loglv00 jfs2log 1 1 1 open/syncd N/A fslv00 jfs2 5 5 1 open/syncd /apps fslv01 jfs2 4 4 1 open/syncd /devhold在IBM®AIX®的主要功能是可伸缩和大型VG之前,VG是作为普通或原始VG创建的。 您可以通过查询VG并查找MAX PV值来确定您拥有的VG类型。 根据经验,请使用以下数据。
如果32个PV,则它是原始VG。 如果有128个PV,那么这是一个很大的VG。 如果为1024 PV,则它是可扩展的VG。不过请注意,并非所有VG都能返回预期结果。 创建原始VG之后,通常需要维护VG。
从历史上看,旧的VG是原始的,并分配了一组定义的PP。 PP和PV值直接相关。 如果将磁盘(大小更大)放入VG(即原始VG,并且其中所有磁盘的PP和PV大小都较小),则会遇到保理问题。 在其他情况下,您也可能会遇到保理问题。 保理问题并不是什么大问题。 如果更改因子分解,则将允许您的VG减少磁盘。 这是因为,通过增加分解因子的大小,可以增加PP的大小,从而减少了可包含在VG中的磁盘数量。 这真的有问题吗? 在我的书中不是真的。 因此,这里有两种选择:
在关闭VG的情况下,使用chvg -B命令转换为大VG。 在关闭VG的情况下,使用chvg -G命令转换为可伸缩的VG。或者在将来,请确保将任何新的VG创建为可伸缩的,以免遇到因数分解问题。 假定由于无法使文件系统脱机而无法转换VG的情况。 要将磁盘放入VG中,必须更改因子大小。 这是原始VG分解因数错误的示例。 假设我有一个名为appsvg的VG,其磁盘大小为17 GB。 然后尝试向其中添加70 GB磁盘( hdisk3 ),出现以下错误:
# extendvg appsvg hdisk3 0516-1162 extendvg: Warning, The Physical Partition Size of 32 requires the creation of 2187 partitions for hdisk3. The limitation for volume group appsvg is 1016 physical partitions per physical volume. Use chvg command with -t option to attempt to change the maximum Physical Partitions per Physical volume for this volume group. 0516-792 extendvg: Unable to extend volume group.上面的输出可以告诉您问题所在。 无论如何,更改分解因子的大小。 在此演示中,我选择3倍。
# chvg -t3 appsvg 0516-1164 chvg: Volume group appsvg changed. With given characteristics appsvg can include upto 10 physical volumes with 3048 physical partitions each. # extendvg appsvg hdisk3更改因子后,现在只能有10个磁盘,而不是原始的32个磁盘(原始VG)。 但是,那很好,因为至少我已将大磁盘放入VG。 在此示例中,我需要更多的磁盘空间并得到了它。
在本文中,我演示了在遇到磁盘拥塞或可能出现故障的磁盘时可以移动LV的不同方法。 您还可以使用其他工具来移动数据,但是,我专注于数据迁移技术,可让您在迁移数据时保持系统在线。
翻译自: https://www.ibm.com/developerworks/aix/library/au-aix-disk-maintenance/index.html
相关资源:微信小程序源码-合集6.rar