UNIX.AIX.檔案系統.儲存管理.邏輯卷管理.PV.VG.PP.LV.LP

weifenghq發表於2007-04-09
一.邏輯卷管理概念

5個概念:物理卷 physical volumes PV
每個獨立的硬碟稱作物理卷(PV),並有一個名字(如hdisk0);
卷組 logical volume group VG所有的物理卷屬於一個稱作rootvg的卷組(VG);
物理分割槽 physical Partitions PP
所有在一個VG中的PV被分為相同大小的物理分割槽(PP);

邏輯卷 logical volumes LV 每個VG中可以定義一個或多個邏輯卷(LV),LV是位於PV上的資訊的組合,在LV上的資料可以連續或者不連續地出現在PV

邏輯分割槽 LP
每個LV包含一個或多個邏輯分割槽(LP),每個LV相當至少一個PP,如果對LV指定了鏡象,就要有雙倍的PP被分配用來儲存每個LP的備份.
LV可以提供許多系統需要的服務(如頁面空間),但是每個儲存了一般系統/使用者資料或程式的LV都包含一個單獨的日誌式的檔案系統(JFS),每個JFS包含一群頁面大小(4K)的塊.AIX4.1以後,一個給出的檔案系統可以被定義為擁有小於4k的片斷.系統安裝完畢後,有一個VG(rootvg),包含一套系統啟動的基本的LV和其它在安裝指令碼中指定的VG.

二.邏輯卷管理器

作業系統命令/庫子程式/其它工具允許建立和控制LV儲存,成為邏輯卷管理器(LVM).LVM透過簡單而靈活地在儲存空間的邏輯檢視和實際物理盤之間對映來管理磁碟資源.
1.LVM配置資料
描述LMV的元件的資料存放在好幾個地方.理解這些關於VG/LV/PV的描述性的資料放在幾個地方是很重要的.
1)ODM 資料庫
ODM資料庫包含了所有PV,VG,LV的配置資訊.這些資訊與VGDA中的資訊互為鏡象.ODM資料也和LV控制塊中的資訊相互鏡象;
2)VG描述區(VGDescriptorArea)
VGDA位於每個物理卷的開頭,它包含所有屬於本VG的LV和PV的資訊.VGDA被幾乎所有的LVM命令更新.VGDA產生每個VG的自述.AIX可以讀取每個磁碟的VGDA,從VGDA中,可以獲知哪些PV和LV屬於這個卷組.每個盤至少包含一個VGDA,時間的變化很重要,VGDA中的時間戳用於確定哪個VGDA正確地反映了VG的狀態.如果VG中一個盤出錯,VGDA可能無法同步磁碟,這樣磁碟上的VGDA就無法在磁碟不執行的時候更新.所以需要一種方法來更新VGDA剛線上的磁碟,這就是處理程式要做的.
當磁碟被建立為一個PV(以mkdev命令)的時候,VGDA也被建立,這時會在盤開始保留一段空間給VGDA.當PV被分派到一個VG(用mkvg或extendvg)的時候實際的VG資訊就被寫到VGDA中去.當一個PV從VG中刪除的時候(用reducevg),VG資訊也從VGDA中刪除.
3)VG狀態區(VGSA)
VGSA包含了PP和PV的狀態資訊.如VGSA知道一個VG中的PV是否不可用.VGDA和VGSA都有非常重要的開始和結束時間戳.時間戳可以讓LVM瞭解最近的VGDA和VGSA的複製在時間上的變化.
LVM要求選擇VGDA的時間戳和選擇VGSA的時間戳是相同的.
4)LV控制塊(LVCB)
LVCB位於每個LV的開頭.它包含了LV的一些資訊,佔用幾百個位元組.可以使用getlvcb命令獲取某個LV的LVCB資訊並顯示出來.如:getlvcb -TA hd2顯示了hd2 LV的LVCB資訊.
2.磁碟quorum
每個VG中的物理盤至少有一個VGDA/VGSA.一個盤中VGDA的數量根據VG中的盤的總數而變化.變化規律如下:
VG中有一個PV兩個VGDA在一個盤上
VG中有兩個PV兩個VGDA在一個盤上,一個在另外一個盤上
VG中有兩個以上的PV每個盤上有一個VGDA
quorum是一種狀態,這種狀態確保一個VG中一半以上的PV是可以訪問的,是活動的VGDA/VGSA的數量決策,它可以確保在發生磁碟出錯的時候的資料完整性.
如果quorum失敗,VG會關閉自身,使磁碟不再可以由LVM訪問,防止磁碟進一步讀寫而導致的資料丟失.另外錯誤日誌中也會記錄該錯誤.這也暗示了磁碟鏡象的某些注意的地方,在一個雙盤鏡象的系統中,如果第一個盤出錯那麼就丟失了66%的VGDA,整個VG就變得不可用.這就失去了鏡象的目的.由於這種原因,兩個以上的盤(通常是奇數)提供了更高的可用性,特別是想使用鏡象的時候.
也可以關閉任何VG的quorum保護.關閉quorum保護可以使一個VG在出現前面的情況的時候仍然線上.這種能力提供了相對廉價的鏡象方案,但是有資料丟失的危險.磁碟出錯後,資料可以訪問,但是不再被鏡象了.
3.磁碟鏡象
磁碟鏡象是兩個或三個PP的聯合與每個LV中的LP的聯合.當資料被寫到LV中的時候,也被寫入與該LV的LP關聯的PP中,所以鏡象資料提高了資料的可用性.AIX和LVM提供了在LV級別上的鏡象工具.如果鏡象建立,當LV建立的時候就可以實現.
mklv命令允許為每個LV選擇一到兩個額外副本.鏡象也可以被加入到一個已經存在的LV中,需要使用mklvcopy命令.採用以下鏡象選項可以進一步提高資料可用性:三個資料副本比兩個資料副本更可靠;把LP副本分佈在不同的PV上比分配在一個PV上可靠.進一步地,可以把資料副本存放在不同介面卡上的不同PV中.
mirrorvg命令鏡象一個VG中所有的LV.相同的功能也可以對VG中的每個LV用mklvcopy命令人工完成.使用mklvcopy時,要被鏡象的目標物理驅動器必須是該VG的成員.使用語法:
mirrorvg [ -S | -s ] [ -Q ] [ -c Copies] [ -m ] VolumeGroup [ PhysicalVolume .. ]
預設情況下,mirrorvg試圖鏡象LV到VG中的任何盤上.mirrorvg命令使用LV被鏡象時的預設設定鏡象LV.如果想改變鏡象建立策略,必須用mklvcopy手工去建立所有的鏡象.
也可以使用smitty mirrorvg完成VG鏡象:
三重鏡象一個VG:mirrorvg workvg -c 3 workvg,在workvg中的LV中的LP就有三個副本.
預設鏡象rootvg:mirrorvg rootvg rootvg就有兩個資料副本
在鏡象VG中替換失敗盤:unmirrorvg workvg hdisk7>>reducevg workvg hdiak7>>rmdev -l hdisk7 -d.替換失敗的磁碟,然後命名為hdisk7:extendvg workvg hdisk7>>mirror workvg.預設情況下,mirrorvg將試圖為workvg中的LV建立兩個副本,試圖建立新的鏡象到被替換的磁碟.但是,如果原系統是三重鏡象的,可能就沒有新的鏡象建立到hdisk7上,因為該LV中的其它副本可能已經存在.
同步新建立的鏡象:mirrorvg -S -c 3 workvgc引數指出mirrorvg後每個LV必須有的副本數.而-S引數指出立即返回mirrorvg命令並完成VG的後臺同步.當鏡象同步的時候不會顯示出來,但是一旦準備好,可以立即被系統使用.
建立一個原樣的鏡象VG: mirrorvg -m datavg hdisk2 hdisk3-m引數允許在PP層次鏡象一個LV,該LV的PP可以組織已經在源副本上組織好的資料.
rootvg鏡象:rootvg鏡象完成,要完成以下任務:
1.bosboot命令從RAM檔案系統和核心建立一個引導鏡象.該命令在自定義新的鏡象盤上的引導記錄時是被要求使用的.
2.bosboot命令總是為硬碟儲存裝置配置資料,不更新NVRAM中的引導裝置列表,要修改列表,使用bootlist.
3.最後,mirrorvg命令關閉quorum功能.要關閉rootvg的該功能系統必須重啟.注意:如果bosboot命令沒有成功建立引導盤,不要重啟.這個問題應該被解決並且bosboot命令成功完成執行.bosboot要求一些/tmp和目標儲存的檔案系統中的空間(如果該鏡象存在).
非rootvg鏡象:如果一個非rootvg被鏡象,quorum狀態是去活的.要使所有quorum去活,所有開放的LV必須被關閉.然後VG varyoff再vary on使quorum改變生效.如果VG的vary on沒有完成,儘管鏡象正常執行,但quorum的改變沒有生效.
rootvg和非rootvg鏡象:系統dump裝置(主:/dev/hd6次:/dev/sysdumpnull)不應被鏡象,在某些系統中,頁面裝置和dump裝置是相同的,而使用者想對頁面裝置做鏡象.當mirrorvg探測到一個dump裝置和頁面裝置相同時,該LV就會自動被鏡象.如果mirrorvg發現dump裝置和頁面裝置在不同的LV,頁面裝置自動鏡象,而dumpLV不會.dump裝置可以用sysdumpdev命令來查詢和修改.

