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 = ocfs2node:
ip_port = 7777
ip_address = 192.168.4.105
number = 1
name = h105
cluster = ocfs2cluster:
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? yesNew 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文件。