Oracle叢集檔案系統(OCFS2)使用者指南(zt)

zhouwf0726發表於2019-01-26

1:介紹
    一個叢集檔案系統能使執行在叢集中所有節點併發的通過標準檔案系統介面來訪問儲存裝置。這給管理跨越整個叢集的應用系統帶來方便。
    OCFS1問世於2002年10月,它是Oracle公司為了讓RAC使用者避免必須要與裸裝置打交道而開發出來的。這個檔案系統用來存放資料庫相關的檔案,比如資料檔案,控制檔案,線上日誌檔案,歸檔日誌檔案等。
    OCFS2是下一代的ORACLE叢集檔案系統,它已經被設計成為一種為通用的檔案系統,它不僅可以存放資料庫相關的檔案,還可以存放oracle二進位制檔案(指Oracle_home下的軟體檔案-譯者注)和配置檔案,從而使RAC的管理更加輕鬆。
2:安裝
OCFS2的發行版包括了2個安裝包,一個稱為核心模組,另一個叫工具包。
核心模組可以從以下連結下載:
http://oss.oracle.com/projects/ocfs2/files/
工具包可以從以下連結下載;
http://oss.oracle.com/projects/ocfs2-tools/files/
         首先要下載相應的軟體包.對於核心模組,下載時要考慮它的發行號,適用的平臺,作業系統核心版本以及核心的型別(比如SMP,HUGEMEM,PSMP等),對於工具包,只要符合發行版本和平臺就可以了。
工具包又分為兩部分,ocfs2-tools命令列工具,ocfs2console圖形工具,使用者可以選擇不安裝這部分,但它的確可以令操作簡單化。
使用rpm命令來安裝軟體包,使用 rpm -install 進行新的安裝或者使用rpm -upgrade來升級現有的軟體包。
3:配置
OCFS2有一個配置配置檔案,路徑為/etc/ocfs2/cluster.conf.在這個檔案中,你需要指定RAC中所有的節點資訊,並且所有的節點上都應該保留相同的一份。你可以動態的增加新節點到RAC,或者改變一些節點的IP,名字,但這需要重起RAC以便於使更改生效。
我們強烈建議使用者使用OCFS2-CONSOLE工具來對RAC中所有的節點進行配置。
執行OCFS2-CONSOLE,進入cluster選單,選擇configure nodes.如果cluster已經停止,控制檯會啟動它,並且返回一個成功的資訊。如果cluster.conf檔案不存在,控制檯將會創健一個並給一個預設的叢集名字ocfs2.點選add按鈕將節點新增到RAC中,每一個節點需要輸入節點名稱,ip和埠號。控制檯從0-254順序的分配節點序號。一旦所有的節點都新增到RAC當中,通過點選選單cluster裡propagate configration項,我們可以在任何一臺節點上將配置檔案cluster.conf分發到所有節點相應的位置上去,由於控制檯使用的是ssh協議來傳送檔案,所以之前需要在所有節點上建好彼此的信任,以避免在檔案傳遞過程中出現提出輸入口令的問題。
附錄A是一個cluster.conf的示例。
4:O2CB叢集服務
OCFS2有自己的叢集服務結構,叫做O2CB,它包括:
NM:節點管理器,它對cluster.conf檔案中所有節點進行的監控。
HB:心跳服務(Heart beat service),他在節點離開或加入rac時提示up和down的訊息。
TCP:控制節點間的通訊。
DLM:分散式鎖管理器,它持續跟蹤所有的鎖,鎖的所有者及狀態。
CONFIGFS:使用者配置檔案系統驅動空間,掛節點是/config
DLMFS:使用者空間和核心空間DLM的介面。
所有這些cluster服務都已經被打包在o2cb系統服務當中,所有的操作,比如format,mount等,都需要cluster可用。在使用format等命令前,要先啟動這些服務。
可以通過以下方式檢查所有服務的狀態:
# /etc/init.d/o2cb status
Module "configfs": Not loaded
Filesystem "configfs": Not mounted
Module "ocfs2_nodemanager": Not loaded
Module "ocfs2_dlm": Not loaded
Module "ocfs2_dlmfs": Not loaded
Filesystem "ocfs2_dlmfs": Not mounted

通過以下方式啟動所有服務:
# /etc/init.d/o2cb load

Loading module "configfs": OK

Mounting configfs filesystem at /config: OK

Loading module "ocfs2_nodemanager": OK