三.物理卷管理
討論:加入新磁碟/改變PV屬性/監控PV
6.3.1PV配置:三種方法
a)該方法用於可以在連線磁碟前關機的情況.當系統在加入一個磁碟後引導,cfgmgr命令在系統引導時執行,它可以自動配置磁碟.引導完成,以root使用者登入,執行lspv,檢視新盤.顯示如下
hdisk1nonenone
或者hdisk100005264d21adb2enone
其中第二行中的16位號碼是PV的ID.如果輸出以PVID顯示新的磁碟,他可以用於LVM的配置.如果新盤沒有PVID,要使用3.2節說明的方法把一個盤建立為一個PV,然後該盤才可以被LVM使用.
b)這種方法適用於不能在連線磁碟前關機的情況.執行lspv列出已經配置的物理盤,顯示如下:
hdisk0000005265ac63976rootvg
然後執行cfgmgr配置所有新發現的裝置.再次執行lspv檢視新盤條目,例如:
hdisk1nonenone
或者hdisk100005264d21adb2enone
一旦確認了新配置的盤名,使用6.3.2描述的建立PV方法來使該盤可以被LVM使用.
c)該方法適用於不能在連線磁碟前關機的情況.該方法要求知道以下資訊:盤如何連線的(subclass)/磁碟型別(type)/盤連線到哪個系統介面(parent name)/盤的邏輯地址(連線到哪裡).如果知道以上資訊,使用以下方法配置該盤,透過pv=yes屬性來確保該盤是一個可用的PV:
mkdev -c disk -s subclass -t type -p parentname -w whereconnected -a pv=yes
pv=yes屬性使磁碟成為一個PV並以獨特的PVID寫入引導記錄.
6.3.2把一個磁碟變為一個PV
一個新盤必須被配置為PV才可使用.可以透過指派一個PVID使一個磁碟變為一個PV:chdev -l hdisk1 -a pv=yes.這個命令對於已經是PV的磁碟沒有影響.
6.3.3修改PV屬性
討論兩個可以被chpv命令修改的PV屬性:
為一個PV設定分配許可:一個PV的分配許可決定了該PV上的未指派到LV中的PP是否可以被分配使用.設定分配許可要定義PV中一個新PP的分配是否被允許.以下的命令用於關閉hdisk1的分配許可:chpv -a n hdisk1,要開啟,把n該為y即可.
設定一個PV的可用性:一個PV的可用性定義了該PV是否可以完成任何邏輯輸入輸出操作.當一個PV被從系統刪除或失敗時應該被設為不可用.以下命令用於設定PV的狀態為不可用:chpv -v r pvname,這將去活PV中所有的VGDA和VGSA副本,該PV也不會參與未來的quorum檢查上的vary.關於該卷的資訊也會從其它在一個VG中的PV的VGDA中刪除.要設為可用,把以上命令的r改為a即可.注意:chpv命令在執行時使用/tmp目錄的空間儲存資訊,如果失敗,可能是由於/tmp空間太少.
6.3.4刪除PV
如果一個PV可以從系統刪除,那麼它必須是沒有配置的.使用rmdev命令把hdisk1的狀態從available改變到defined狀態:rmdev -l hdisk1.此後,該PV的定義將仍然保留在ODM中,如果加上-d引數,則從ODM中刪除.
6.3.5列出PV資訊
一個正確地配置在系統中的PV可以被指派到VG中並隨後用於建立LV和檔案系統.自由的PP的資訊和磁碟上的扇區可用性非常有用.使用lspv命令可以獲得這些資訊.
a)列出系統中的PV:不帶引數執行,結果如下:
# lspv
hdisk0 00615147ce54a7ee rootvg
hdisk1 00615147a877976a rootvg
如果帶-C和-c class引數也會連同每個PV的狀態列出系統中的PV,結果如下:
# lsdev -C -c disk
hdisk0 Available 40-58-00-0,0 16 Bit SCSI Disk Drive
hdisk1 Available 40-58-00-1,0 16 Bit SCSI Disk Drive
hdisk2 Available 20-68-L SSA Logical Disk Drive
hdisk3 Available 20-68-L SSA Logical Disk Drive
hdisk4 Available 20-68-L SSA Logical Disk Drive
hdisk5 Available 20-68-L SSA Logical Disk Drive
hdisk6 Available 20-68-L SSA Logical Disk Drive
b)列出PV屬性:下面是用lspv命令找到更多資訊的例子:
# lspv hdisk1
PHYSICAL VOLUME: hdisk1 VOLUME GROUP: rootvg
PV IDENTIFIER: 00615147a877976a VG IDENTIFIER 00615147b27f2b40
PV STATE: active//VG STATE可以用varyonvg命令來修改,其取值有三個:active/complete(所有PV是活動的),active/partial(一些PV沒有啟用),ina- ctive(VG沒有活動).
STALE PARTITIONS: 0 ALLOCATABLE: yes//STALE PP是失效PP,ALLOCATABLE的值表示系統是否允許分配新的在該PV上的PP
PP SIZE: 4 megabyte(s) LOGICAL VOLUMES: 13//PP SIZE是VG屬性是在用mkvg命令建立VG的時候定義的VG的最小片斷大小
TOTAL PPs: 238 (952 megabytes) VG DESCRIPTORS: 1//VGDESCRIPTORS描述了包含該PV的VG中VGDA的個數
FREE PPs: 71 (284 megabytes)
USED PPs: 167 (668 megabytes)
FREE DISTRIBUTION: 48..02..00..00..21//概括了自由PP依據它們所在的PV的位置的分佈狀況.
USED DISTRIBUTION: 00..46..47..47..27
每欄的左邊列出了PV本身的資訊,右邊是該PV所屬的VG的資訊.

