버전 비교
키
- 이 줄이 추가되었습니다.
- 이 줄이 삭제되었습니다.
- 서식이 변경되었습니다.
공유 스토리지 생성
공유 스토리지 구성을 위해 고정 공간이 할당된 가상 디스크 6개를 추가로 생성합니다.
파일 이름 | 용량 | 타입 | 용도 | 비고 |
---|---|---|---|---|
CRS1.vdi | 1GB | Fixed / Shareable | CRS 저장 영역 | 공유(shareable) 디스크로 사용하기 위해서 Fixed Size로 생성합니다. |
CRS2.vdi | 1GB | Fixed / Shareable | ||
CRS3.vdi | 1GB | Fixed / Shareable | ||
DATA.vdi | 30GB | Fixed / Shareable | Data 저장 영역 | |
FRA.vdi | 20GB | Fixed / Shareable | Fast Recovery Area | |
RAW.vdi | 20GB | Fixed / Shareable | Raw Device 영역 |
가상 스토리지 파일 생성
코드 블럭 | ||||||
---|---|---|---|---|---|---|
| ||||||
vboxmanage createmedium --filename CRS1.vdi --size 1024 --format VDI --variant Fixed vboxmanage createmedium --filename CRS2.vdi --size 1024 --format VDI --variant Fixed vboxmanage createmedium --filename CRS3.vdi --size 1024 --format VDI --variant Fixed vboxmanage createmedium --filename DATA.vdi --size 30720 --format VDI --variant Fixed vboxmanage createmedium --filename FRA.vdi --size 20480 --format VDI --variant Fixed vboxmanage createmedium --filename RAW.vdi --size 20480 --format VDI --variant Fixed |
펼치기 | ||
---|---|---|
|
Host 컴퓨터에서 VM에 연결시킬 공유 디스크를 생성합니다.
디스크는 2개의 노드에서 공유할 것이므로, 반드시 Fixed 모드로 디스크 공간이 사전에 할당되도록 생성해야 합니다.
스토리지 파일 공유 설정
코드 블럭 | ||||||
---|---|---|---|---|---|---|
| ||||||
vboxmanage modifymedium CRS1.vdi --type shareable vboxmanage modifymedium CRS2.vdi --type shareable vboxmanage modifymedium CRS3.vdi --type shareable vboxmanage modifymedium DATA.vdi --type shareable vboxmanage modifymedium FRA.vdi --type shareable vboxmanage modifymedium RAW.vdi --type shareable |
펼치기 | ||
---|---|---|
|
생성된 디스크들은 모두 shareable 디스크로 속성 변경이 필요합니다.
VirtualBox의 GUI 툴을 사용하여 변경할 수도 있습니다.
VM에 스토리지 연결
정지된 1번 노드의 설정 모드로 들어가서 디스크 파일을 추가합니다.
SATA 콘트롤러의 오른쪽에 하드디스크 모양의 아이콘을 클릭합니다
vboxmanage 명령으로 이미 생성된 디스크 파일을 추가할 것이므로 <기존 디스크 선택하기>를 클릭합니다.
Not Attatched에 등록된 디스크 목록에서 "CRS1.vdi"를 선택한 후 <선택>을 클릭합니다.
만약 생성된 디스크 이미지가 목록에 없다면 <추가> 아이콘을 클릭한 후에 디스크 이미지를 찾아서 추가하면 됩니다.
정상적으로 스토리지가 추가된 것을 확인할 수 있습니다.
다른 공유 디스크들도 같은 방법으로 추가해줍니다.
나머지 디스크 파일 모두 순서에 맞게 SATA 컨트롤러에 등록시켜줍니다.
반드시 동일한 순서대로 다른 노드에도 등록시켜야 합니다.
공유 스토리지 환경 구성
디스크 파티셔닝
코드 블럭 | ||||||
---|---|---|---|---|---|---|
| ||||||
ls /dev/sd* fdisk /dev/sdb ### "n", "p", "1", "엔터", "엔터", "w" 입력 fdisk /dev/sdc ### "n", "p", "1", "엔터", "엔터", "w" 입력 fdisk /dev/sdd ### "n", "p", "1", "엔터", "엔터", "w" 입력 fdisk /dev/sde ### "n", "p", "1", "엔터", "엔터", "w" 입력 fdisk /dev/sdf ### "n", "p", "1", "엔터", "엔터", "w" 입력 fdisk /dev/sdg ### "n", "p", "1", "엔터", "+15G" 입력, "n", "p", "2", "엔터", "엔터", "w" 입력 ls /dev/sd* |
펼치기 | ||||
---|---|---|---|---|
|
VM에 연결된 디스크에 fdisk 명령어로 파티션 분할 작업을 수행 합니다.
/dev/sdb에서부터 /dev/sdf까지는 하나의 파티션으로 분할하여 ASM 스토리지로 사용할 것입니다.
/dev/sdg 디스크는 15GB와 5GB의 파티셔으로 분할하여, 15GB는 raw device 영역으로 사용하고 나머지 5GB는 OCFS2으로 클러스터링하여 FRA 영역으로 사용합니다.
ASM 구성
코드 블럭 | ||||||
---|---|---|---|---|---|---|
| ||||||
oracleasm configure -i oracleasm init oracleasm status oracleasm configure |
펼치기 | ||
---|---|---|
|
ASM library에 대한 추가적인 환경 설정(사용자, 그룹, 부팅시 활성화, 부팅시 스캔 여부)을 수행하고 적용 여부를 검증합니다.
코드 블럭 | ||||||
---|---|---|---|---|---|---|
| ||||||
oracleasm createdisk CRS1 /dev/sdb1 oracleasm createdisk CRS2 /dev/sdc1 oracleasm createdisk CRS3 /dev/sdd1 oracleasm createdisk DATA /dev/sde1 oracleasm createdisk FRA /dev/sdf1 oracleasm scandisks oracleasm listdisks |
펼치기 | ||
---|---|---|
|
VM에 마운트된 디스크를 각각 ASM Disk로 할당해줍니다.
순서대로 마운트가 되었다면, 디바이스 명의 알파벳 순으로 ASM 디스크를 생성하면 됩니다.
Raw Device 구성
코드 블럭 | ||||||
---|---|---|---|---|---|---|
| ||||||
pvcreate /dev/sdg1 pvdisplay /dev/sdg1 vgcreate racrawvg /dev/sdg1 vgdisplay racrawvg |
펼치기 | ||
---|---|---|
|
Raw Device로 사용할 디스크의 물리 볼륨과 볼륨 그룹을 생성합니다.
코드 블럭 | ||||||
---|---|---|---|---|---|---|
| ||||||
lvcreate -L 300M -n ocr01 rawvg lvcreate -L 300M -n ocr02 rawvg lvcreate -L 300M -n vote01 rawvg lvcreate -L 300M -n vote02 rawvg lvcreate -L 300M -n vote03 rawvg lvcreate -L 2048M -n system rawvg lvcreate -L 2048M -n sysaux rawvg lvcreate -L 1024M -n users rawvg lvcreate -L 700M -n temp rawvg lvcreate -L 2048M -n undotbs1 rawvg lvcreate -L 2048M -n undotbs2 rawvg lvcreate -L 100M -n control01 rawvg lvcreate -L 100M -n control02 rawvg lvcreate -L 200M -n redo01 rawvg lvcreate -L 200M -n redo02 rawvg lvcreate -L 200M -n redo03 rawvg lvcreate -L 200M -n redo04 rawvg lvcreate -L 200M -n redo05 rawvg lvcreate -L 200M -n redo06 rawvg lvcreate -L 200M -n spfile rawvg lvdisplay |
펼치기 | ||
---|---|---|
|
데이터 파일이나 로그 파일, 컨트롤 파일 등에 사용할 크기별로 논리 볼륨을 할당합니다.
코드 블럭 | ||||||
---|---|---|---|---|---|---|
| ||||||
raw /dev/raw/raw1 /dev/rawvg/ocr01 raw /dev/raw/raw2 /dev/rawvg/ocr02 raw /dev/raw/raw3 /dev/rawvg/vote01 raw /dev/raw/raw4 /dev/rawvg/vote02 raw /dev/raw/raw5 /dev/rawvg/vote03 raw /dev/raw/raw6 /dev/rawvg/system raw /dev/raw/raw7 /dev/rawvg/sysaux raw /dev/raw/raw8 /dev/rawvg/users raw /dev/raw/raw9 /dev/rawvg/temp raw /dev/raw/raw10 /dev/rawvg/undotbs1 raw /dev/raw/raw11 /dev/rawvg/undotbs2 raw /dev/raw/raw12 /dev/rawvg/control01 raw /dev/raw/raw13 /dev/rawvg/control02 raw /dev/raw/raw14 /dev/rawvg/redo01 raw /dev/raw/raw15 /dev/rawvg/redo02 raw /dev/raw/raw16 /dev/rawvg/redo03 raw /dev/raw/raw17 /dev/rawvg/redo04 raw /dev/raw/raw18 /dev/rawvg/redo05 raw /dev/raw/raw19 /dev/rawvg/redo06 raw /dev/raw/raw20 /dev/rawvg/spfile raw -qa ls -l /dev/raw |
펼치기 | ||
---|---|---|
|
생성된 논리 볼륨을 Raw Device에 할당합니다.
코드 블럭 | ||||||
---|---|---|---|---|---|---|
| ||||||
ENV{DM_VG_NAME}=="rawvg", ENV{DM_LV_NAME}=="ocr01", RUN+="/bin/raw /dev/raw/raw1 %N" ENV{DM_VG_NAME}=="rawvg", ENV{DM_LV_NAME}=="ocr02", RUN+="/bin/raw /dev/raw/raw2 %N" ENV{DM_VG_NAME}=="rawvg", ENV{DM_LV_NAME}=="vote01", RUN+="/bin/raw /dev/raw/raw3 %N" ENV{DM_VG_NAME}=="rawvg", ENV{DM_LV_NAME}=="vote02", RUN+="/bin/raw /dev/raw/raw4 %N" ENV{DM_VG_NAME}=="rawvg", ENV{DM_LV_NAME}=="vote03", RUN+="/bin/raw /dev/raw/raw5 %N" ENV{DM_VG_NAME}=="rawvg", ENV{DM_LV_NAME}=="system", RUN+="/bin/raw /dev/raw/raw6 %N" ENV{DM_VG_NAME}=="rawvg", ENV{DM_LV_NAME}=="sysaux", RUN+="/bin/raw /dev/raw/raw7 %N" ENV{DM_VG_NAME}=="rawvg", ENV{DM_LV_NAME}=="users", RUN+="/bin/raw /dev/raw/raw8 %N" ENV{DM_VG_NAME}=="rawvg", ENV{DM_LV_NAME}=="temp", RUN+="/bin/raw /dev/raw/raw9 %N" ENV{DM_VG_NAME}=="rawvg", ENV{DM_LV_NAME}=="undotbs1", RUN+="/bin/raw /dev/raw/raw10 %N" ENV{DM_VG_NAME}=="rawvg", ENV{DM_LV_NAME}=="undotbs2", RUN+="/bin/raw /dev/raw/raw11 %N" ENV{DM_VG_NAME}=="rawvg", ENV{DM_LV_NAME}=="control01", RUN+="/bin/raw /dev/raw/raw12 %N" ENV{DM_VG_NAME}=="rawvg", ENV{DM_LV_NAME}=="control02", RUN+="/bin/raw /dev/raw/raw13 %N" ENV{DM_VG_NAME}=="rawvg", ENV{DM_LV_NAME}=="redo01", RUN+="/bin/raw /dev/raw/raw14 %N" ENV{DM_VG_NAME}=="rawvg", ENV{DM_LV_NAME}=="redo02", RUN+="/bin/raw /dev/raw/raw15 %N" ENV{DM_VG_NAME}=="rawvg", ENV{DM_LV_NAME}=="redo03", RUN+="/bin/raw /dev/raw/raw16 %N" ENV{DM_VG_NAME}=="rawvg", ENV{DM_LV_NAME}=="redo04", RUN+="/bin/raw /dev/raw/raw17 %N" ENV{DM_VG_NAME}=="rawvg", ENV{DM_LV_NAME}=="redo05", RUN+="/bin/raw /dev/raw/raw18 %N" ENV{DM_VG_NAME}=="rawvg", ENV{DM_LV_NAME}=="redo06", RUN+="/bin/raw /dev/raw/raw19 %N" ENV{DM_VG_NAME}=="rawvg", ENV{DM_LV_NAME}=="spfile", RUN+="/bin/raw /dev/raw/raw20 %N" ACTION=="add", KERNEL=="raw*", OWNER=="oracle", GROUP=="dba", MODE=="0660" |
펼치기 | ||
---|---|---|
|
서버를 재부팅 시에 논리 볼륨을 raw device에 할당할 수 있도록 rule 파일을 생성하고, 소유자와 그룹 설정을 추가합니다.
코드 블럭 | ||||||
---|---|---|---|---|---|---|
| ||||||
udevadm control --reload-rules udevadm trigger --type=devices --action=change |
펼치기 | ||
---|---|---|
|
생성된 rule을 적용합니다.
OCFS2 구성
코드 블럭 | ||||||
---|---|---|---|---|---|---|
| ||||||
o2cb add-cluster <클러스터명> o2cb add-node <클러스터명> <node1명> --ip <node1 사설IP> o2cb add-node <클러스터명> <node2명> --ip <node2 사설IP> cat /etc/ocfs2/cluster.conf |
펼치기 | ||
---|---|---|
|
Archive Log를 저장하기 위해서는 파일을 저장할 수 있는 공유 영역이 있어야 하며, 이를 위해서 OCFS2를 구성해야 합니다.
각각의 노드에 파일로 저장할 경우, 파일을 공유할 수 없어서 노드 장애로 인한 복구가 어려울 수 있습니다.
먼저 클러스터의 이름과 연결될 노드 정보를 저장합니다.
코드 블럭 | ||||||
---|---|---|---|---|---|---|
| ||||||
/sbin/o2cb.init configure # "y" 입력, "엔터" 입력, <클러스터명> 입력, "엔터" 입력, "엔터" 입력, "엔터" 입력, "엔터" 입력 /sbin/o2cb.init status systemctl enable o2cb systemctl enable ocfs2 |
펼치기 | ||
---|---|---|
|
OCFS2를 사용하기 위한 환경 설정과 서비스 활성화를 수행합니다.
코드 블럭 | ||||||
---|---|---|---|---|---|---|
| ||||||
# Define panic and panic_on_oops for cluster operation kernel.panic = 30 kernel.panic_on_oops = 1 |
추가적으로 필요한 커널 파라미터를 /etc/sysctl.conf에 추가합니다.
코드 블럭 | ||||||
---|---|---|---|---|---|---|
| ||||||
mkdir /FRA mkfs.ocfs2 -L "fra" /dev/sdg2 |
펼치기 | ||
---|---|---|
|
OCFS2 영역을 마운트할 경로를 생성하고, 공유할 디스크 영역에 대한 포맷을 수행합니다.
코드 블럭 | ||||||
---|---|---|---|---|---|---|
| ||||||
/dev/sdg2 /FRA ocfs2 _netdev,defaults 0 0 |
포맷한 영역이 공유 경로에 마운트될 수 있도록 /etc/fstab에 정보를 저장합니다.
코드 블럭 | ||||||
---|---|---|---|---|---|---|
| ||||||
chown -R oracle:dba /FRA chmod -R 770 /FRA |
OCFS2 영역의 소유자와 권한 부여 작업을 /etc/rc.d/rc.local에 저장하여 재기동시에 설정이 유지될 수 있도록 합니다.
코드 블럭 | ||||||
---|---|---|---|---|---|---|
| ||||||
chmod +x /etc/rc.d/rc.local |
펼치기 | ||
---|---|---|
|
/etc/rc.d/rc.local 파일에 실행 모드를 추가하여 재기동시 작업이 수행되도록 활성화시킵니다.
...