1. Create VG/LV by vxvm(過程樣例)a. 在OceanStor上創建LUN,並mapping b. 用root登錄主機,執行下面命令: 1) hot_add vxdisk scandisks 2) vxdisk -o alldgs list(或者vxdisk list) 3) 新增的盤處在offline狀態,則執行vxdisksetup –if sdb 4) vxdg init vgscp vgscp_1=sdb //創建VG 5) vxassist -g vgscp -U fsgen make lvscp 10G vgscp_1 //創建LV 6) mkfs.vxfs /dev/vx/dsk/vgscp/lvscp //創建文件系統 7) mkdir /tellin/tellinapp //創建掛接點 8) mount.vxfs /dev/vx/dsk/vgscp/lvscp /tellin/tellinapp //掛載文件系統 9) df –h //檢查文件是否掛接成功 10) umount /dev/vx/dsk/vgscp/lvscp //去掛載文件系統 11) vxvol -g vgscp stopall //去激活 12) vxdg deport vgscp //導出VG c. 用root登錄備機,執行下面命令 1) vxdg import vgscp //導入VG 2) vxvol -g vgscp startall //激活VG 3) mkdir /tellin/tellinapp //創建掛接點 4) mount.vxfs /dev/vx/dsk/vgscp/lvscp /tellin/tellinapp //掛載文件系統 5) umount /dev/vx/dsk/vgscp/lvscp //去掛載文件系統 6) vxvol -g vgscp stopall //去激活 7) vxdg deport vgscp //導出VG d. 用root登陸主機,執行下面命令 1) vxdg import vgscp //導入VG 2) vxvol -g vgscp startall //激活VG 3) mount.vxfs /dev/vx/dsk/vgscp/lvscp /tellin/tellinapp //掛接文件系統 2. 掛VG(枚舉樣例)//掛載所有的VG,枚舉全部 a. vxdg import vgora //導入VG vxvol -g vgora startall //激活VG b. vxdg import vgopt vxvol -g vgopt startall c. vxdg import vgphydb vxvol -g vgphydb startall d. vxdg import vguoa vxvol -g vguoa startall e. vxdg import vgsee vxdg -g vgsee startall 3. LV is corruptedmount /dev/vg02/vol2 /mnt/vg02/vol2 UX:vxfs mount: ERROR: V-3-21268: /dev/vg02/vol2 is corrupted. needs checking fsck -F vxfs -y -o full /dev/vg00/lvol2 |
||
|
|
|
|
|
|
命令詳述見下面 |
||
步驟 |
命令 |
說明 |
檢查磁盤狀態 |
vxdisk -e list
|
|
檢查磁盤組狀態 |
vxdg |
|
|
see01_a:/usr/lib/vxvm/bin # ./vxdiskunsetup sdg
|
|
|
/etc/vx/bin/vxreattach -c sde |
檢查掛接磁盤操作是否可行 |
啓動vxvm守護進程 |
/usr/lib/vxvm/bin # vxdctl enable
|
重新掃描設備列表,重新掛接磁盤vxdg –Cf import dg |
|
用vxdisk list命令察看,如果看到上述硬盤爲error,可以用下述命令使其online: # ./vxdisksetup c2t0d0
如果不是error
|
如果對磁盤使用vxdiskunsetup和vxdisksetup,並指定與配置備份中不同的屬性,可能會損壞公共區域和其中的所有用戶數據。 |
運行使硬盤在線的命令 |
# vxdisk online sdb |
磁盤組如果不是online狀態,不能重新建立磁盤組 |
顯示卷的可訪問性和可用性信息 |
see01_a:~ # vxinfo -g vgsee lvcdr fsgen Startable vg_name_srl fsgen Startable
see01_a:~ # vxinfo -p -g vgsee vol lvcdr fsgen Startable plex lvcdr-01 CLEAN vol vg_name_srl fsgen Startable plex vg_name_srl-01 CLEAN |
|
Plex狀態轉換 |
vxinfo –p –g vgsee vxmend -o force -g vgsee off lvcdr-01 vxmend -o force -g vgsee on lvcdr-01 vxmend -o force -g vgsee fix active lvcdr-01
|
|
文件系統不使用 |
see01_a:~ # mount see01_a:/dev/vx/rdsk # fuser /dev/vx/rdsk/vgora/* /dev/vx/rdsk/vgora/lvctl1: 22761 22765 22769 23777 /dev/vx/rdsk/vgora/lvctl2: 22761 22765 22769 23777 /dev/vx/rdsk/vgora/lvctl3: 22761 22765 22769 23777
/dev/vx/rdsk/vgora/lvredo1: 22765see01_a:/app # umount /home/oracle/flashback/ # vxvol -g vgrbi stopall see01_a:/app # vxdg deport vgopt see01_a:~ # umount /home/see/rbirun see01_a:~ # umount /home/see/recode |
|
|
執行mount命令之前需要激活 vxvol -g vgphydb startall |
|
|
激活以後數據庫才能啓動 |
|
|
mount.vxfs /dev/vx/dsk/vgopt/lvarchive /home/oracle/archive |
|
|
|
|
重建磁盤組 |
將磁盤陣列所屬的C2T22D0S2作爲HOT-SPARE磁盤 # vxedit set spare=on sybased05 其中sybased05是C2T22D0S2的名字,它是在建立磁盤組時自動取的名字
注意:在建立raid5卷時,不能選取hot-spare盤,即不能使用上面的syabsed05,也就是C2T22D0S2這塊盤 |
|
建卷 |
see01_a:/etc # vxassist -g vgsee make vgsee 10G
# vxassist –g sybasedg make datadev00 2g layout=raid5 sybased01 sybased02 syabsed03
sybased04 sybased06
vxassist -g datadg make vol1 500g |
|
基礎知識 |
||
VxVM & 本地磁盤 l Veritas Volume Manager(VxVM)提供了一個在線數據存儲管理基礎,給系統盤和數據盤做本地的鏡像和其它RAID功能,並可在線改變Volume的大小。 l 將物理磁盤置於VxVM控制之下,即在物理對象和VxVM對象之間建立了關係。 Volume Manager的對象:物理對象和虛擬對象(VxVM對象) 物理對象:Physical Disk à VM Disk àsub disk 虛擬對象:Subdisks à Plexes àVolumesàDisk Groups(將VM Disk劃入到Disk Group中///當一個主機系統上安裝了VxVM軟件後,我們必需將VM Disk劃入到Disk Group中,另外再在Disk Group上創建一些邏輯卷,來達到VxVM控制物理磁盤的目的。) (1.VM Disk由VxVM控制並組成磁盤組 2.一個或多個Subdisk組成Plex 3.一個卷由一個或多個Plex組成) 1. 安裝VxVM 2. 物理磁盤置於VxVM管理之下,成爲VM disk(將VM磁盤組成磁盤組) 3. 劃入Disk Group 4. 劃分LV l 若要將物理磁盤置於VxVM控制之下,磁盤一定不能受LVM控制。 |
||
VVR Veritas Volume Replicator(VVR)是一款優秀的異地備份軟件,提供數據中心和容災備點的數據庫和應用數據的複製。 |
||
VxVM & VVR結合 如果把VxVM和VVR集成在一起,就可通過IP網絡將卷組複製到安全區域。 |
||
|
||
|
||
VM Disks l 一個VM Disk至少應該包含一個分區 l 一個VM Disk通常分爲兩個部分
|
||
Subdisks Plex由分佈在一個或多個磁盤上的一個或多個SubDisk組成,通常有三種方法可以將SubDisk組成Plex:串聯、RAID 0、RAID 5。
|
||
Disk Groups 一個磁盤組由一個或多個VM disk組成。缺省的磁盤組名叫rootdg。用戶可以增加新的磁盤組。一個卷必須建立在一個磁盤組之內。一個磁盤組內的多個VM disk有相同的配置信息。 |
||
Plexes CLEAN(off,on)->STALE(fix active)->active OFFLINE(on)->ON 參見前文命令 |
||
Volumes l 一個卷由一個或多個Plex組成,每一個Plex保存一份相同數據的拷貝。一個卷最多可以有32個Plexes。一個卷內所有的Plexes必須屬於同一個磁盤組。卷通常被命名爲VOL##,而其中的Plex通常被命名爲VOL##-##。
|
||
此次遇到一個奇怪的問題是:當1號機正在使用磁盤組,2號機只要重新啓動,並且執行vxdg import sybasedg命令,則兩臺機器上都能看到磁盤組,由於雙方發生了資源爭搶現象,很容易導致磁盤組被破壞,我曾經因爲這個問題將磁盤組建了n次,數據庫安裝n次,由於磁盤組毀壞,所以整個數據庫也被破壞,後來在啓動時增加了一個控制文件,過程如下: # cd / #cd /etc/rcS.d #vi S98vxvm 內容爲: echo “stop sybasedg” vxvol –g sybasedg stopall vxdg deport sybasedg 添加了上述文件後,系統每次啓動時自動將磁盤組deport出去,這裏好像是停止了vxvm的autoimport屬性,磁盤組不再被重新import。
dgdisable狀態的dg通常有幾種原因導致:
1) dg下的volume還在被使用的時候加-f參數強行deport dg(通常不是手工誤操作,而是發生故障時,數據庫Agent的退出代碼沒有退出乾淨,導致數據庫還在訪問volume裸設備或者應用Agent的退出代碼沒有退出乾淨導致文件系統沒有真正umount成功等情況,而VCS的servicegroup的offline操作執行到dg時就會offline失敗而調用clean操作,這個clean操作就會自動加-f參數強行deport dg,但還是會失敗,並且留下一個dgdisabled狀態),如果是這種情況,就需要通過lsof找到是那些進程還在訪問裸設備並kill之(針對使用裸設備的情況)或者cat /proc/mounts文件找到還在掛載的文件系統通過fuser -k -m mount_point殺掉在該文件系統上打開了文件的進程最後通過/opt/VRTSvcs/bin/vxumount -o force mount_point來強行卸載該文件系統(針對使用文件系統的情況),然後執行vxdg deport dgname和vxdg import dgname來恢復這個故障dg,執行vxvol -g dgname -o bg startall來激活該dg下所有的volume。通常這種情況下還需要執行fsck來檢查和恢復文件系統;
1.1) 之前有這麼一個場景,和第1個場景非常相像,不過是由於mount命令的配合問題和代碼上的不完備原因共同自動導致的:單板重啓時應用進程沒有關閉完全,導致重啓時文件系統其實是在活動狀況下而留下了需要執行fsck的標誌位。重啓後VCS自動執行online servicegroup操作,執行dg資源的online(dg import)成功,執行volume資源的online(volume start)也成功,但到了mount資源的online時,由於mount命令和mount.vxfs命令之間傳遞執行結果的缺陷,導致發生了mount命令輸出中顯示該文件系統沒有掛載但/proc/mounts文件裏卻顯示該文件系統已經掛載,而標準版本的mountagent代碼不能處理這種異常,online報失敗執行clean報成功,卻仍然留下了/proc/mounts文件裏的相應條目,這之後volume資源offline失敗,clean成功,繼續保留了/proc/mounts文件裏的條目,後面就和第1個場景一樣了,執行dg資源的offline失敗,clean也會失敗,因爲操作系統判斷該dg下的volume仍然處於打開狀態,clean裏的強行deport dg操作就會讓該dg留下dgdisabled的狀態。這個問題後來通過使用HWMountAgent(裏面增加了對這種異常的處理代碼確保這種需要做fsck的vxfs文件系統可以online成功,也增加了代碼確保由於其他異常導致出現mount命令輸出於/proc/mounts文件內容不一致時可以正常執行volume的offline/clean操作並去除/proc/mounts文件的相應條目)可以很好消除了;
2) I/O的訪問異常(通常是磁盤I/O訪問錯誤,比方說磁盤陣列掉電)導致運行期間VxVM直接將dg置爲dgdisable狀態,這種場景在恢復I/O後重啓就可以解決。如果要在線恢復,可以在I/O恢復後,執行和第1種場景一樣的恢復操作;
3) 極少見的情況是運行期間由於競爭讀寫導致vxfs文件核心metadata損壞而將文件系統置爲full+readonly+need full fsck狀態,引發servicegroup的故障offline。和第1.1個場景非常類似,標準版本的mountagent代碼對這種異常處理不完備,執行了clean後其實沒有完全成功,留下了/proc/mounts裏面的條目,卻認爲clean已經完成而沒有執行vxumount(這個命令可以對vxfs文件系統消除上述不一致),後面發生的就和第1.1場景完全一樣了。同樣,使用了HWMount後這種情況也可以正確消除;
針對你反饋的信息,第9塊單板比較大的可能是第1.1場景。
第5塊單板的情況我沒有看懂,第1次執行vxdisk list和vxdg list的輸出和第2次執行間你還執行了什麼操作導致狀態發生了變化?vxdisk list看到的auto error狀態意味着磁盤上的分區表格式完全不被VxVM識別或者是剛剛劃分的LUN,上面還完全沒有分區表等情況,這和auto:none online:invalid是很不同的,後者表明VxVM可以識別到這塊盤,只是在磁盤上沒有發現VxVM的私有區或者有效的私有區(比方說私有區和公有區的數據都完全沒被破壞,但是磁頭的某些標誌位被破壞導致VxVM不認可其實仍然可以恢復的私有區爲有效私有區); |
||
|
|
|