c)列出PV上的LV分配資訊:以-l引數列出hdisk1上的LV資訊:lspv -l hdisk1.顯示結果:

d)列出PV上的PP分配:用lspv -p hdisk1找出更多關於PP分配到LV中的範圍和這些PP使用的磁碟區域的詳細資訊.顯示資訊如下:

一些註釋:
PP RANGE當前行分割槽申請的PP的範圍
STATE分割槽是否被分配了,取值為:used或free
REGION該分割槽在磁碟區域上的位置
LV NAME該分割槽所屬的LV名
TYPE在LV中檔案系統的型別
MOUNTPOINT檔案系統的mount點

e)列出PP分配表:可以用lspv -M命令對一個LV進行磁碟整理,提高磁碟I/O效能.可以經過分析輸出決定是否整理系統,顯示如下:

第一列為命令指定的盤指出了PP(如果一組相鄰分割槽都是自由的,將會顯示分割槽範圍),第二列指出了哪個LV的哪個LP被分配到該PP.
f)遷移PV中的內容:屬於一個或多個指定的LV的PPs可以從一個PV移動到一個或多個其它在VG中的PV.這要使用migratepv命令.注意:該命令不能在不同VG之間移動資料.6.5.5講述瞭如何在VG之間移動資料.要在VG內移動一個失敗的盤中的資料有以下步驟:
1)確定哪些盤在VG中,確認目的和源PV在一個VG中.執行lsvg -p rootvg可以確認.然後進行第三步;
2)如果計劃遷移到一個新盤,又需要完成以下步驟:(1)用lsdev -Cc disk確認磁碟為PV;(2)如果磁碟被顯示可用,確認該盤不屬於其它VG:lspv PVNAME;(3)如果磁碟不可用,要檢查或安裝磁碟;(4)加入新盤到VG中:extendvg VGname hdisknumber;
3)確認目標盤有足夠的空間:(1)確認源盤PP數目:lspv SourceDiskNumber|grep "USED PPs";(2)確認目標盤上的自由PP數目:lspv DestDiskNumber|grep "FREE PPs",把所有目標盤上的自由PP相加,如果和大於源盤上使用的PP數,就有足夠的空間.
4)要移動一個在非rootvg中的PV的資料的時候,請跳到第5步.否則進行該步.檢視是否bootLV(hd5)在源盤上:lspv -l SrcDiskNum|grep hd5,沒有輸出,則可以進行第5步.如果有輸出,執行migratepv -l hd5 SrcDiskNum DstDiskNum(注意:如果VG在併發模式vary on,migratepv命令不可用,而且該命令無法遷移條帶化LV,這種情況下要使用cplv複製資料,再用rmlv刪除舊資料;該命令執行要有root使用者許可權.).下一步就會得到一條關於警告應該在目標盤上完成bosboot命令的訊息(注意:如果bootLV被從一個PV上遷移了,源盤上的引導記錄應該被清除,如果清除失敗,可能會導致系統掛起.這樣當執行bosboot命令時,也必須執行mkboot -c);執行mkboot -c命令清除源盤的引導記錄.
5)執行smitty migratepv遷移資料.
6)按下F4列出PV,選擇源PV;
7)預設的目的PV是VG中隨意的可用的PV,如果想選擇,按F4;
8)如果願意,在Move only data belonging to this LV域顯示並選擇一個LV.這就會只移動分配到指定的LV的該盤上的PP;
9)回車開始移動;
10)如果磁碟失敗,用reducevg VGname SrcDskNum從VG中刪除源盤;
11)在從機器上拆下失敗的硬碟的之前,執行rmdev -l SrcDskNum -d;
其它migratepv的用途:用該命令從hdisk1移動PPs到hdisk6和hdisk7(均在一個VG):migratepv hdisk1 hdisk6 hdisk7
用該命令從hdisk1移動在某LV上的PP到hdisk6:migratepv -l lv02 hdisk1 hdisk6


