AIX LVM基本概念理解及十八個典型問題
對于AIX系統工程師來說,LVM是無論如何都無法避免的區域,VG鏡像、存儲遷移、IO調優,存儲故障處理各個方面都有LVM的影子。每當我們在這些方面遇到難題時,其實都是直接或間接的和LVM戰斗。
以下是一些LVM知識、常見問題及其解決方法和注意事項,掌握這些內容,必將提高你的LVM戰斗力!
1. 基本概念
LVM內置在AIX系統中,隨著AIX版本的更新而更新。不管是功能性還是擴展性都在逐步發展。我們在日常的工作中,一定結合自己的實際情況做好規劃再使用,避免由于LVM本身的限制帶來后期維護和擴展的困難。
典型問題:
1. lvm里關于VG三種選項有何差異,在實際使用中有何種不同體現,優缺點在哪里?
2. chvg -t factor各個因子分別代表什么?
3. AIX上卷組里關于quorum這個值的作用和意義?
解答以上問題,需要具備下知識
AIX LVM支持3種類型的VG,分別是normal VG,Big VG和Scalable VG,如下表所示:
這三種VG最重要的區別就是在擴展性上的支持有很大差異。
normal VG擴展性最小,Big VG次之、Scalable VG擴展性最好。
這三種類型的vg是隨著AIX版本的更新逐步推出的。如果在早期的項目實施中使用了normal vg,后續還有陸續擴容的需求,可能就會超出normal vg的自身限制,造成擴容失敗的后果。此時又兩個解決方法:
1. 升級到其他VG類型獲取更高的擴展性:
Chvg–B xxvg 升級到big vg,可以在線升級
Chvg–G xxvg升級到scalable vg,需要先執行varyoffvg命令才能升級
兩者都需要pv中有足夠的空間來承載vgda信息的變更。
2. 更改factor因子。實際是通過更改pp限制來實現,由factor來指定。更改實際上是在pp數支持和pv支持數量上做一個平衡。如:
Chvg–t 2 xxvg
除了容量和擴展性的差別。在創建裸設備時,使用scalable vg創建的裸設備lv默認不帶4k偏移,big vg加 -T -O參數可以不帶4k偏移,普通vg不行。不過現在用裸設備的不多了,可以忽略。
卷組的quorum 是由有效的VGDA(卷組描述區)構成的。一個卷組中至少有2個 VGDA 區,每個物理卷上都至少有一個VGDA。VGDA 中記錄了卷組中所包含邏輯卷和物理卷的狀態和描述信息。 當卷組中只有一個物理卷時,該物理卷上就會存在2個VGDA區; 當卷組中有兩個物理卷上時,其中一塊物理卷上有2個VGDA ,另一物理卷上有1個VGDA; 當卷組由在3個以上(>=3)的物理卷組成時,每個物理卷上都會有1個VGDA。 當quorum的值設置為on時,quorum丟失會導致卷組關閉,防止進一步的操作造成數據丟失。
2.故障排錯
在LVM的使用中,經常遇到各種故障。有的是理論知識不足,有的是細節有待完善。PVID、VGDA、VGSA、ODM、exportvg、recreatevg等等,我們需要梳理LVM的結構和相關術語,這樣才能在故障排錯中得心應手。
典型問題:
1. odmvgda混亂時,該如何下手?
2. lg_dumplv報too small,增加后很快又空間不足,能否忽略該問題?
3. vg信息與ODM同步問題?
4. AIX PV 出現missing和remove的狀態原因和相應的解決辦法探討?
5. VG中添加PV失敗?
解答以上問題,需要具備下知識
AIX中LVM的信息同時存放在硬盤和ODM里,硬盤里的表現為VGDA、VGSA等。當磁盤指定為pv(如執行mkdev)時,vgda被分配。當pv加入vg時,vgda內被寫入信息。Aix對磁盤的識別以PVID為準。在正常情況下,硬盤上的信息和ODM里的信息應該是一致的。我們平時所做的操作如lspv、lsvg等命令,實際上是從ODM讀取的信息。當執行exportvg命令時,實際上是將odm里的對應信息刪除掉,執行importvg則是將vgda里的信息重新復制到odm中。以此為準,上面的問題就比較好解答了:
Q:odmvgda混亂時,該如何下手?
A:我們知道,lvm信息由兩份,一份在硬盤上,一份在odm上。如果odm的出了問題,最常見的處理方式就是使用exportvg命令將vg導出后,重新importvg即可。但在一些特殊情況下這樣做會不起作用,可以考慮使用以下幾種方式:
Synclvodm,是從VGDA同步ODM,前提是VG的定義還在,ODM里錯誤的被修正,缺失的會從VGDA導入,但ODM里多的還會存在。
redefinevg也是從VGDA同步ODM,前提是VG定義沒了才用,要指定從哪個PV導入,ODM里多的還會在
recreatevg,根據vgda信息重建vg,即使PVID丟失,只有原有的lv和fs等結構未破壞即可修復。
Q:lg_dumplv報too small,增加后很快又空間不足,能否忽略該問題?
A:用sysdumpdev -e看看生成的需要多大空間,然后建個大的dump device,指向新的dump device即可。Dump設備是用來在出故障時捕獲內存等信息的,如果太小會dump失敗。每天的報錯是由crontab里的dumpcheck條目觸發的。只有空間不足,每天定時任務里的dumpcheck檢查都會導致出現報錯。
Q:AIX PV 出現missing和remove的狀態原因和相應的解決辦法探討?
A:(1).鏈路異常,物理損壞,不正常操作會導致missing
對應:排查并確保hdisk到存儲lun的物理路徑正常,如果鏈路沒問題,一般cfgmgr后會自動更正。但是對于aix下rdac的情況,需要額外注意,aixrdac設備如下:
darX:設備路由,可用理解成整個一臺存儲,一臺存儲1個如:dar0
dacX:理解成控制器,一臺存儲2個如:dac0 dac1
hdiskX:聚合后的硬盤
ds45k存儲下,rdac這幾個設備經常會異常,導致硬盤紊亂,矯正不過來,需要從darx到hdiskx都刪除,再重新cfgmgr
(2). 狀態異常會導致remove,這個具體原因不明
應對: 使用chpv -v a hdiskx可以手工更正過來
(3).其他異常,如pvid丟失等。可通過recreatevg命令重建vg
3.LVM在集群環境中的應用
在實際生產環境中,LVM經常會出現在各種集群環境中,比如IBM PowerHA,Oracle RAC等等,在不同的集群環境、不用的應用場景中,對LVM的要求也各不相同,需要我們在實施和維護中多加注意。
典型問題:
1. HACMP中LVM shrink lv問題?
2. 想了解下ha環境中,lvm如何管理,存儲擴容,存儲性能優化?
3. LVM Mirror其中一臺存儲掛起,另一臺文件系統訪問時間?
4. PVID號不同的話不會影響ha接管吧?
5. 在HA環境下不停業務,如何將卷組增加mirror pool功能?
解答以上問題,需要具備下知識
LVM最常出現的場景就是IBM PowerHA(以前的HACMP),vg在HACMP中可以以兩種方式出現。一種是普通的vg模式,一種是fast takeover模塊(concurrent vg)。不管采用哪種方式,要求掛接的存儲盤在兩個節點上的PVID必須是一樣的。最好major number也要一樣。在配置好HACMP并投入運行后,后期對存儲層面的變更基本都會涉及到lvm,目前有兩種處理方式:
(1). 在其中一個節點進行LVM操作,另外一個節點重新導入。這樣做需要預留一定的停機時間。
(2). 直接通過hacmp的c-spoc來在線操作,無需停止HACMP。
在使用Oracle RAC的場景中比較特殊。早期Oracle11.2之前的版本,可以使用裸設備、集群文件系統和asm(10版本)。不管是asm還是裸設備都使用了HACMP,在這里HACMP的作用是將并發的concurrent vg在兩個節點同時拉起來(當然,rac的一些服務也要像grpsvcs注冊,這里只討論LVM相關)。所以,只有oracle在使用裸設備或asm的情況下,并且使用了LVM的方式,才會用到HACMP,其他時候不需要。并且,使用了HACMP+concurrent vg的場景下,后續lv的增刪可以在一個節點執行,另一個節點會自動識別。到了11G r2版本后,裸設備已經不再被支持,HACMP也失去了存在的意義,基本只使用asm了。并且,由于asm使用的是裸磁盤,識別到的hdiskx還需要將PVID清除掉。
現在我們再來看上面的問題:
Q:HACMP中LVM shrink lv問題?
A:直接通過smithacmp–c-spoc菜單執行即可。也可以在單個節點修改后,另一個節點重新導入。
Q: 想了解下HA環境中,LVM如何管理,存儲擴容,存儲性能優化?
A: LVM管理,HA環境下需要考慮兩臺機器的一致性問題,powerha 7.1版本會自動把單機lvm命令翻譯成HA環境下的雙機命令,如果是hacmp6.1之前的版本,要在HA菜單中操作,才能保證共享vg的信息一致:smittycl_lvm
要注意,更老的版本,5.4.1之前的這個經常會失敗,也就是說調整lvm,可能需要安排共享vg varyoff。存儲擴容,對os來說,就是lvm管理,同上。
存儲性能優化,要具體看環境,雙存儲鏡像在核心db上很常見,要注意兩份數據,很清晰的分布在兩個存儲上,而不只是分布在兩個lun上。
Q:LVM Mirror其中一臺存儲掛起,另一臺文件系統訪問時間?
A:如果是本地盤,幾乎沒有影響。如果是兩個存儲做了LVM的鏡像,在對這個環境調優情況下,(AIX FC HDISK參數)一般會有20s左右的io掛起時間。
Q:PVID號不同的話不會影響HA接管吧?
A:要求hacmp環境中的共享磁盤具有相同的PVID,最好major number也一樣。
Q:在HA環境下不停業務,如何將卷組增加mirror pool功能?
A:mirror pool主要用于hacmp下的lvm mirror。它的好處是可以在盤數比較多的情況下,把要鏡像的兩組盤區分開。在ha不停機的情況下,步驟如下
(1)通過c-spoc在線添加對應磁盤
(2)通過c-spoc在線創建mirror pool
(3)通過c-spoc把磁盤加到mirror pool中
(4)通過c-spoc給vg做鏡像
4.基于LVM的高可用或遷移方案
由于LVM自身的特性,使得可以直接基于LVM設計存儲高可用和存儲遷移的方案。善用LVM使得我們不管在方案設計還是日常工作中都會受益良多。
典型問題:
1. 生產掛兩個存儲,在VG層面做鏡像,實施DS8000存儲級容災應該注意什么?
2. 對于善用AIX LVM特性直接做存儲雙活方案,有幾個點想咨詢?
3. lvm做鏡像如何實現磁盤的讀寫分離?
4. lvm鏡像不同存儲的兩個卷,存儲性能需求及存儲故障影響?
5. 如何用最短的停機時間實現存儲切換/V5100L轉V7000?
解答以上問題,需要具備下知識
AIX本身的LVM mirror功能使得AIX在LVM層面上的存儲遷移和高可用成功可能。相關的mirrorvg、mklvcopy、migratepv等命令都可以應用這些場景中。其中mirrorvg實際上調用的還是mklvopcy命令,對卷組基本實現鏡像。Mklvcopy可單獨的對單個lv進行鏡像。Migratepv用于在同卷組中的不同pv間遷移數據,不能在不同卷組間遷移,不能遷移條帶化lv。
再來看上面的問題:
Q:生產掛兩個存儲,在VG層面做鏡像,實施DS8000存儲級容災應該注意什么?生產掛兩個存儲,在VG層面做鏡像,在這種場景做DS8000存儲的MM復制需要關注那幾個方面?應該注意什么?
A:這是IBM前幾年最推崇的成熟可靠的解決方案,目前很多金融用戶有案例,使用相對廣泛,近兩年開始推廣hyperswap的方案了
LVM雙存儲需要調整大量的AIX OS FC Hidsk的參數,來保證本地的存儲高可用性,同城之間使用DWDM來保證數據鏈路傳輸安全穩定可靠。
主要還是考慮性能方面的問題,如果兩臺存儲配置不一樣,性能不一樣的話,做mirror可能會影響上層應用,注意多路徑策略的選擇。做MM的話,距離太遠會導致IO傳輸路徑變長,service time高,對IO響應時間敏感的應用系統需特別關注。
這樣架構的還有一個問題在于,災備端的卷vgda里記錄是有VG鏡像的。因此,在拉起災備的時候,會pv missing校驗報錯,importvg時間會較長。因此在pv較多的情況下,需要測算一下災備vg varyon的時間。某銀行曾出現過類似架構切換拉起卷一個多小時的情況。
Q:對于善用AIX LVM特性直接做存儲雙活方案,有幾個點想咨詢?
(1)LVM方式將磁盤做鏡像,那么兩個鏡像副本的IO延時會有幾個毫秒的差異,兩個鏡像的鏈路也會存在抖動的風險,那么LVM層面有什么參數或者是策略能較少這方面的風險?
(2)將設遠端鏡像IO延時超時,那么另外一個鏡像就相當于掉線了,當鏈路恢復之后,除了用鏡像同步的方式還有沒有更好的恢復掉線鏡像的方式?
A:
(1)光纖卡的fc_err_recov硬盤的rw_timeoutreassign_to等參數的設置都會對掛起時間略有影響,需要做對應的調整
(2)因為是基于lvm mirror做的,只能從lvm層面同步stale的pp
Q:lvm做鏡像如何實現磁盤的讀寫分離?
A: 通過在lv層面選擇不同的策略即可,命令:chlv -d "ps" xxx_lvname
Q:lvm鏡像不同存儲的兩個卷,存儲性能需求及存儲故障影響?
如題,lvm鏡像兩個不同存儲的卷,系統io讀寫取決于較差性能的存儲,并且lvm沒有緩存機制,需要兩個存儲卷全部寫入完成,才算是真正寫入完成,一個存儲卷或存儲故障,整個系統均會受影響,從這兩個角度,是否說明lvm不適用于外置存儲卷鏡像,只適用于內置硬盤鏡像。
A:建議通過lv的讀寫策略來修正,比如在lv層面使用Parallel write with sequential read scheduling policy策略,即:同時寫A,寫B,A完成,B完成,寫入完成永遠從A讀,讀A失敗則讀B smitchlv可以改
因為寫入是個硬需求改不了,頂多優化一下讀。如果寫操作比例大,還是建議兩個存儲的性能差別不要太大
Q:如何用最短的停機時間實現存儲切換/V5100L轉V7000?
各位專家,我客戶現有一個存儲IBM5100升級V7000的需求,具體有哪些完善的方案?
主機端為原來有P520和P550 ,新購P740,存儲V5100,采用磁帶LTO6備份。
AIX5.3,ORACLE10 ,SAP應用:業務數據接近3T。
另外,V7000:雙控16G緩存,有8400G的SSD硬盤和16600G SAS,請問如果是全新LVM管理,應該如何對以上存儲進行更加合理和優化。
A:因為你的新存儲是v7000,所以有兩種方案,停機時間都非常小,如下:
1. lvm方式。新的v7000接入aix,配置好lun加入vg,以mklvcopy的方式創建鏡像,做完后解除鏡像刪掉5100的lun。可以無停機時間。
2. v7000的vdm:v7000掛接5100,以image模式導入lun,后續使用v7000的空間和5100做vdm即可。需要較短的停機時間,重新掛接存儲
以上是LVM常見的十八個典型問題,以及解決這些問題必備的知識。通過這樣一番學習,你是否可以在面對LVM的時候更加自信了?