1、 簡介
OCFS2是下一代的ORACLE叢集檔案系統,它已經被設計成為一種為通用的檔案系統。OCFS2能使運行在叢集中所有節點並發的通過標準檔案系統介面來訪問儲存備。
2、 下載
OCFS2的發行版包括了2個安裝包,一個稱為核心模組,另一個叫工具包。
核心模組連結下載:
http://oss.oracle.com/projects/ocfs2/files/
工具包連結下載:
http://oss.oracle.com/projects/ocfs2-tools/files/
首先要下載相應的軟體包,對於核心模組,下載時要考慮它的發行號,適用的平台,作業系統核心版本以及核心的類型(比如SMP,HUGEMEM,PSMP等),對於工具包,只要符合發行版本和平台就可以了。
工具包又分為兩部分,ocfs2-tools命令列工具,ocfs2console圖形工具,使用者可以選擇不安裝這部分,但它的確可以令操作簡單化。
3、安裝(每個節點都安裝)
以Linux2.6.18-128.7AXS3 伺服器安裝為例:
作業系統:Linux
作業系統版本:2.6.18-128.7AXS3 x86_64
OCFS2核心模組安裝包:
ocfs2console-1.4.1-1AXS3.x86_64.rpm
OCFS2工具安裝包:
ocfs2-tools-1.4.1-1AXS3.x86_64.rpm
切換root使用者進行安裝:
rpm -ivh ocfs2console-1.4.1-1AXS3.x86_64.rpm
rpm –ivh ocfs2-tools-1.4.1-1AXS3.x86_64.rpm
安裝後,若執行/etc/init.d/ocfs2出現:
Usage: /etc/init.d/ocfs2 {start|stop|status|reload|force-reload|restart|try-restart}
執行/etc/init.d/o2cb出現
Usage: /etc/init.d/o2cb {start|stop|restart|force-reload|enable|disable|configure|load|unload|online|offline|force-offline|status}
說明OCFS2核心模組和工具包安裝成功。
4、 OCFS2設定檔(每個節點都配置)
OCFS2有一個設定檔,路徑為/etc/ocfs2/cluster.conf。在這個設定檔中,你需要指定叢集中所有的節點資訊,並且所有的節點上都應該保留相同的一份。你可以動態增加新節點到叢集,或者改變一些節點的IP,名字,但這需要重起OCFS2以便使更改生效。
以兩台Linux2.6.18-128.7AXS3伺服器配置為例,保證兩台機器相互ping通:
伺服器主機名稱:h104、h105
伺服器IP地址:192.168.4.104、192.168.4.105
為設定檔cluster.cof內容:
node:
ip_port = 7777
ip_address = 192.168.4.104
number = 0
name = h104
cluster = ocfs2
node:
ip_port = 7777
ip_address = 192.168.4.105
number = 1
name = h105
cluster = ocfs2
cluster:
node_count = 2
name = ocfs2
該設定檔分別放在兩台伺服器/etc/ocfs2目錄中,配置完成。
5、 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等命令前,要先啟動這些服務。
6、 OCFS2叢集服務啟動(每個節點都執行)
通過以下命令啟動所有服務:
/etc/init.d/o2cb load
通過以下命令使cluster ocfs2 啟動:
/etc/init.d/o2cb online ocfs2
通過以下命令停止cluster ocfs2:
/etc/init.d/o2cb offline ocfs2
通過以下命令停止所有服務:
/etc/init.d/o2cb unload
通過以下命令檢查所有服務的狀態:
/etc/init.d/o2cb status
7、 格式化
首先採用parted工具對共用磁碟進行分區,分出一個KingbaseSD區供OCFS2叢集使用。詳細分區命令如下:
選擇要分區的硬碟,此處為/dev/sdb:
[root@h105 ~]# parted /dev/sdb
建立一個分區表:
(parted) mklabel
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? yes
New disk label type? [gpt]? Gpt
執行mkpart命令,分別輸入分區名稱,檔案系統和分區的起止位置:
(parted) mkpart
分區名稱? []? KingbaseSD
檔案系統類型? [ext2]? ext3
起始點?500G
結束點?1000G
分完區後退出:
(parted) q
最後查看下分完區後的結果:
parted -l
Model: LSI INF-01-00 (scsi)
Disk /dev/sdb: 6743GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name 標誌
1 17.4kB 500GB 500GB KingbaseSD
如果O2CB CLUSTER沒有啟動,首先啟動它。格式化操作依賴於這些服務。同時它需要你確保所有的節點上都沒有掛載需要格式化的裝置。
為要格式化的裝置輸入一個標籤,為了便於管理,我們建議你輸入一個標籤,你仍然可以在格式化之後修改它。
為裝置選擇一個叢集單元大小(cluster size),它支援從4k到1M。如果這個裝置用來儲存資料檔案或者大的檔案,比較合適的大小是128K。
選擇一個塊單元大小(block size),它支援從512位元組到4k,由於OCFS2在格式化的時候並不分配一個靜態inode 地區,所以4k是我們強烈推薦的大小,它幾乎適合所有的磁碟大小,換句話說,即時這些磁碟支援512位元組,但我們仍然不建議使用小的單元。
一旦格式化完畢,叢集單元和塊單元都不可以再改變。
輸入一個節點槽位(node slots),這個數值決定了允許多少節點同時掛載這個裝置。這個數值隨後可以修改,但只能增加,不能減小。
例如要格式化一個3k塊大小,32k叢集單元大小,包括4個節點的裝置,在命令列下,可以通過mkfs.ocfs2工具按如下操作完成(在一個節點執行格式化即可):
# mkfs.ocfs2 -b 4K -C 32K -N 4 -L KingbaseSD /dev/sdb1
可以通過man 獲得mkfs.ocfs2的協助資訊。
8、 掛載
把共用磁碟掛載到所有節點上,首先在每個節點上建立一個共同的目錄名,例如在h104和h105建立/home/kingbasesd_DATA目錄名:
h104:mkdir –p /home/kingbasesd_DATA
h105: mkdir –p /home/kingbasesd_DATA
建立完目錄後,通過以下命令把共用磁碟掛載到本地,以h104、h105為例:
h104:mount -t ocfs2 /dev/sdb1 /home/kingbasesd_DATA/
h105:mount -t ocfs2 /dev/sdb1 /home/kingbasesd_DATA/
注意:在OCFS2檔案叢集系統退出時,每個節點要卸載已掛載的共用磁碟,以防對共用磁碟損壞,通過以下命令卸載:
umount /dev/sdb1
9、掛載本地的共用磁碟配置
為了使每個節點對掛載到本地的共用磁碟都有讀寫權限,需要建立專門的使用者對共用磁碟訪問,並且每個節點建立的使用者ID必須一致。以h104,、h105為例進行配置:
首先在h104、h105上建立使用者node104、node105:
useradd node104
useradd node105
為node104、node105分配密碼:
passwd node104
passwd node105
接著修改node104和node105的使用者ID和使用者組ID都為808:
在h105上:
usermod -d 808 node105
groupmod -g 808 node105
在h104上:
usermod -d 808 node104
groupmod -g 808 node104
最後在其中一個節點上修改/home/kingbasesd_DATA使用者屬組:
chown -R node104:node104 /home/kingbasesd_DATA/
10、 測試
在h104上/home/kingbasesd_DATA 目錄上建立一個test檔案,在h105上/home/kingbasesd_DATA目錄上可以看到,在h105上/home/kingbasesd_DATA上刪除test檔案,在h104上看不到test檔案。