四.卷組管理
討論可以在VG中完成的功能.象PV一樣,VG可以被建立/刪除/更改屬性.還可以啟用或去活一個VG.
6.4.1加入一個VG.一個VG要被加入系統需要系統中存在一個或多個PV,這些PV必須是可用狀態且沒有被其它VG使用.在加入一個VG之前,需要確定一些重要資訊,如VG名和要被加入到VG中的PV.新VG可以透過用mkvg命令或smit加入系統.所有屬性在VG建立時設定,以下是非常重要的一些問題:VG名在系統中必須是唯一的;所有要在VG中使用的PV的名字;VG可以容納的PV的最大數量;VG中的PP的大小;每次啟動系統時自動啟用VG的標識.下面用mkvg命令建立一個名為myvg的VG,使用hdisk1和hdisk5兩個PV,每個PP的大小是4k,該VG限制能容納最多10個PV.命令如下:
mkvg -y myvg -d 10 -s 8 hdisk1 hdisk5
也可以使用smitty mkvg來建立,在介面各個域中輸入屬性值即可.smitty mkvg會用varyonvg自動啟用VG.但smit命令與命令列方式相比,限制了以下功能:smitty mkvg不提供-d引數設定能容納的最多PV個數,僅使用預設的32個;不提供-m引數設定PV的最大容量,該引數決定多少PP被使用,預設的是1016個分割槽;smitty mkvg用-f引數強制建立VG.注意:每用mkvg建立一個新VG,根檔案系統至少應該有2MB自由空間(可以用df命令來檢查),因為每建立一個新VG,/etc/vg目錄就會寫入一個檔案.
6.4.2修改VG屬性
修改活動屬性用以下命令可以讓名為newvg的VG在每次系統啟動時自動被vary on:
chvg -ay newvg
如果要關閉自動vary on功能,用:
chvg -an newvg.

對VG解鎖當LVM命令在操作時因為系統衝突異常中斷,VG將被鎖住,要解鎖可以用:
chvg -u newvg
加入一個PV要增加VG的空間需要VG中額外的PV可用.加PV的命令是extendvg,下面是一個加PV的例子:
extendvg newvg hdisk3
注意:如果一個要加的PV已經屬於一個vary on的VG,擴充套件會失敗,如果屬於一個vary off的VG,使用者也會被提示是否確定要繼續.也可以使用smitty vgsc命令來實現,要選擇Add a PV to a VG.
刪除一個PV要減少VG的PV,VG必須是vary on的.下面是刪除的例子:
reducevgmyvg hdisk3
可以用smitty reducevg從一個VG中刪除一個PV.注意:reducevg命令提供了-d和-f引數.-d引數很危險,因為它會在從VG中刪除PV之前自動刪除所有在PV上的LV資料,如果一個LV跨越了多個PV,那麼任何這種PV的刪除會危害整個LV的完整性.而-f引數則使-d引數更危險,它禁止和使用者互動,無法讓使用者確認是否要刪除.
如果在要被刪除的PV上的LV跨越了VG中其它PV,刪除操作會破壞這些LV的完整性而不管它們所在的PV.如果刪除一個VG中所有PV,則VG本身也被刪除.
刪除PV的引數有時從系統中刪除磁碟沒有先執行reducevg,VGDA仍然儲存了被刪除的磁碟的引數,而PV名已經不存在或被重分配了.要刪除這些引數,仍然可以在reducevg命令中使用被刪除的PV的PVID.如要刪除PVID為000005265ac63976則可以用:reducevg newvg 000005265ac63976.
6.4.3匯入匯出VG
有時候一個VG需要被從一個系統移動到另外一個系統,以便於其中的LV和檔案系統可以在目標系統中被直接訪問.要刪除ODM資料庫中一個VG的系統定義,該VG需要用exportvg命令匯出.該命令不會刪除VG中的任何使用者資料而只刪除它在ODM資料庫中的定義.同樣,當一個VG被遷移了,目標系統需要加入該VG的定義.這可以透過用importvg命令匯入VG來完成,這會在ODM資料庫中加入一個條目.例子:匯出myvg的定義:exportvg myvg;匯入myvg:importvg -y myvg hdisk12可以使用smitty exportvg或smitty importvg來匯入或匯出.如果指定的VG名正在使用,importvg命令將會失敗,因為相同的VG名是不被允許的.在該例項中該命令可以返回一個獨特的指定的VG名.該命令也可以沒有-y引數或VG名得到返回,但這樣執行時,被給定了一個預設唯一的匯入名.
也有可能某些LV名與系統中已有的衝突.importvg命令將自動以系統預設名命名.重要的是要記住當移動VG時,exportvg命令總是在源系統中執行並且先於匯入目標系統的操作.假設到一個VG被匯入系統Y沒有在系統X上實際完成exportvg.如果系統Y對VG作了諸如刪除PV的改變,而後來VG又被導回系統X,系統X上的ODM資料庫將和VG上改變過的資訊不一致,但在移動前沒有在源系統上匯出,那就沒有什麼意義了.也可用exportvg和importvg改變使用者定義的VG名.如以下命令:lspv列出所有的PV,varyoffvg vg00,exportvg vg00,importvg -y cadsvg hdisk1,lspv就可以發現兩次lspv的不同.注意:如果當前系統包含一個相同的名字的LV,importvg命令改變被匯入的LV的名字.同時如果一個LV被改名,一個錯誤訊息被列印到標準錯誤輸出,如果沒有衝突,該命令還建立檔案mount點和/etc/filesystems中的條目.
有頁面檔案的VG中,如果頁面檔案是活動的,VG不能被匯出.在匯出一個包含活動頁面的VG之前,確認頁面空間不會在系統初始化時自動啟用,要使用:chps -a n page_space_name,然後重啟系統.
如果不能用smitty importvg命令啟用VG,必須用varyonvg命令來使檔案系統和LV可用.
如果匯入的VG包含檔案系統或者透過smitty importvg啟用了VG,建議在mount檔案系統之前使用fsck命令檢查檔案系統.如果移動一個VG到其它系統,確認在移動前反配置這些盤(即匯出).
smitty exportvg命令刪除在/etc/filesystems中的檔案系統引數,但留下mount點在系統中.

