configure ocfs2

ocfs2 cluster

구성

두 개의 리눅스로 구성하는 예 구성은 다음과 같다고 가정함.

Hostname ip OS kernel disk
first 192.168.0.221 debian7.11 3.16.7 100G
second 192.168.0.222 debian7.11 3.16.7 100G


IP host os
192.168.200.101 extsvr1 ubuntu20.04
192.168.200.102 extsvr2 ubuntu20.04
192.168.200.201 fep1 ubuntu20.04
192.168.200.202 fep2 ubuntu20.04
192.168.123.101 internal-extsvr1
192.168.123.102 internal-extsvr2
192.168.123.201 internal-fep1
192.168.123.202 internal-fep2

OCFS tools설치

first second각각에 설치함.

apt update && apt install ocfs2-tools

OCFS2 설정

순서 설정 항목 파일 혹은 명령
1 host 설정 /etc/hosts
2 cluster layout 설정 /etc/ocfs2/conf
3 kernel 설정 /etc/sysctl.conf
4 o2cb시작/끝내기 /etc/default/o2cb
5 ocfs2 filesystem 만들기 mkfs.ocfs2
6 ocfs2 file system mount mount -t ocfs2 /dev/DEVICE /mount

/etc/hosts

192.168.0.221 first
192.168.0.222 second

192.168.200.101 extsvr1   extsvr1-192
192.168.200.102 extsvr2   extsvr2-192
192.168.200.111 extsvrdev extsvrdev-192

192.168.200.201 fep1      fep1-192
192.168.200.202 fep2      fep2-192
192.168.200.211 fepdev    fepdev-192

192.168.123.101 internal-extsvr1
192.168.123.102 internal-extsvr2
192.168.123.201 internal-fep1
192.168.123.202 internal-fep2

/etc/ocfs2/conf

cluster:
        node_count = 2 
        name = cluster

node:
        number = 0
        cluster = cluster
        ip_port = 7777
        ip_address = 192.168.0.221
        name = first

node:
        number = 1
        cluster = cluster
        ip_port = 7777
        ip_address = 192.168.0.222
        name = second

cluster:
	node_count = 4
	name = woori_cluster

node:
	number = 1
	name = internal-extsvr1 
	cluster = woori_cluster
	ip_port = 7777
	ip_address = 192.168.123.101 

node:
	number = 2
	name = internal-extsvr2 
	cluster = woori_cluster
	ip_port = 7777
	ip_address = 192.168.123.102 

node:
	number = 3
	name = internal-fep1 
	cluster = woori_cluster
	ip_port = 7777
	ip_address = 192.168.123.201 

node:
	number = 4
	name = internal-fep2 
	cluster = woori_cluster
	ip_port = 7777
	ip_address = 192.168.123.202 

__ 조심할 것 __:

  • node: cluster:는 첫 번째 컬럼부터.
  • 각 섹션의 파라메터는 꼭 tab으로 들여쓰기한다.
  • 섹션구분을 위해 꼭 빈 줄을 넣는다.

time out등 ocfs2 설정값

/etc/default/o2cb의 내용

O2CB_ENABLED=true

O2CB_BOOTCLUSTER=cluster

O2CB_HEARTBEAT_THRESHOLD=31

O2CB_IDLE_TIMEOUT_MS=60000

O2CB_KEEPALIVE_DELAY_MS=2000

O2CB_RECONNECT_DELAY_MS=2000

O2CB_ENABLED=true
O2CB_BOOTCLUSTER=woori_cluster
O2CB_HEARTBEAT_THRESHOLD=31
O2CB_IDLE_TIMEOUT_MS=60000
O2CB_KEEPALIVE_DELAY_MS=2000
O2CB_RECONNECT_DELAY_MS=2000
항목 설명
O2CB_ENABLED ‘true’ means to load the driver on boot.
O2CB_BOOTCLUSTER If not empty, 시작할 클러스터 이름
O2CB_HEARTBEAT_THRESHOLD 노드가 죽었다고 간주되기 시간(초단위) /2 + 1
O2CB_IDLE_TIMEOUT_MS 네트웍이 죽었다고 생각될 시간(천분의 1초단위)
O2CB_KEEPALIVE_DELAY_MS 패킷이 살아서 전달될 최대지연시간(천분의 1초단위)
O2CB_RECONNECT_DELAY_MS 네트웍이 다시 연결될때 최소지연시간(천분의 1초단위)

kernel설정

/etc/sysctl.conf에 다음을 기록함.

kernel.panic_on_oops = 1
kernel.panic = 30
  • kernel.panic_on_oops = 1 : o2cb가 기능하도록 하는 kernel thread가 크래쉬되었을 때, cluster가 hang되지 않도록 kernel oops상태를 panic으로 바꾸어 주어야 합니다.
  • kernel.panic = 30 : kernel panic 상태가 30초 동안 지속될 때 시스템이 자동으로 reboot되게 합니다.

sysctl -p 명령 실행

first# sysctl -p
second# sysctl -p

o2cb명령

  • o2cb status : 상태보기
  • o2cb online: 시작
  • o2cb offline : 끝내기
  • o2cb unload: 메모리에서 내리기

mkfs.ocfs2옵션들

옵션 설명
-b 블록크기 inode의 크기, 지원하는 값은 512, 1k,2k,4k(내정값)
-C 클러스터크기 지원되는 값 4k(내정값), 8k,16k,32k,256k, 512k, 1M
–fs-feature-level=feature-level default,max-compat=이전버젼과 호환성유지되는 특성만, max-feature=최근에 지원되는 모든 특성 모두 허용
–fs_features=feature mkfs.ocfs2(8)맨 페이지 참고
-J size=저널크기 내정값은 64M for -Tdatafile, 256M for -Tmail ,128M for -Tvmstore
-L 볼륨 레이블
-N 노드갯수
-T 쓰임 datafiles,mail, vmstore

LVM 로지컬 볼륨은 쓰지 않는다.
데이터베이스 파일을 저장할거라면cluster크기를 정하지 말라.

파일시스템크기 적당한 클러스터크기
1 GB-10 GB 8K
10 GB-100 Gb 16K
100 GB-1 TB 32K
1 TB-10 TB 64K
10 TB-16 TB 128K
mkfs.ocfs2 -L "wrocfs2vol" -T datafiles /dev/md1

mount /etc/fstab

wrocfs2vol /data ocfs2  _netdev,defauts 0 0