將文件系統(tǒng)在線遷移到更小的物理卷方法詳解
難題:縮小物理卷
IBM AIX LVM 提供了若干特性,可以使您在不宕機(jī)的情況下回收未利用的磁盤(pán)空間。您可以使用 chfs 縮小文件系統(tǒng),并從卷組 (VG) 中移除未使用的物理卷 (PV),從而將存儲(chǔ)空間分配到其他位置。
然而,如果希望縮小 AIX PV 來(lái)收回未使用的磁盤(pán)空間,您將會(huì)對(duì) PV 造成破壞。如果有一個(gè)大的 SAN LUN,其中包含大量未使用的物理分區(qū) (PP),您可以備份數(shù)據(jù)、減小 LUN,并將數(shù)據(jù)恢復(fù)到較小的 PV 中。然而,這將造成系統(tǒng)宕機(jī),這是不可接受的。在完成數(shù)據(jù)清理后,如果某個(gè)大型 LUN 需要回收一些空間,它應(yīng)當(dāng)盡可能地實(shí)現(xiàn)無(wú)縫操作。
解決方案:遷移到一個(gè)較小的新物理卷
您可能無(wú)法縮小正在使用中的 PV 的大小,但是您可以創(chuàng)建一個(gè)較小的新 SAN LUN,并將它添加到現(xiàn)有 VG,然后將數(shù)據(jù)從較大的 PV 遷移到較小的 PV。完成這些操作后,原來(lái)那些較大的 PV 就可以從 VG 中移除。此后,可以通過(guò) rmdev 將 hdisk 從 Object Data Manager (ODM) 中移出。然后,您可以重新將 SAN 存儲(chǔ)用于其他用途。
該過(guò)程要求新的 PV 具有合適的大小和特征,從而能夠添加到現(xiàn)有 VG。它必須有足夠大來(lái)存放原始 PV(正在使用的 PP)中的所有數(shù)據(jù)。該過(guò)程還假設(shè)沒(méi)有發(fā)生任何邏輯卷 (LV) 劃分,因?yàn)檫@將限制使用 mklvcopy 運(yùn)行邏輯卷鏡像的能力。
對(duì)于本例,提供了一個(gè)具有 50 GB PV 的 VG,名稱為 datavg。lspv 命令顯示了 PV 及空閑和使用中 PP 的總大?。▍⒁?jiàn) 清單 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
這里有一個(gè)增強(qiáng)的 journaled 文件系統(tǒng) (JFS2),稱為 /scratch,它分配有 49.50 GB 空間,其中有超過(guò) 35 GB 的空閑空間。該文件系統(tǒng)創(chuàng)建時(shí)使用的是 INLINE JFS2 日志:
縮小文件系統(tǒng)
由于文件系統(tǒng)正在使用的空間不足其所分配空間的三分之一,因此可以縮小它的總磁盤(pán)分配。您可以通過(guò) chfs 縮小文件系統(tǒng)的大小。下面的命令可以將其大小減小 30 GB。
- # chfs -a size=-30G /scratch
- Filesystem size changed to 40894464
- Inlinelog size changed to 78 MB.
文件系統(tǒng)的總磁盤(pán)分配已經(jīng)減少到 19.50 GB:
- # df -gI /scratch
- Filesystem GB blocks Used Free %Used Mounted on
- /dev/scratchlv 19.50 14.08 5.42 73% /scratch
該過(guò)程在 PV 上釋放了一些 PP,如 清單 2 中的 lspv 命令所示。
清單 2. lspv 顯示空閑的物理分區(qū)
- # 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
向卷組添加一個(gè)更小的物理卷
下一步是向現(xiàn)有 VG 添加一個(gè)較小的新 PV。該 PV 應(yīng)當(dāng)至少具有與原始較大 PV 相同的冗余和輸入/輸出 (I/O) 性能。例如,它應(yīng)當(dāng)是一個(gè)同等的獨(dú)立磁盤(pán)冗余陣列 (RAID)。還應(yīng)當(dāng)設(shè)置任何其他調(diào)優(yōu)特性(如隊(duì)列深度)以確保系統(tǒng)性能與原始較大 PV 相匹配。
創(chuàng)建一個(gè)新的 LUN,將其分配給 AIX 邏輯分區(qū) (LPAR)。在本例中,新的 LUN 為 20 GB:
- # cfgmgr
lspv 命令的輸出顯示,新磁盤(pán)名為 hdisk2(參見(jiàn) 清單 3),并且它不屬于某個(gè) VG。
清單 3. 列出新的磁盤(pán)
- # lspv
- hdisk0 00c5a47e3f356f3c rootvg active
- hdisk1 00cb07a45a12b4ca datavg active
- hdisk2 none None
您可以使用 getconf 命令在磁盤(pán)添加到 VG 之前查看它的大小。以 MB 為單位顯示磁盤(pán)大小:
- # getconf DISK_SIZE /dev/hdisk2
- 20480
使用 extendvg 命令將磁盤(pán)添加到現(xiàn)有 VG:
- # extendvg datavg hdisk2
- 0516-1254 extendvg: Changing the PVID in the ODM.
將邏輯分區(qū)鏡像或遷移到新的物理卷
您可以將 LV 鏡像到新 PV,在兩個(gè) PV 之間同步所有 PP 后即可將副本從原始 PV 中移除。
- mklvcopy -k scratchlv 2
mklvcopy 還提供了其他選項(xiàng)。例如,您可以將同步推遲到一個(gè)更安靜的時(shí)間。您還可以指定磁盤(pán)分配策略。mklvcopy 的官方文檔提供了必要的細(xì)節(jié)(請(qǐng)參閱 參考資料)。
從原始物理卷中移除副本
完成同步后,您可以使用 rmlvcopy 從原始 PV 中移除副本。一定要指定其中包含您希望移除的副本 PV。
- rmlvcopy scratchlv 1 hdisk1
您可以使用 lspv 命令確認(rèn)原始 PV 中沒(méi)有正在使用的 PP。如果還有一些 PP 正在使用,那么可以使用 lspv -l PVNAME 列出 PV 上的 LV。當(dāng)確定所有 PP 都轉(zhuǎn)移到其他 PV 中后,可以使用 reducevg 將原始 PV 從 VG 中移除:
- reducevg datavg hdisk1
您應(yīng)當(dāng)能夠使用 rmdev 從 ODM 中移除 PV:
- rmdev -d -l hdisk1
***,您可以移除 LUN 或?qū)⑺峙浣o其他用途。
避免宕機(jī)
可以看到,LVM 特性允許您在不對(duì)用戶產(chǎn)生影響的情況下移動(dòng)數(shù)據(jù),甚至移動(dòng)到更小的磁盤(pán)。通過(guò)利用 LVM 鏡像和遷移功能,您可以保持系統(tǒng)運(yùn)行并恢復(fù)珍貴的存儲(chǔ)空間(如果過(guò)度分配的話)。