ubuntu改组_改组磁盘数据

在谈论磁盘维护时,建议您习惯一些与磁盘相关的属性的常用缩写,因为它可以减少混乱的情况。

  • 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。

使用migratelp命令移动数据

如果您需要将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(即00010002 )从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现在分布在两个磁盘上: hdisk2hdisk3

您可以通过列出两个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_number2 ,即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_copyhdisk2

因此,让我们从故障磁盘hdisk2删除那些LV副本:

# rmlvcopy fslv00 1 hdisk2
# rmlvcopy fslv01 1 hdisk2
# rmlvcopy loglv00 1 hdisk2

现在已删除hisk2所有副本。 我们在hdisk2上不应有任何数据,这可以通过查看VG来确认。 在以下输出中,请注意,对于hdisk2TOTAL PPFREE 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不相关的故障磁盘将被物理替换。

使用migratepv命令在LV中复制数据

当您拥有一个包含许多要迁移的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 PPFREE 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 fslv00hdisk2迁移到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 hdisk3hdisk3 ,请运行以下命令:

# 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值