6.4.4開啟關閉一個VG
一個VG存在,就可以使用varyonvg命令使其可以被系統管理活動可用.這個處理包含的步驟如下:
1.一個VG的每個PV中的每個VGDA要被讀取;
2.每個VGDA的頭部和尾部的時間戳被讀取,這個時間戳必須匹配一個有效的VGDA;
3.如果多數VGDA(成為quorum)可用,varyon就會處理,否則就處理就會失敗;
4.系統會用最新的VGDA資料去覆蓋所有其它VGDA,這樣它們就都匹配了;
5.sync命令被執行用來重新同步任何過時的分割槽(鏡象被採用了);
varyonvg命令有以下選項可以被用於克服VG結構損壞或給出狀態資訊:
1.-f引數可以被用於強制一個VG被vary on,甚至有衝突的時候.該衝突通常是因為ODM資料庫中每個VG的配置資料和VGDA不同;
2.-n引數將會禁止syncvg命令在vary on時使用.當一個VG被vary on,過時的分割槽被探測到時,vary on程式將會呼叫syncvg命令來同步過時分割槽.在希望謹慎地覆蓋一個VG,想確認沒有意外地寫一個壞鏡象的資料副本到好的副本中時,該引數非常有用;
3.-s引數允許一個VG被以維護模式或系統管理模式vary on.LV命令可以操作該VG,但是沒有LV可以被開啟進行輸入輸出操作.
例子:啟用VG newvg:varyonvg newvg,也可以用simtty varyonvg.
varyoffvg可以去活一個VG和他關聯的LV.這要求LV是關閉的(即其中的檔案系統是unmounted的).varyoffvg命令也允許-s引數使用改變VG到維護模式或系統管理模式.去活一個VG:varyoffvg myvg.也可以用smitty varyoffvg,其中也可以把VG改變到系統管理模式.
6.4.5監控VG
lsvg命令詢問ODM資料庫當前所有系統中的VG.下面是一些例子:
列出VG:不帶引數列出所有VG.
lsvg -o列出所有被vary on的VG.
lsvg VGNAME列出名為VGNAME的VG的所有詳細資訊和VG屬性的狀態.
列出在VG中的PV的狀態:lsvg -p VGNAME.該命令對於集中系統中的自由空間非常有用.

其中DISTRIBUTION五列分別表示:outside edge,outsidemiddle,center,inside middle,inside edge.
6.4.6重組一個VG
用reorgvg命令為一個VG根據每個LV的分配屬性重組PP分配.
語法:reorgvg [-i] volgrpname [lgcvolname...]
在使用reorgvg命令之前VG必須被vary on並且有自由分割槽.每個LV的可重定位引數必須透過chlv -r命令被設定為y才能使重組生效.否則LV就被忽略.注意:reorgvg命令不重組已分配的條帶化的LV的PP的位置.該命令要執行成功指定的VG中至少有一個自由PP.如果reorgvg命令後帶VG名,再沒有其它引數,那就只重組VG中的第一個LV.也可以使用smitty reorgvg命令完成重組.
-i引數指定從標準輸入獲取PV名.只有這個指定的PV上的分割槽被組織.
重組VG的例子:重組vg02上的lv03/lv04/lv07:
reorgvg vg02 lv03 lv05 lv07
重組位於vg02 VG中的lv203和lv205中disk04和hdisk06 PV上的分割槽:echo "hdisk04 hdiak06"|reorgvg -i vg02 lv203 lv205
6.4.7同步VG
syncvg命令用來同步LV過時的副本,語法:
syncvg [-f][-i][-H][-P NumParallelLPs]{-l|-p|-v}Name...
syncvg命令同步過時的源PP的副本PP.該命令可以用於LV/PV/VG,只要指定它們的名字即可.同步程式是很費時的,依硬體屬性和資料量的不同而有所變化.
當-f引數使用的時候,一個沒有損壞的物理副本被選擇並傳播到所有其它LP的副本檢驗它們是否損壞.當VG被varyonvg命令啟用的時候,對於在VG中的副本,除非同步功能不可用,否則它們總是被自動同步.sync的-p引數指出代表PV裝置名的名字樣式.-v引數指出代表VG裝置名的名字樣式.下面的例子顯示瞭如何使用syncvg:同步在PV hdisk04和hdisk05上的副本:syncvg -p hdisk04 hdisk05;同步在VG vg04和vg05上的副本:syncvg -v vg04 vg05.

