技巧:将文件系统在线迁移到更小的物理卷

使用逻辑卷管理器 (LVM) 在不宕机的情况下回收磁盘空间

可以通过缩小文件系统来收回未使用的空间,在 IBM® AIX® 中在线实现此操作非常简单。然后您可以将那些未使用的空间分配给卷组中的其他文件系统。但是,如果想要缩小物理卷的大小,例如,缩小一个 SAN LUN,那么有可能会破坏 AIX 物理卷中的数据。此问题的解决方法是创建一个较小的新物理卷,将它添加到卷组,然后使用标准的逻辑卷管理器 (LVM) 工具(如 mklvcopymigratepv)迁移原始文件系统。从卷组中移除原始的物理卷后,可以解除它的映射并将它重新用于 SAN 中的其他地方。

Anthony English, 高级 AIX 专家, Levitar Pty Ltd

http://www.ibm.com/developerworks/i/p-aenglish.jpgAnthony English 是来自澳大利亚悉尼市的一名独立承包人。他从 1991 年开始就一直在 AIX 系统上工作,他还撰写 IBM developerWorks 博客 AIX Down Under。Anthony 还被评为 IBM Champion for Power Systems



2012 年 9 月 17 日

难题:缩小物理卷

IBM AIX LVM 提供了若干特性,可以使您在不宕机的情况下回收未利用的磁盘空间。您可以使用 chfs 缩小文件系统,并从卷组 (VG) 中移除未使用的物理卷 (PV),从而将存储空间分配到其他位置。

然而,如果希望缩小 AIX PV 来收回未使用的磁盘空间,您将会对 PV 造成破坏。如果有一个大的 SAN LUN,其中包含大量未使用的物理分区 (PP),您可以备份数据、减小 LUN,并将数据恢复到较小的 PV 中。然而,这将造成系统宕机,这是不可接受的。在完成数据清理后,如果某个大型 LUN 需要回收一些空间,它应当尽可能地实现无缝操作。


解决方案:迁移到一个较小的新物理卷

您可能无法缩小正在使用中的 PV 的大小,但是您可以创建一个较小的新 SAN LUN,并将它添加到现有 VG,然后将数据从较大的 PV 迁移到较小的 PV。完成这些操作后,原来那些较大的 PV 就可以从 VG 中移除。此后,可以通过 rmdev 将 hdisk 从 Object Data Manager (ODM) 中移出。然后,您可以重新将 SAN 存储用于其他用途。

该过程要求新的 PV 具有合适的大小和特征,从而能够添加到现有 VG。它必须有足够大来存放原始 PV(正在使用的 PP)中的所有数据。该过程还假设没有发生任何逻辑卷 (LV) 划分,因为这将限制使用 mklvcopy 运行逻辑卷镜像的能力。

对于本例,提供了一个具有 50 GB PV 的 VG,名称为 datavglspv 命令显示了 PV 及空闲和使用中 PP 的总大小(参见 清单 1)。

清单 1. 显示物理卷特征
# lspv hdisk1
PHYSICAL VOLUME:    hdisk1                   VOLUME GROUP:     datavg
PV IDENTIFIER:      00cb07a45a12b4ca VG IDENTIFIER     00cb07a400004c00000001345a26db3e
PV STATE:           active
STALE PARTITIONS:   0                        ALLOCATABLE:      yes
PP SIZE:            512 megabyte(s)          LOGICAL VOLUMES:  1
TOTAL PPs:       99 (50688 megabytes)     VG DESCRIPTORS:   2
FREE PPs:         0 (0 megabytes)          HOT SPARE:        no
USED PPs:        99 (50688 megabytes)     MAX REQUEST:      256 kilobytes
FREE DISTRIBUTION:  00..00..00..00..00
USED DISTRIBUTION:  20..20..19..20..20
MIRROR POOL:        None

这里有一个增强的 journaled 文件系统 (JFS2),称为 /scratch,它分配有 49.50 GB 空间,其中有超过 35 GB 的空闲空间。该文件系统创建时使用的是 INLINE JFS2 日志:

# df -gI /scratch
Filesystem    GB blocks      Used      Free %Used Mounted on
/dev/scratchlv     49.50     14.20     35.30   29% /scratch

附属细则

该解决方案适用于在 LVM 级别未分区的 LV。LVM 分区存在自身的限制,这超出了本文的讨论范围。本示例中的文件系统使用了 INLINE JFS2 日志。

本例中的解决方案还假设有充足的存储空间来创建与原始 SAN LUN 具有类似性能和冗余的新 SAN LUN,因此最终的结果不会影响系统的响应时间。新的 LUN 应当包含足够的空间来匹配原始较大 LUN 中的已使用的 PP。