Loading module "ocfs2_dlm": OK

Loading module "ocfs2_dlmfs": OK

Mounting ocfs2_dlmfs filesystem at /dlm: OK

通過以下方式使cluster ocfs2 啟動:
# /etc/init.d/o2cb online ocfs2

Starting cluster ocfs2: OK

通過以下方式停止cluster ocfs2:
# /etc/init.d/o2cb offline ocfs2

Cleaning heartbeat on ocfs2: OK

Stopping cluster ocfs2: OK

通過以下方式停止所有服務:
# /etc/init.d/o2cb unload

Unmounting ocfs2_dlmfs filesystem:

Unloading module "ocfs2_dlmfs": OK

Unmounting configfs filesystem: OK

Unloading module "configfs": OK

通過以下方式使O2CB在系統啟動時自動被載入:
# /etc/init.d/o2cb configure

Configuring the O2CB driver.

This will configure the on-boot properties of the O2CB driver.

The following questions will determine whether the driver is loaded on

boot. The current values will be shown in brackets ('[]'). Hitting

without typing an answer will keep that current value. Ctrl-C

will abort.

Load O2CB driver on boot (y/n) [n]: y

Cluster to start on boot (Enter "none" to clear) []: ocfs2

Writing O2CB configuration:       oK

#

如果cluster已經被配置為系統啟動時載入,可以通過以下方式啟動和停止它:
# /etc/init.d/o2cb load

Loading module "configfs": OK

Mounting configfs filesystem at /config: OK

Loading module "ocfs2_nodemanager": OK

Loading module "ocfs2_dlm": OK

Loading module "ocfs2_dlmfs": OK
 
 Mounting ocfs2_dlmfs filesystem at /dlm: OK

5:格式化(format)
如果O2CB CLUSTER沒有啟動,首先啟動它。格式化操作依賴於這些服務。同時它需要你確保所有的節點上都沒有掛載需要格式化的裝置。
你可以使用圖形介面或者命令列來格式化分割槽。
如果你使用圖形介面,選擇task/Format來執行操作,在下拉選單中選擇可用的裝置。同時控制檯會盡可能的列出裝置上存在的檔案系統。
為要格式化的裝置輸入一個標籤,為了便於管理,我們建議你輸入一個標籤,你仍然可以在格式化之後修改它。
為裝置選擇一個叢集單元大小(cluster  size),它支援從4k到1M。如果這個裝置用來儲存資料檔案或者大的檔案,比較合適的大小是128K。
選擇一個塊單元大小(block size),它支援從512位元組到4k,由於OCFS2在格式化的時候並不分配一個靜態的inode 區域,所以4k是我們強烈推薦的大小,它幾乎適合所有的磁碟大小,換句話說,即時這些磁碟支援512位元組,但我們仍然不建議使用小的單元。
一旦格式化完畢,叢集單元和塊單元都不可以再改變。
輸入一個節點槽位(node slots),這個數值決定了允許多少節點同時掛載這個裝置。這個數值隨後可以修改,但只能增加,不能減小。
點選ok按鈕執行格式化操作。
要格式化一個3k塊大小,32k叢集單元大小,包括4個節點的裝置,在命令列下,可以通mkfs.ocfs2工具按如下操作完成:
 # mkfs.ocfs2 -b 4K -C 32K -N 4 -L oracle_home /dev/sdf2
 
 mkfs.ocfs2 1.2.0
 
 Overwriting existing ocfs2 partition.
 
 Proceed (y/N): y
 
 Filesystem label=oracle_home
 
 Block size=4096 (bits=12)
 
 Cluster size=32768 (bits=15)
 
 Volume size=21474820096 (655359 clusters) (5242872 blocks)
 
 21 cluster groups (tail covers 10239 clusters, rest cover
32256 clusters)
 
 Journal size=33554432
 
 Initial number of node slots: 4
 
 Creating bitmaps: done
 
 Initializing superblock: done
 
 Writing system files: done
 
 Writing superblock: done
 
 Writing lost+found: done
 
 mkfs.ocfs2 successful

可以通過man 獲得mkfs.ocfs2的幫助資訊。
6:掛載(mount)
啟動o2cb服務,mount操作需要這些服務的支援。
你可以使用圖形介面或者命令列工具:mount來完成操作。
如果使用圖形介面:執行ocfs2console,選中一個裝置,點選mount按鈕,在彈出的對話方塊中輸入掛接點,在可選項中輸入defaults,點選ok.成功執行者後,你在列表中會看到這個裝置以及它的掛接點。
命令列下的操作:
 # mount -t ocfs2 /dev/sdf2 /u01
