簡介
大多數系統管理員都遇到過以下情況:
通常,這種情況下需要 rootvg 恢復,無論是使用磁帶 mksysb 恢復,還是網絡引導恢復。毫無疑問,這是讓人難受的!使用 alt_disk_copy 方法復制 rootvg 所需的時間很少,與重新引導以將 rootvg 恢復到升級之前的狀態所需的時間差不多。本文講解在應用 AIX 升級時如何使用 alt_disk_copy 以及如何恢復 rootvg。還可以使用 alt_disk_copy 測試兩個不同版本的 AIX。只需升級一個磁盤,然後從它引導;當需要返回到另一個版本時,只需從另一個磁盤引導。對於 rootvg 的定期在線備份,常常使用 alt_disk_copy 把 rootvg 克隆到空閒磁盤上。它還可以作為 rootvg 的硬件遷移工具。
本文主要關注典型的 rootvg 兩磁盤軟件鏡像設置。但是,alt_disk_copy 不僅適用於這種兩磁盤設置;相同的原理也可以應用於多種軟件鏡像解決方案。alt_disk 實用程序由以下命令組成:
alt_disk_copy
執行磁盤克隆。
alt_rootvg_op
在克隆的 rootvg 上執行維護操作。
alt_disk_mysysb
執行 mksysb 復制。 本文不討論 alt_disk_mysysb。
這些 alt 命令需要的文件如下:
bos.alt_disk_install.boot_images bos.alt_disk_install.rte bos.msg.en_US.alt_disk_install.rte
概述
因為 alt_disk_copy 命令把當前正在運行的 rootvg 復制到另一個磁盤,所以一定要掛載希望克隆的所有文件系統。alt_disk_copy 只復制 rootvg 中當前掛載的文件系統。執行 rootvg 不需要停止進程;但是,這個過程要花費一段時間,所以最好在午餐時或晚上執行(請記住,它復制正在運行的 rootvg)。復制完成之後,就有了兩個 rootvg 卷組:
rootvg altinst_rootvg
其中的 altinst_rootvg
是克隆的非活躍/不變的 rootvg。在克隆的 rootvg 中,所有邏輯卷名前面有 ‘alt’ 前綴。引導列表也改為從 altinst_rootvg 引導。AIX 喜歡這樣做;它假設您希望從克隆的 rootvg 而不是真實的 rootvg 引導。如果現在重新引導系統,當系統運行起來之後,原來的 rootvg 將變成:
old_rootvg
altinst_rootvg 變成:
rootvg
如果決定從 old_rootvg 重新引導,當系統運行起來之後,old_rootvg 變成:
rootvg
rootvg 變成:
altinst_rootvg
不必擔心原來的和克隆的 rootvg 的重命名。稍後討論這個問題。
在成功地完成升級之後,可以使用 alt_rootvg_op 銷毀包含克隆的 rootvg 的磁盤,重新建立鏡像。如果升級失敗,也沒問題 —— 只需制作第三方支持所需的快照,然後從原來的 rootvg 引導。對於登錄的用戶來說,沒有什麼影響。
當從第三方支持收到修復建議時,只需從克隆的 rootvg 重新引導並糾正問題。不需要重新應用升級,因為在克隆的 rootvg 上已經應用了升級。測試升級結果,如果一切正常,就銷毀原來的 rootvg,重新建立鏡像。
在克隆的 rootvg 上不要使用 importvg 或 exportvg;而是應該使用 alt 命令。
對於克隆的 rootvg,可以使用 alt_rootvg_op 喚醒它,從而掛載文件系統。可以在克隆的文件系統上執行所需的任何操作,比如糾正鏈接、為第三方支持收集信息等,然後讓這個磁盤繼續休眠,這也會卸載文件系統。
在執行克隆時排除某些目錄
在執行克隆時,可以通過創建 /etc/exclude.rootvg
文件排除某些目錄。文件中的條目應該以 ^./ 開頭。‘^’ 表示搜索行開頭的字符串,‘./’ 表示相對於當前目錄。建議您這麼做,因為 alt_disk_copy 使用 grep 搜索字符串,這麼做它就不會誤解命令。例如,要想排除以下目錄,就要提供完整的路徑名並加上前綴 ‘^.’:
/home/reps /opt/installs
可以在 /etc/exclude.rootvg 文件中插入:
^./home/reps ^./opt/installs
要確保最後一個條目後面沒有空行。
開始克隆吧!
現在,我們先看看典型的克隆。假設您有 rootvg 的兩磁盤(hdisk0 和 hdisk1)軟件鏡像,將在這個系統上進行 ML 升級(或對安裝在 rootvg 中的應用程序進行升級)。我將講解如何執行克隆,以及在成功地升級之後,如何讓這個磁盤回到 rootvg 中並重新建立鏡像。還會講解在升級失敗時可以采取的措施。
操作前檢查
在取消 rootvg 的鏡像之前,首先花些時間確認鏡像是正確的,沒有過時的 LV,因為如果有這種情況,unmirrorvg 命令會失敗。當然,如果 unmirrorvg 失敗,可以使用 migratepv 在兩個磁盤之間相互復制缺少的 LV。檢查鏡像是否正確的簡單方法是執行以下命令:
lsvg -l rootvg
# df -m Filesystem MB blocks Free %Used Iused %Iused Mounted on /dev/hd4 128.00 102.31 21% 2659 11% / /dev/hd2 1968.00 111.64 95% 40407 58% /usr /dev/hd9var 112.00 77.82 31% 485 3% /var /dev/hd3 96.00 69.88 28% 330 3% /tmp /dev/hd1 208.00 118.27 44% 1987 7% /home /proc - - - - - /proc /dev/hd10opt 1712.00 1445.83 16% 6984 3% /opt /dev/alt_hd4 128.00 102.16 21% 2645 11% /alt_inst /dev/alt_hd1 208.00 33.64 84% 1987 21% /alt_inst/home /dev/alt_hd10opt 1712.00 1445.77 16% 6984 3% /alt_inst/opt /dev/alt_hd3 96.00 72.38 25% 335 2% /alt_inst/tmp /dev/alt_hd2 1968.00 100.32 95% 40407 59% /alt_inst/usr /dev/alt_hd9var 112.00 77.53 31% 477 3% /alt_inst/var
現在,可以在克隆的 rootvg 上修改文件或進一步進行研究。現在可以訪問克隆的文件系統。完成這些任務之後,讓克隆的 rootvg 恢復休眠狀態,同時對這個磁盤執行 bosboot。基本命令格式為:
alt_rootvg_op -S -t <hdisk>
現在,我們讓 altinst_rootvg 休眠:
# alt_rootvg_op -S -t hdisk0 Putting volume group altinst_rootvg to sleep ... Building boot image on cloned disk. forced unmount of /alt_inst/var forced unmount of /alt_inst/usr forced unmount of /alt_inst/tmp forced unmount of /alt_inst/opt forced unmount of /alt_inst/home forced unmount of /alt_inst forced unmount of /alt_inst Fixing LV control blocks... Fixing file system superblocks...
磁盤的當前狀態是:
# lspv hdisk0 0041a97b0622ef7f altinst_rootvg hdisk1 00452f0b2b1ec84c rootvg active
可以看到克隆的 rootvg 的名稱仍然是
altinst_rootvg
。為了避免混淆,有時候最好恢復磁盤原來的狀態,尤其是在有多個克隆的 rootvg 的情況下。所以把 altinst_rootvg 改名為 old_rootvg。基本格式是:
alt_rootvg_op -v <new cloned rootvg name> -d <hdisk>
所以對於這個示例,應該執行:
# alt_rootvg_op -v old_rootvg -d hdisk0 # lspv hdisk0 0041a97b0622ef7f old_rootvg hdisk1 00452f0b2b1ec84c rootvg active
當然,如果願意,可以把克隆的 rootvg 改為更有意義的名稱。
# alt_rootvg_op -v bad_rootvg -d hdisk0 bash-2.05a# lspv hdisk0 0041a97b0622ef7f bad_rootvg hdisk1 00452f0b2b1ec84c rootvg active
不能把克隆的 rootvg 改名為 altinst_rootvg;這是一個保留的名稱。
現在,系統操作是否正常取決於應用的修復措施是否有效。
如果在 hdisk0 (old_rootvg) 上應用的修復措施是有效的,就用新的 ML 版本運行系統。
確認系統將從 hdisk0 引導:
# bootlist -m normal -o hdisk0
重新引導:
# shutdown -Fr
銷毀克隆的磁盤 hdisk1(我們從 old_rootvg 重新引導;它現在變成 altinst_rootvg):
# alt_rootvg_op -X altinst_rootvg
讓 hdisk1 回到 rootvg 中供鏡像使用:
# extendvg -f rootvg hdisk1 # mirrorvg rootvg hdisk1 # bosboot -a # bootlist -m normal -o hdisk0 hdisk1
如果修復無效,就仍然使用原來的 ML 版本,以後再修復:
確認系統將從 hdisk1 引導:
# bootlist -m normal -o hdisk1
銷毀克隆的磁盤 hdisk0 (old_rootvg):
# alt_rootvg_op -X old_rootvg
讓 hdisk0 回到 rootvg 中供鏡像使用:
# extendvg -f rootvg hdisk0 # mirrorvg rootvg hdisk0 # bosboot -a # bootlist -m normal -o hdisk0 hdisk1
結束語
本文講解了在 AIX 升級出現問題時如何使用 alt 命令快速恢復 rootvg,以及如何在正在運行的系統上掛載克隆的 rootvg 文件系統。還可以使用 alt 命令提供把 rootvg 磁盤遷移到另一種硬件的路徑。還可以對兩個不同的 AIX 版本使用 alt 命令,這對於測試遷移過程非常有用。