缩小文件系统

由于文件系统正在使用的空间不足其所分配空间的三分之一,因此可以缩小它的总磁盘分配。您可以通过 chfs 缩小文件系统的大小。下面的命令可以将其大小减小 30 GB。

# chfs -a size=-30G /scratch
Filesystem size changed to 40894464
Inlinelog size changed to 78 MB.

文件系统的总磁盘分配已经减少到 19.50 GB:

# df -gI /scratch
Filesystem    GB blocks      Used      Free %Used Mounted on
/dev/scratchlv     19.50     14.08      5.42   73% /scratch

该过程在 PV 上释放了一些 PP,如 清单 2 中的 lspv 命令所示。

清单 2. lspv 显示空闲的物理分区
# lspv hdisk1
PHYSICAL VOLUME:    hdisk1                   VOLUME GROUP:     datavg
PV IDENTIFIER:      00cb07a45a12b4ca VG IDENTIFIER     00cb07a400004c00000001345a26db3e
PV STATE:           active
STALE PARTITIONS:   0                        ALLOCATABLE:      yes
PP SIZE:            512 megabyte(s)          LOGICAL VOLUMES:  1
TOTAL PPs:          99 (50688 megabytes)     VG DESCRIPTORS:   2
FREE PPs:        60 (30720 megabytes)     HOT SPARE:        no
USED PPs:           39 (19968 megabytes)     MAX REQUEST:      256 kilobytes
FREE DISTRIBUTION:  00..01..19..20..20
USED DISTRIBUTION:  20..19..00..00..00
MIRROR POOL:        None

向卷组添加一个更小的物理卷

下一步是向现有 VG 添加一个较小的新 PV。该 PV 应当至少具有与原始较大 PV 相同的冗余和输入/输出 (I/O) 性能。例如,它应当是一个同等的独立磁盘冗余阵列 (RAID)。还应当设置任何其他调优特性(如队列深度)以确保系统性能与原始较大 PV 相匹配。

创建一个新的 LUN,将其分配给 AIX 逻辑分区 (LPAR)。在本例中,新的 LUN 为 20 GB:

# cfgmgr

lspv 命令的输出显示,新磁盘名为 hdisk2(参见 清单 3),并且它不属于某个 VG。

清单 3. 列出新的磁盘
# lspv
hdisk0          00c5a47e3f356f3c                    rootvg          active
hdisk1          00cb07a45a12b4ca                    datavg          active
hdisk2          none                                None

您可以使用 getconf 命令在磁盘添加到 VG 之前查看它的大小。以 MB 为单位显示磁盘大小:

# getconf DISK_SIZE /dev/hdisk2
20480

使用 extendvg 命令将磁盘添加到现有 VG:

# extendvg datavg hdisk2
0516-1254 extendvg: Changing the PVID in the ODM.

将逻辑分区镜像或迁移到新的物理卷

您可以将 LV 镜像到新 PV,在两个 PV 之间同步所有 PP 后即可将副本从原始 PV 中移除。

mklvcopy -k scratchlv 2

使用迁移方法替代镜像方法

您可以使用 migratepv 迁移 LV,而不是使用镜像方法。请参阅 参考资料,获得更多信息的链接。

mklvcopy 还提供了其他选项。例如,您可以将同步推迟到一个更安静的时间。您还可以指定磁盘分配策略。mklvcopy 的官方文档提供了必要的细节(请参阅 参考资料)。

从原始物理卷中移除副本

完成同步后,您可以使用 rmlvcopy 从原始 PV 中移除副本。一定要指定其中包含您希望移除的副本 PV。

rmlvcopy scratchlv 1 hdisk1

您可以使用 lspv 命令确认原始 PV 中没有正在使用的 PP。如果还有一些 PP 正在使用,那么可以使用 lspv -lPVNAME 列出 PV 上的 LV。当确定所有 PP 都转移到其他 PV 中后,可以使用 reducevg 将原始 PV 从 VG 中移除:

reducevg datavg hdisk1

您应当能够使用 rmdev 从 ODM 中移除 PV:

rmdev -d -l hdisk1

最后,您可以移除 LUN 或将它分配给其他用途。


避免宕机

可以看到,LVM 特性允许您在不对用户产生影响的情况下移动数据,甚至移动到更小的磁盘。通过利用 LVM 镜像和迁移功能,您可以保持系统运行并恢复珍贵的存储空间(如果过度分配的话)。

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=AIX and UNIX, Open source
ArticleID=835317
ArticleTitle=技巧:将文件系统在线迁移到更小的物理卷
publish-date=09172012