要取消掛接(umount)一個裝置,可以在控制檯上選中該裝置點選umount或者在命令列下輸入:
 
 # umount /u01
Oracle資料庫使用者在將Ocfs2掛接點用來存放voting disk(CRS),cluster registry(OCR),資料檔案,redo file,歸檔日誌和控制檔案時,在mount操作時,一定要使用'datavolume,nointr' 的mount選項。
其中datavolume選項確保Oracle程式在開啟檔案時使用o_direct標記。nointr選項確保在這個裝置上的讀寫不會被一些訊號中斷。其他的裝置,比如用於存放Oracle_Home檔案的掛節點不需要使用這些選項。
通過以下命令來完成包含資料檔案,voting disk等裝置的掛載:
 # mount -t ocfs2 -o datavolume,nointr /dev/sdf2 /u01
 
 # mount
 
 /dev/sdf2 on /u01 type ocfs2 (rw,datavolume,nointr)
 

如果你想在系統啟動時掛接ocsf2,你需要保證o2bc和ocfs2服務使用chkconfig來配置o2bc在啟動時被載入。並且要在/etc/fstab檔案中加入如下項:
 # cat /etc/fstab
 
 ...
 
 /dev/sdf2 /u01 ocfs2 _netdev,datavolume,nointr 0 0
 
 /dev/sdg2 /orahome ocfs2 _netdev 0 0
 
 ...
 

 
_netdev選項對於mount ocfs2裝置是必須的,這個選項說明裝置需要在網路啟動時候掛載,在網路關閉之後取消掛載(datavolume 和 nointr選項只在儲存資料檔案等裝置上需要)。
ocfs2的服務可以用來掛載和取消掛在ocfs2裝置,它通常用來確保ocfs2 裝置必須在網路服務關閉之後再取消掛載。
 # chkconfig --add ocfs2
 
 ocfs2 0:off 1:off 2:on 3:on 4:off 5:on 6:off
 
 # chkconfig --add o2cb
 
 o2cb 0:off 1:off 2:on 3:on 4:off 5:on 6:off
 
 #
 
 #
 
 # /etc/init.d/o2cb configure
 
 ...
 
 Load O2CB driver on boot (y/n) [n]: y
 
 Cluster to start on boot (Enter "none" to clear) []: ocfs2
 
   Writing O2CB configuration: OK

可以通過標籤來掛載裝置:
 # mount -L datafiles /u01

7:調整(tune)
調整的操作允許你增加節點數(增加併發訪問mount裝置的節點數),修改裝置的標籤和修改。
tunefs.ocfs2命令列工具用來完整這個操作,你也可以使用控制檯來完成。
確保O2cb服務啟動,tune操作需要這些服務的支援。
如果是用控制檯增加節點數,點選:task,選擇Edit Node Slot count,在對話方塊中輸入你需要的節點數,Ok完成。
通過以下命令從命令列完成上面的操作:
 # tunefs.ocfs2 -N 8 /dev/sdf2
 
 tunefs.ocfs2 1.2.0
 
 Changing number of node slots from 4 to 8
 
 Proceed (y/N): y
 
 Added node slots
 
 Wrote Superblock
 
在控制檯下修改一個裝置的標籤,點選:task/Change Label,在對話方塊中輸入新的標籤。
命令列下的操作:
 # tunefs.ocfs2 -L "old datafiles" /dev/sdf2
 
 tunefs.ocfs2 1.2.0
 
 Changing volume label from datafiles to old datafiles
 
 Proceed (y/N): y
 
 Changed volume label