五.邏輯卷管理
PV和VG不能由使用者和程式直接存取資料,不能為使用者和程式提供磁碟空間.但是LV提供了使磁碟可用的機制.當建立LV的時候,要指定LP的個數.一個LP根據鏡象方式可以對映1個/2個或三個PP.
6.5.1加入一個LV
可以用mklv建立一個新LV,該命令允許你指定LV名,定義諸如LP數量等屬性,在建立LV中,預設的最大尺寸為128個LP.mklv的語法如下:
mklv [ -a Position ] [ -b BadBlocks ] [ -c Copies ] [ -d Schedule ][ -e Range ] [ -i ] [ -L Label ] [ -m MapFile ] [ -r Relocate ] [ -s Strict ][ -t Type ] [ -u UpperBound ] [ -v Verify ] [ -w MirrorWriteConsistency ][ -x Maximum ] [ -y NewLogicalVolume | -Y Prefix ] [ -S StripeSize ][ -U Userid ] [ -G Groupid ] [-P Modes ] VolumeGroup Number[ PhysicalVolume ... ]
引數意義:
-c copies設定鏡象數,最多三個,預設為1
-i從標準輸入獲得PV樣式,該引數只用於PV透過標準輸入加入的情況
-L設定LV卷標,預設值為沒有.最大127字元,如果該卷被用於JFS,JFS將使用該值記錄該LV中的JFS的mount點
-P modes為LV特殊檔案指定檔案模式許可
-t type設定LV型別.標準型別是JFS,JFSLOG,paging,也可用於定義其它LV型別(boot型別除外),預設JFS
如果為一個檔案系統建立了log,在log被使用之前使用者要用logform命令清除乾淨新的JFSLOG,用以下命令格式化名為logdev的LV:
logform /dev/logdev.
-y newlv為LV指定名字,該名在本機上必須是唯一的,可以用1-15個字元.如果VG是以併發模式varyon的,新名字要在所有的併發節點中唯一.該名字也不能和裝置配置資料庫中的PdDv類定義的字首相同.
例子:用mklv來建立一個名為newlv的新LV到rootvg中,該LV含10個LP,每個LP對應兩個PP.
mklv -y newlv -c 2 rootvg 10.
用smit建立一個LV:執行smitty mklv,然後按F4選擇一個vg,輸入LV名字,然後在number of LP域輸入想分配到新LV的LP數目.在PVname域輸入想用於該LV的PV名,若未指定,預設系統中第一個PV.在Number of copies域輸入LP鏡象數.回車即建立.
6.5.2刪除LV:rmlv [-f][-p PVname]lvname...-f表示不提示確認直接刪除,-p PVname 僅僅刪除指定PV中的LP.除非LV中所有的LP均在該PV中,否則LV不會刪除.也可使用smitty rmlv刪除.
6.5.3減少LV的大小:備份LV的所有資料->刪除LV->以更少的LP建立LV->恢復資料
6.5.4增加LV大小:可以用extendlv或smitty extendlv來增加,如果LV被用於JFS,也可以用chfs或smitty chfs來完成.語法:extendlv [ -a Position ] [ -e Range ] [ -u Upperbound ] [ -s Strict ] LV Partitions [PV ... ],如要加入3個新的LP到LV中:extendlv newlv 3.
6.5.5複製LV:如要複製lv1的內容到lv2,兩者都在myvg中,則用cplv -v myvg -y lv2 lv1.如果沒有指定vg,新LV會建立在與舊lv相同的vg中.要複製一個LV到一個存在的LV中,用以下命令:cplv -e existinglv oldlv,該命令會使existinglv上的內容被覆蓋.如果existinglv小於oldlv,會造成資料丟失,損壞檔案系統.如果在併發模式下,該命令建立新lv會失敗.使用smitty cplv複製一個LV,目的卷有三種模式:一個已有的LV,一個系統新建LV,一個使用者新建LV.可能會遇到警告說目標LV沒有被設定為copy型別.這種情況可以用以下命令:chlv -t copy DstLV.
6.5.6分割LV的副本:splitlvcopy命令從一個LV中分割副本,建立新的獨立的LV.語法:splitlvcopy [ -f ] [ -y NewLogicalVolumeName ] [ -Y Prefix ] LogicalVolume Copies [ PhysicalVolume ... ].注意:儘管該命令可以分割開放的LV以及其中已經mount的檔案系統,但這麼做如果被多處理器系統同時訪問可能會失去兩個LV之間的連貫性,在分割這些LV的時候,有丟失資料和資料損壞的危險。
要分割屬於有3個副本的oldlv的LV每個LP的副本並建立newlv,使用:splitlvcopy -y newlv oldlv 2,結果oldlv中有兩個副本,newlv中有兩個副本。
6.5.7列出LV:系統安裝時會自動建立以下LV:
hd5引導LV,只在系統引導時可用;
hd6預設頁面LV;
hd8預設日誌空間;
hd4用於根檔案系統;
hd2/usr檔案系統;
hd9var/var檔案系統;
hd3/tmp檔案系統;
hd1/home檔案系統.
列出這些LV用命令:lsvg|lsvg –il.

lslv命令用於察看與lv有關的屬性.如:lslv newlv

6.5.8LV大小=PP大小×分配到LV的LP數×鏡象數

