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