将文件系统在线迁移到更小的物理卷方法详解

运维 系统运维
可以通过缩小文件系统来收回未使用的空间,在 IBM AIX中在线实现此操作非常简单。然后您可以将那些未使用的空间分配给卷组中的其他文件系统。但是,如果想要缩小物理卷的大小,例如,缩小一个 SAN LUN,那么有可能会破坏 AIX 物理卷中的数据。本文将介绍将文件系统在线迁移到更小的物理卷的方法。

难题:缩小物理卷

  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,名称为 datavg。lspv 命令显示了 PV 及空闲和使用中 PP 的总大小(参见 清单 1)。

  清单 1. 显示物理卷特征:

  1. # lspv hdisk1  
  2. PHYSICAL VOLUME:    hdisk1                   VOLUME GROUP:     datavg  
  3. PV IDENTIFIER:      00cb07a45a12b4ca VG IDENTIFIER     00cb07a400004c00000001345a26db3e  
  4. PV STATE:           active  
  5. STALE PARTITIONS:   0                        ALLOCATABLE:      yes  
  6. PP SIZE:            512 megabyte(s)          LOGICAL VOLUMES:  1  
  7. TOTAL PPs:       99 (50688 megabytes)     VG DESCRIPTORS:   2  
  8. FREE PPs:         0 (0 megabytes)          HOT SPARE:        no  
  9. USED PPs:        99 (50688 megabytes)     MAX REQUEST:      256 kilobytes  
  10. FREE DISTRIBUTION:  00..00..00..00..00  
  11. USED DISTRIBUTION:  20..20..19..20..20  
  12. MIRROR POOL:        None 

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

  缩小文件系统

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

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

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

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

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

  清单 2. lspv 显示空闲的物理分区

  1. # lspv hdisk1  
  2. PHYSICAL VOLUME:    hdisk1                   VOLUME GROUP:     datavg  
  3. PV IDENTIFIER:      00cb07a45a12b4ca VG IDENTIFIER     00cb07a400004c00000001345a26db3e  
  4. PV STATE:           active  
  5. STALE PARTITIONS:   0                        ALLOCATABLE:      yes  
  6. PP SIZE:            512 megabyte(s)          LOGICAL VOLUMES:  1  
  7. TOTAL PPs:          99 (50688 megabytes)     VG DESCRIPTORS:   2  
  8. FREE PPs:        60 (30720 megabytes)     HOT SPARE:        no  
  9. USED PPs:           39 (19968 megabytes)     MAX REQUEST:      256 kilobytes  
  10. FREE DISTRIBUTION:  00..01..19..20..20  
  11. USED DISTRIBUTION:  20..19..00..00..00  
  12. MIRROR POOL:        None 

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

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

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

  1. # cfgmgr 

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

  清单 3. 列出新的磁盘

  1. # lspv  
  2. hdisk0          00c5a47e3f356f3c                    rootvg          active  
  3. hdisk1          00cb07a45a12b4ca                    datavg          active  
  4. hdisk2          none                                None 

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

  1. # getconf DISK_SIZE /dev/hdisk2  
  2. 20480 

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

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

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

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

  1. mklvcopy -k scratchlv 2 

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

  从原始物理卷中移除副本

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

  1. rmlvcopy scratchlv 1 hdisk1 

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

  1. reducevg datavg hdisk1 

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

  1. rmdev -d -l hdisk1 

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

  避免宕机

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

责任编辑:黄丹 来源: developerWorks
相关推荐

2012-09-20 10:49:49

IBMdw

2018-01-10 12:42:09

Linux磁盘文件系统

2009-12-03 17:03:47

Suse Linux系

2012-10-15 13:41:47

IBMdw

2017-07-26 16:09:54

系统迁移趋势

2016-12-12 19:16:43

数据云端

2011-06-24 10:10:35

SVN

2022-07-01 08:03:19

OracleLinux系统

2013-04-27 10:37:35

Python

2010-10-21 13:14:35

2020-08-11 11:08:24

云端云计算业务迁移

2015-05-19 09:30:44

Azure工作负载迁移工具推荐

2010-08-05 11:03:55

创建分区文件系统

2010-07-27 10:15:38

NFS网络文件系统

2016-03-28 09:48:08

云环境迁移

2009-11-25 17:48:18

PHP文件系统相关函数

2019-05-29 16:33:32

Linux虚拟系统

2019-05-22 09:00:16

Linux虚拟文件系统

2023-08-05 12:58:51

RPC协议服务端

2019-11-15 09:02:50

OpenJDKGitHub
点赞
收藏

51CTO技术栈公众号