六.日誌檔案系統管理
檔案系統是檔案/目錄以及其他結構的集合.檔案系統還可能包含引導塊,超級塊,點陣圖和一個或多個分配組(allocation group).一個分配組包含磁碟i節點和片斷.AIX支援三種檔案系統:JFS/NFS/CDFS.每個JFS分別在不同的LV中.初始化時,系統會mount一些系統和引導需要的檔案系統.NFS是一種分散式檔案系統.
JFS把LV分為一些固定大小的邏輯塊.邏輯塊有以下元件構成:0邏輯塊/超級塊/分配組.0邏輯塊是系統保留的,被載入程式或其他資訊使用,不能被檔案系統使用.超級塊是從1到30塊,包含諸如整個檔案系統的塊數(512k/塊)檔案系統名,檔案系統日誌裝置,版本號和檔案系統狀態等資料.31塊用來備份.檔案系統中的邏輯塊休止符被分為一些分配組.一個分配組包含i節點和資料塊,當分配組被分配到目錄或檔案中去的時候會參考那些資料塊.那些組可以被用於安排資料的物理位置.
6.6.1JFS的屬性:i節點數/分配組大小/檔案系統片斷可訪問能力/檔案系統日誌大小/最大檔案系統容量,這些屬性在檔案系統被建立的時候就被定義了.
i節點數目:該數目決定了該檔案系統中的檔案數目和檔案系統的大小.JFS提供了nbpi(Num of bytes per i-node)樣式,該樣式影響檔案系統的i節點數.JFS支援的nbpi值有512/1024/2048…/131072.32768以後的值只在AIX4.2以後的支援.如果要建立一個8M的檔案系統,其nbpi為4096,則每4096位元組的資料就會得到一個i節點.這就使得該檔案系統中最多有2048個節點,也就是說檔案系統中最多2048個檔案.JFS限制所有的檔案系統中最多16M(2的24次方)個i節點.
分配組大小:JFS按i節點和塊的分組為使用者資料分割檔案系統空間.分配組大小是8M/16M/32M/64M.每個分配組大小有一個關聯的nbpi範圍.具體如下:
Allocation Group size in MBMaximum number of i-nodes
8 512, 1024, 2048, 4096, 8192, and 16384
16 1024, 2048, 4096, 8192, 16384, and 32768
32 2048, 4096, 8192, 16384, 32768, and 65536
64 4096, 8192, 16384, 32768, 65536, and 131072
檔案系統片斷可訪問性:JFS支援4種片斷大小:512,1024,2048,4096位元組的連續空間.JFS維護在i節點和塊中的地址,一共有28位.每個片斷必須可以可以透過一串0到2^28的數字訪問.
JFS日誌:JFS日誌大小為4M,初始安裝後,所有的在rootvg下的檔案系統預設使用hd8作為日誌檔案的lv,預設大小為4M,大小為一個分割槽,如果檔案系統超過2G或使用一個log的總計檔案系統空間超過2G,預設log大小需要增加.JFS日誌限制最大為256M.
最大JFS大小:在檔案系統建立時定義的.例如選擇檔案片斷為512,則檔案系統最大為512×2^24=8G.當建立一個JFS,所有屬性(nbpi/fragment size/分配組大小)都要考慮好.檔案系統大小=nbpi*2^24=fragment size*2^28.
6.6.2建立檔案系統
1.執行smitty crjfs;
2.選擇Add a Standard JFS;
3.選擇要建立的檔案系統的VG;
4.在檢視中輸入檔案系統大小(塊數).如果想建立一個4M的檔案系統,可以用4乘以2048得到塊數;
5.在MOUNT POINT域輸入想mount的全路徑;
6.回車會顯示建立過程.
注意:AIX中的所有I/O都是以4KB的塊來進行的,但是這裡空間的計算是以512K的塊來計算的,這主要是為了和其他UNIX保持相容.最小的檔案系統大小是一個PP,因而如果指定的塊數目不夠一個PP,系統會仍然建立一個PP容量的檔案系統.可以使用命令列方式來完成:crfs –v jfs –g VGNAME –a size=BLOCKS –m MOUNTPOINT.
6.6.3Mount一個檔案系統
mount是一個使檔案系統或檔案或裝置或特殊檔案可用的操作.它是使一個檔案系統可用的唯一方法.注意,如果mount點是一個已經mount過的資料夾,已mount的檔案系統的根目錄不許mount.通常容易出錯的是執行pwd命令,沒有查詢已經mount完成的資料夾的許可,pwd命令將返回拒絕訊息.如果設定mount的資料夾的目錄許可為111就不會出現這種問題.
用命令列方式mount一個檔案系統:mount /filesysX,如果知道裝置連線到系統的名字,可以直接使用裝置名mount最新建立的檔案系統.如果想mount所有的檔案系統,可以使用mount –a或all.
使用smit mount檔案系統:執行smitty mount->在檢視中選擇mount a filesystem回車->在DIR over which to mount域按F4可以得到已經定義的檔案系統的mount點.然後選擇想mount的檔案系統,回車選擇->按回車就可以mount成功.
自動mount:在系統初始化時,檔案系統可以被自動mount,有兩種型別的自動mount:1.那些在引導時要求的mount,/etc/filesystems檔案關於這些檔案系統的定義中有mount=automatic的描述.如果多使用者初始化啟動後執行了mount all,/etc/rc指令碼不會試著再去mount這些檔案系統.通常執行umount all,這些檔案系統不會umount.
2.第二種是使用者控制的,這些檔案系統在初始化時被/etc/rc指令碼的mount all命令執行.使用者控制自動mount的定義在/etc/filesystems中有mount=true.
除以上兩種方法之外,可以把在檔案系統建立時的自動mount域中設定為true,或者使用chfs –A yes FILESYSTEM命令.
顯示已mount的檔案系統:mount
6.6.4刪除檔案系統:
1.使用mount命令檢查當前mount的檔案系統;
2.如果檔案系統已mount,先umount並檢查是否成功,如果未mount則繼續;
3.執行smitty rmjfs;
4.按下F4得到所有在系統中定義的檔案系統列表,選擇要刪除的回車;
5.如果要保留mount點,按回車完成,否則把RM mountpoint設為YES回車.
也可以在確認要刪除的檔案系統umount之後,使用命令rmfs FSname來完成.如果要刪除mount點,帶上-r引數.
6.6.5增加檔案系統大小.如果檔案系統的剩餘空間太小,會出現不可預料的問題.
1.使用df命令得到檔案系統的當前大小;
2.計算需要增加的塊數;
3.在命令列方式下輸入:chfs –a size=NewBlocks FileSysName
NewBlocks是增加後的大小,不是要增加的大小.
用smit方式的步驟:
1.執行smitty chjfs;
2.選擇想改變的檔案系統回車,會出現報告檔案系統的資訊;
3.在SIZE of filesystem域輸入新塊數,回車即可成功.
6.6.6減少檔案系統大小:
1.對要減少的檔案系統做一個備份,如/usr.備份命令可以使用4個,cpio/ backup/tar/savevg;
2.如6.6.4所述刪除檔案系統;
3.建立新的檔案系統,使用更小的空間,要有相同的名字.
注意:如果建立的空間太小不能容納已有資料,恢復將會失敗,使用df -k命令看當前在檔案系統中的資料的塊數.
4.恢復檔案系統備份.
也可用mksysb命令減少檔案系統,在從一個mksysb恢復rootvg時,有一個選項是shrink磁碟上的檔案系統.如果選擇該項,VG中的LV和檔案系統被重建為包含該資料的最小尺寸.使用者定義的VG也可以用restvg –s人工恢復.
6.6.7檔案系統連貫性
fsck命令檢查檔案系統連貫性並互動地修復檔案系統.常用語法是:
fsck [ -n ] [ -p ] [ -y ] [ -d BlockNumber ] [ -f ] [ -ii- NodeNumber ][ -o Options ] [ -t File ] [ -V VfsName ] [ FileSystem1 - FileSystem2 ... ]
引數意義:
-f完成快速檢查,如果系統被不正常關閉而檔案系統已mount,容易受到影響.該引數提示fsck命令不要檢查已經umount的檔案系統.而fsck命令透過檢查檔案系統的超級塊可以確定是否mount.無論一個檔案系統是被mount還是被clear,只要被umount,都要設定此引數.如果檔案系統被成功umount,不可能有任何其它問題.因為多數檔案系統被成功umount,不再檢查這些檔案系統可以減少時間.
-p不要顯示關於鏡象的問題訊息,但自動修復它們.該引數不允許大規模的許可(象-y引數一樣),當系統正常啟動時,該引數對完成自動檢查很有用.應該把該引數作為系統啟動過程的一部分.該引數允許並行檢查.如果主超級塊損壞,次超級塊被校驗並複製到主塊.
-tFile如果fsck命令不能獲得足夠的記憶體儲存被檢查的檔案系統的表, 在其他檔案系統中指定一個草稿檔案.如果不指定-t引數,而fsck命令需要一個草稿檔案,系統會提示輸入草稿檔名.如果指定了-p引數,fsck命令將會失敗.如果草稿檔案不是特殊用途檔案,fsck命令結束時將刪除檔案.
-y設定用yes回答所有的被fsck命令提出的問題.該引數讓fsck命令採取任何認為必要的操作.只有在檔案系統嚴重損壞的時候才使用該引數.
Fsck命令檢查並互動修復不一致的檔案系統,應該在mount檔案系統之前使用該命令.必須可以讀取檔案系統所在的裝置檔案.
通常,檔案系統是一致的,fsck命令僅僅報告檔案的數目,使用的塊數,自由塊數.如果檔案系統不一致,fsck命令顯示找到的不一致的資訊並提示允許修復它們.如果檔案系統不能修復,從備份恢復這些資料.
Mount不一致的檔案系統可能導致系統衝突.如果不用樣式指定檔案系統名,fsck命令將check所有的檔案系統(/etc/filesystem中的check=TRUE).
注意:預設情況下,/,/usr,/var,/tmp檔案系統的在/etc/filesystem中的check屬性設為False,因為:1.引導程式在這些檔案系統明確執行fsck命令;2.這些檔案系統在指令碼/etc/rc執行時被mount,fsck命令不會修改一個已mount的檔案系統.fsck命令在mount的檔案系統中上執行的結果是不可預知的.
6.6.8初始化JFS日誌裝置:logform命令初始化一個用於JFS日誌裝置的LV.該LV儲存了關於檔案系統大量改變的互動資訊,並能在系統衝突時用於部分回滾操作.語法為:
logformLOGNAME
注意:該命令有破壞性,會清除所有在LV中的資料;意外執行該命令會完全毀壞檔案系統的資料.如果一個日誌裝置因為要被檔案系統使用而開放,檔案系統應該先umount再對日誌裝置執行logform.logform命令毀壞所有在裝置上的日誌記錄,可能會造成檔案系統資料的丟失.可用以下命令確認log日誌被關閉了:lsvg –l VGNAME.
6.6.9JFS日誌裝置的位置:JFS日誌LV應該被放置在一個與最經常讀寫的檔案系統不同的PV中,最好放在一個最少讀寫的盤中,以增加併發資源使用.系統也支援每個檔案系統有獨立的JFS日誌.但特別要考慮的是,應該儘量避免多個JFS日誌放置到相同的盤上.
6.6.10支援大檔案的檔案系統:對於超過2G的檔案,64位處理器可以不用任何特殊指令開啟檔案.4.2以前版本的沒有潛在的支援大檔案.在支援大檔案的檔案系統中,儲存在4MB檔案偏移量之前的檔案資料被以4096位元組的塊分配,超過4M檔案偏移量的以128K的大塊儲存.大塊實際上是32個連續的小塊.如132M的檔案有1024個小塊和1024個128K的大塊.在規則的檔案系統中,132M的檔案要求33個獨立間接塊(每塊以1024個4K的磁碟地址填滿).但是大檔案系統中只要求2個獨立間接塊.
察看檔案系統是否支援大檔案:lsfs –q FILESYS.其中的bf域的值表示是否支援大檔案.