Wrote Superblock
通過man命令來獲得tunefs.ocfs2的完整幫助。
9:CDSL(Context Dependent Symbolic Links)
在一個共享儲存的cluster環境,例項需要通過cluster來訪問一些檔案和路徑,通常它可能只對這個路徑感興趣,比如在一個共享的ORACLE_HOME中,/admin/listener.ora對所有的節點都是相同的,但listener.ora的內容卻各不相同,同理,對於一個共享的啟動環境,/etc/對所有節點是相同的,但它裡面的內容卻各不相同。
對於所有的這些例項,這個檔案或者路徑的內容依賴於各個節點的主機名,而對於另外的一些例項,它可能會依賴於各個節點的架構(x86,x86_64或者IA64),也可能會依賴於各個節點的節點號。
為了解決這些問題,OCFS2使用了一種稱為CDSL(Context Dependent Symbolic Links)的技術,簡單的說,就是它使用軟連線來實現各個節點自己需要的檔案內容。
可以使用ocfs2cdsl命令列工具來建立這些軟連結:
建立一個節點需要的檔案:
 root@node32:admin/# ocfs2cdsl listener.ora
 root@node32:admin/# ls –l listener.ora
 lrwxrwxrwx 1 root root 50 Aug 8 11:41 listener.ora ->
 ../.cluster/hostname/{hostname}/10g/network/admin/listener.ora
 
 
        編輯這個檔案,然後儲存,要從其他節點山訪問這個檔案,先要在那個節點上建立CDSL,然後再像剛才那樣把正確的內容寫進去。
 
 root@node31:admin/# ocfs2cdsl listener.ora
 
 
把一個已經存在的檔案變成cdsl檔案:
 root@node32:admin/# ocfs2cdsl –c sqlnet.ora
 
 
同理,在其他節點上也這樣做。
 root@node31:admin/# ocfs2cdsl sqlnet.ora
這是你也許會發現對於所有的節點這個檔案裡面的內容是一樣的,在任何一個檢點上對該檔案的更新對於其他節點都是不可見的。
刪除一個CDSL連結:
 root@node31:admin/# rm listener.ora

 
可以通過man來獲得ocfs2cdsl的完全幫助。

10:其他的一些工具
 
mounted.ocfs2
mounted.ocfs2是一個命令列下列出一個節點上所有OCFS2裝置的工具。它掃描/proc/partitions檔案中列出的所有分割槽。
列出一個節點上ocfs2分割槽資訊:
 # mounted.ocfs2 -d
 Device FS UUID Label
 /dev/sdb1 ocfs2 e70c75a0-a08c-480a-bf50-ebda4191da30 mm_v2_dbf1
 /dev/sdb2 ocfs2 f49163e8-6288-43c4-a792-e9401fde45fa mm_v2_ctrl
 /dev/sdb3 ocfs2 2d441be2-adb6-4c52-9e19-9a7c2c485dc4 mm_v2_dbf2
 /dev/sdb5 ocfs2 8607eae9-8e4f-4495-84e8-8db0bc9da60c mm_v2_log1
 /dev/sdb6 ocfs2 acfb7b7d-a277-4741-9791-620ea9b82670 mm_v2_log2
 /dev/sdf1 ocfs2 84749537-df45-4a97-aa28-fad63760b674 9ihome
 /dev/sdq1 ocfs2 dca2901b-241f-406e-80e9-85dd6b452d1a oracle_home
 /dev/sdcf1 ocfs2 663764bd-1eed-4b3c-aa48-a98f0be0e574 10ghome
 /dev/sdcf2 ocfs2 8e2d9c21-ef47-4fea-8ac5-2306cc60455e mm_v2_log3
 
 列出所有節點上ocfs2分割槽資訊:
 # mounted.ocfs2 -f
 Device FS Nodes
 /dev/sdb1 ocfs2 node31, node32, node33, node34
 /dev/sdb2 ocfs2 node31, node32, node33, node34
 /dev/sdb3 ocfs2 node31, node32, node33, node34
 /dev/sdb5 ocfs2 node31, node32, node33, node34
 /dev/sdb6 ocfs2 node91, node90
 /dev/sdf1 ocfs2 Not mounted
 /dev/sdq1 ocfs2 node34, node35
 /dev/sdcf1 ocfs2 Not mounted
 /dev/sdcf2 ocfs2 Not mounted
 
注意:這個命令只列出起了o2bc服務的節點機的名字,對於那些沒
注意:這個命令只列出起了o2bc服務的節點機的名字,對於那些沒有起o2bc服務的節點,將以節點號代替。
 
通過man命令獲得mounted.ocfs2的完全幫助。
附錄A
一個cluster.conf例子:
 Sample /etc/ocfs2/cluster.conf
 cluster:
 node_count = 2
 name = racdb
 node:
 ip_port = 7777
 ip_address = 192.168.0.107
 number = 7
 name = node7
 cluster = racdb
 node:
 ip_port = 7777
 ip_address = 192.168.0.106
 number = 6
 name = node6
 cluster = racdb


 

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

相關文章