七.解決檔案系統問題
6.7.1恢復錯誤的超級塊:如果在使用fsck或者mount命令時,出現以下錯誤時,可能是超級塊損壞:fsck: Not an AIX3 file system
fsck: Not an AIXV3 file system
fsck: Not an AIX4 file system
fsck: Not an AIXV4 file system
fsck: Not a recognized file system type
mount: invalid argument
這些問題可以透過恢復超級塊備份來解決:dd count=1 bs=4k skip=31 seek=1 if=/dev/lv00 of=/dev/lv00.
對於AIX4:fsck –p /dev/lv00
一旦恢復程式完成,用fsck檢查檔案系統的完整性.
一般說來,超級塊的恢復會恢復檔案系統,如果沒有恢復,重建檔案系統然後恢復資料.
6.7.2不能umount檔案系統
如果一個檔案系統的任何引數仍然活動就不能被umount.下列情況可能讓一個開放的引數留在mount的檔案系統中:
1.檔案系統中的檔案開啟了,對於這種情況可以用fuser命令檢查活動狀態,它為所有的在某個檔案系統中有開放引數的程式返回ID:
fuser –xc /tmp
有開放引數的程式可以被殺死,然後就可以umount了.
2.檔案系統可能由於核心程式開啟了.fuser命令不會顯示這些型別的引數,因為使用者程式沒有包括在內.但是genkex命令會報告所有的核心使用者程式.
3.檔案系統mount在另一個檔案系統中,在umount一個檔案系統之前,必須確認所有的mount在該檔案系統mount點上的檔案系統已經被umount.
4.一個程式在使用要umount的檔案系統中的一個目錄,fuer命令追加一個c到所有這些程式ID,-u引數區分程式的屬主.可以和find命令一起使用.如:
find /home –type d –exec fuser –u {}
意思是在/home目錄下找到所有的目錄,對每條記錄執行fuser –u,然後回車.{}代表每條記錄.對於一個互動程式,有一個確定的使用者改變它們的工作目錄到檔案系統外.否則殺死該程式,就可以完成umount.

八.LVM命令總結
6.8.1PV命令:
getlvcb獲取lvcb資訊
lsdev列出ODM中的裝置
chdev改變裝置屬性
mkdev加入裝置
chpv改變PV狀態
lspv顯示一個VG中的PV的資訊
migratepv從一個PV移動一個已分配的PP到一個或多個其他PV
6.8.2VG命令:
mirrorvg對VG鏡象
unmorrorvg解除鏡象
mkvg建立新VG
extendvg給一個VG加新的PV
reducevg從一個VG中刪除一個PV
chvg改變VG屬性
lsvg顯示一個VG的資訊
importvg安裝一個VG
exportvg刪除一個VG
reogrvg重組VG
syncvg同步VG
varyonvg使一個VG可用
varyoffvg使VG不可用
2.8.3LV命令
mklv建立LV
lslv列出LV屬性
rmlv刪除LV
extendlv增加一個LV的大小
chlv改變LV的屬性
mklvcopy為一個LV增加副本
rmlvcopy從一個LV刪除副本
6.8.4檔案系統命令
chfs改變一個FS的屬性
crfs加入一個FS
lsfs顯示一個FS的屬性
rmfs刪除一個FS
mount使一個檔案系統可用
umount使一個mount的檔案系統或目錄或檔案不可用
fsck檢查檔案系統一致性並互動修復檔案系統
df報告檔案系統中的空間資訊[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/633084/viewspace-909513/,如需轉載,請註明出處,否則將追究法律責任。

相關文章