---------------------------------------------------------------------------
작성자 : 문태준 (taejun at tunelinux.pe.kr http://tunelinux.pe.kr http://database.sarang.net)
작성일 : 2003. 1. 28(화)
---------------------------------------------------------------------------
ㅇ 문서소개
본 문서는 IBM 인텔기반 PC서버인 xSeries X440 서버에 운영체제를 리눅스로 하여 Oracle RAC release 2(9.2.0)를 구현하는 것에 대하여 개략적인 설명을 담았다. 이미 리눅스(레드햇)에 대해서는 익숙하다는 전제하에 설명을 하였으며 커널 컴파일, 커널 모듈 컴파일, LVM, raw device, watchdog 에 대한 이해를 필요로 한다. 또한 오라클 설치에 대한 부분은 별도의 문서를 참고하기 바라며 해당 자료도 이 문서에서 소개를 하고 있다.
ㅇ 환경
Hardware : IBM xSeries X440, X335 (Intel 기반 PC 서버)
운영체제 : Redhat Advanced Server 2.1(AS 2.1. 상용으로 인터넷에서 다운받을 수 없으며 구입해야함), Redhat 7.3(RH 7.3)
X440 사이트 자료
http://commerce-28.www.ibm.com/cgi-bin/ncommerce/CategoryDisplay?cntrfnbr=1&cgmenbr=1&cntry=410&lang=ko_KR&cgrfnbr=2249907
ㅇ 하드웨어 작업
X440에 AS 2.1을 설치하는 경우 아래 자료를 먼저 참고한다.
IBM eServer xSeries 440 - Installing Red Hat Advanced Server Linux v2.1
http://www-1.ibm.com/cgi-bin/pc/support/supportR5lite/pagegen/qtechinfo/en_US/MIGR-43851.html?lang=pt_BR&page=brand&brand=IBM+PC+Server&family=&machineType=&doctype=Software+information&subtype=All
redhat 7.3 에 설치하기는 다음의 자료를 참고한다.
http://www.pc.ibm.com/qtechinfo/MIGR-44441.html
어떤 하드웨어이든 먼저 바이오스등을 업데이트해야 한다.
IBM eServer xSeries 440 System Service Package 를 업데이트해야 하는데 네가지 프로그램이 있다.
a. BIOS code
b. Diagnostics code
c. System Management Processor firmware files
d. System Management device driver
일반적으로는 하드웨어 업체에서 관련 작업을 진행해 줄 것이다.
이와 더불어 하드웨어에 있는 SCSI 어댑터나 ServerRaid 관련 설정을 하드웨어 업체에서 해준다. 이번의 경우는 두개의 HDD를 Raid 1 으로 구성하였다.
ㅇ 운영체제 설치
- AS 2.1의 설치과정은 다른 레드햇 계열 배포판과 거의 동일하다. Installation Type에서는 custom 대신 Advanced Server 를 선택하면 미리 설정된 구성을 사용하여 편리하게 작업을 할 수 있다.
- X440의 하드웨어적인 특징(summit. NUMA 관련된 부분임)때문에 운영체제 설치시나 설치이후 kernel-summit-2.4.9-e.3.i686.rpm 을 설치해야한다. AS 2.1은 배포판에 기본적으로 summit 패치된 커널 RPM이 들어있다. X440도 모델에 따라 다른데 8way까지 지원되는 모델은 운영체제 설치후 재부팅시 smp나 enterprise 커널로 부팅이 되는데 4way entry 모델은 smp, enterprise로는 부팅되지 않고 single 커널만 부팅이 된다. summit 패치된 커널을 설치하지 않으면 CPU가 4개이지만 TOP에서 확인하보면 두개만 인식이 된다.
- 설치후 redhat-config-network-0.9.30-1.i386.rpm 을 업데이트하여준다. GUI로 네트워크 설정을 해주는 툴이며 업데이트해주지 않는다고 하더라도 특별한 문제가 없다. 네트웍은 쉘 커맨드 상에서도 수정할 수 있기 때문이다.
- 레드햇 관련 ftp 사이트에 접속하여 updates 디렉토리로 가면 kernel 관련 업데이트 파일을 받을 수 있다. 기본설치는 linux-2.4.9e.3summit 으로 하지만 여기서 linux-2.4.9e.8summit 로 업데이트를 할 수 있다.(AS 2.1의 경우 FTP사이트에서는 SRPM만 제공한다)
- summit 커널에서 새로운 드라이버를 추가하려면 커널 소스와 커널 SRPM을 같이 설치하여 커널 소스상에 summit 패치를 적용해주면 된다. Oracle 9.2에서 RAC를 위한 "TSC disable on NUMA" 패치의 경우는 커널 소스 컴파일이 필요하다.
** " TSC disable on NUMA" 패치 : http://oss.software.ibm.com/linux/patches/?patch_id=438
- Oracle RAC를 위한 ocfs 파일 시스템 커널 모듈의 경우에는 AS 2.1를 위해 single, smp, enterprise 커널용 rpm은 있지만 summit 패치된 커널용은 따로 제공하지 않으므로 otn 사이트에서 ocfs 소스를 받아 spec 파일을 이용하여 모듈을 컴파일하면 된다. 물론 이를 위해서는 필요한 패치가 적용된 커널 소스가 있으면 되며 오라클에서 제공하는 spec 파일을 약간만 수정하면 된다. ( http://otn.oracle.com/tech/linux/open_source.html )
- 타회사의 인텔 서버에서 리눅스용 Oracle 9.2와 RAC는 작동을 잘 하지만 X440에서는 개별 노드가 계속 죽는 현상이 발생한다. 이와 관련되어 IBM에서 패치를 제공하며 이에 해당하는 것이 " TSC disable on NUMA" 패치이다. 앞에서 언급한 사이트에서 패치파일을 받고 해당 사이트에 있는 Releaset Note를 참고하여 커널 컴파일을 하면 된다. ( http://oss.software.ibm.com/linux/patches/release_notes.php?patch_release_id=670 ) 해당 패치파일을 살펴보면 TSC 관련 설정(Configure.help, config.in)을 수정하며 io_apic.c, time.c 두개의 소스 파일을 수정한다. 참고로 여기서는 linux-2.4.9e.8summit 파일을 기준으로 하였다.
- 내장된 이더넷 카드 드라이버 업데이트 : X440, X335에 내장된 이더넷의 경우 운영체제 설치후 X440은 bcm5700으로 바로 잡히고 x335는 tg3 모듈로 잡힌다. 레드햇외의 배포판은 잘 모르겠지만 AS 2.1과 RH 7.3에 기본적으로 bcm5700 모듈이 들어있다. 그러므로 /etc/modules.conf에서 alias 명을 바꾸어주고 다시 bcm5700으로 모듈을 올리면 bcm5700으로 잡힌다. 그래도 최근 드라이버로 패치할 것을 권장하고 있다.
Broadcom NetXtreme Gigabit Ehernet Drive Update
http://www.pc.ibm.com/qtechinfo/MIGR-43815.html
위 사이트에서 exe 파일을 다운받아 풀면 각 운영체제별로 사용할 수 있는 드라이버가 있다. 리눅스용의 경우는 소스와 SRPM이 있으며 SRPM을 이용하여 RPM을 생성하여 사용하면 편리할 것이다. 리눅스용의 경우 이 글을 쓰는 당시 최신 버전은 2.2.17이며 RH 7.3에는 2.28이 들어있고 AS2.1의 기본 커널인 kernel-2.4.9-e.3.src.rpm에는 2.0.24 버전의 패치가 들어있다 (해당 모듈의 이름은 bcm5700.o).
- AS 2.1은 기본적으로 LVM이 들어있지 않기 때문에 커널 컴파일을 해야한다. RH 7.X에는 기본적으로 LVM이 들어있기때문에 AS 2.1에도 들어있으리라 생각하면 안된다.
** IBM redbook중 리눅스 관련 자료
ㅇ 운영체제 설치후 작업
- 네트워크 설정 : 네트워크 인터페이스 확인, /etc/hosts 설정(rac간 접속을 편하게 하기 위해서 필요)
- 필요한 패키지 업데이트 (보안 및 기능 강화)
- 서버 패키지 관련 작업 : wu-ftpd 설치, telnet, ssh, ftp 설정. xinetd.conf 에 접근할 ip 설정(only_from 이용), rsh 서버 설정(rsh는 여러 노드에 동시에 오라클을 설치할 경우 필요하며 설치이후에는 보안을 위하여 disable 해주거나 제거해주는게 좋을 것이다)
- 추가 패키지 설치 작업 : ncftp(기본들어감), rpmfind(rpm 설치 쉽게), hanterm(필요한 경우), mc(디렉토리 작업 편리하게)
- 스토리지를 붙인 경우 로컬의 HDD보다 스토리지의 HDD를 먼저 읽어들이는 경우 부팅에 문제가 생길 수 있다. (부팅을 위해 SCSI 관련 장비를 먼저 initrd에서 올리므로 문제가 발생함) 이런 경우에는 /etc/modules.conf에서 스토리지와 연결하는 어댑터를 없애고 mkinitrd를 이용하여 initrd 파일을 재생성하여 재부팅하면 된다.
ㅇ Oracle RAC 관련 정보
- 타하드웨어에 비해 IBM X440장비는 위와 같이 몇가지 패치가 필요하다. NUMA 패치(TSC disable)를 해주어야 RAC가 제대로 동작한다. 또한 커널 소스를 가지고 있어야 ocfs 모듈을 컴파일할 수 있다.
- xseries에 운영체제를 리눅스로 하여 Oracle RAC를 설정하는 것과 관련된 자료는 IBM사이트에서 검색하면 나온다. (검색어를 +oracle +linux +xseries ) 해당 자료는 아래의 url에서 볼 수 있다.
http://publib-b.boulder.ibm.com/Redbooks.nsf/9445fa5b416f6e32852569ae006bb65f/90c0f610349ed8e485256ab20064c5aa?OpenDocument&Highlight=0,linux
위 자료는 suse linux 7.2를 기준으로 했으며 Oracle RAC 9.0.1.0, IBM FAStT Storage Manager(하드웨어는 FAStT500), IBM Xserver를 이용하여 Oracle RAC를 구성하고 있다. 두개의 노드 기준이다.
- RAC를 구성할 경우 네트워크가 두개로 구성되며 public의 경우는 100M 이더넷, private는 1G 이더넷으로 구성하고 있다. private는 물론 100M 이더넷으로도 구성가능하지만 각 노드간에 빠른 정보전달을 위하여 기가비트 이더넷을 사용한 것이다.
- 리눅스용 Oracle RAC의 경우 클러스터링 소프트웨어는 오라클에서 직접 제공한다.
- Advanced Server 에서 오라클을 설치하는 경우 문제가 발생한다고 나와있다. binutils 관련하여 에러가 있는데 이에 대한 내용은 아래 자료를 참고하면 된다.
Tips and Techniques: Install and Configure Oracle9i on Red Hat Linux Advanced Server, Aug 2002.
http://otn.oracle.com/tech/linux/pdf/installtips_final.pdf
설치시 링크에러가 발생하는 것에 대하여 어떻게 해결을 하는지 나와있고 또한 Advanced Server에 오라클을 설치하는 경우 어떻게 최적화를 하면 될지에 대하여 나와있다. 그런데 위 자료는 Oracle 9.0.1 기준이며 9.2 대에서는 이 문제가 해결된 듯 하다. 왜냐하면 위에서 말한 binutil을 조정할 필요가 없기 때문이다.
이에 관련한 상세한 자료는 다음의 url을 참고한다.
http://database.sarang.net/?inc=read&aid=12063&criteria=oracle&subcrit=tutorials&record_idx=10&currpg=2
- Oracle RAC 9.0 버전의 경우에는 리눅스 운영체제에서 기본 제공하는 watchdog 을 이용하였는데 9.2.0.1.0에 이어 나온 패치(이것은 웹상에서는 직접 제공하지는 않는듯하며 제품을 구입한 고객에게만 제공하는 것 같다. metalink에 들어가면 볼 수 있을듯. 9.2.0.2.0)를 하면 오라클 자체적으로 해당 기능을 구현한다고 한다. (이부분이 hangcheck-timer인 듯 하다. 참고로 hangcheck-timer rpm을 오라클 자체적으로 제공하는데 ocfs와 같이 summit 패치용 rpm은 따로 제공하지 않지만 smp용 모듈을 설치한후 summit에 모듈을 복사해주면 정상 작동했다. ocfs는 커널과 깊은 연관을 맺지만 hangcheck-timer는 그렇지 않아서 별 문제가 없는 것으로 생각이 된다. 그러나 가장 확실한 것은 소스를 가지고 패치하여 사용하는 것이 아닐까? 아니면 ocfs처럼 커널 소스를 가지고 모듈 컴파일을 해서 사용하거나.)
- watchdog과 연관이 있는 부분이라고 생각이 되는데 오라클에서 hangcheck-timer 라는 rpm을 제공한다. 이 부분이 위에서 말을 한 watchdog 기능을 대체한 것으로 생각이 된다. hangcheck-timer 관련하여 레드햇 7.3에는 해당 모듈이 기본 들어있지는 않다. 이에 대한 자료는 더 검색을 해보아야 할 듯하다. (hangcheck-timer 자체는 공개 소스 형태로 진행되는 듯하다) hangchec-timerk도 오라클에서 제공한다.
(뉴스그룹에서 이와 관련한 논의를 하는곳을 구글에서 찾았다. http://www.uwsg.iu.edu/hypermail/linux/kernel/0301.2/0191.html)
** Oracle RAC를 리눅스에 설치하는 것과 관련된 자료
Step-By-Step Installation of RAC on Linux
http://ocpdba.net/oracle9i_rac/stepbystepRAC.html
==>> 설치과정을 상세하게 설명하고 있다. 9.2.0.2.0패치는 metalink로 링크되어있다.
Tips and Techniques: Install and Configure Oracle9i on Red Hat Linux Advanced Server, Aug 2002.
http://otn.oracle.com/tech/linux/pdf/installtips_final.pdf
==>> AS 2.1에 오라클을 설치하고 최적화하는 방법에 대하여 자세히 나와있다.
Implementing Oracle9i RAC with Linux on IBM xSeries servers
http://publib-b.boulder.ibm.com/Redbooks.nsf/9445fa5b416f6e32852569ae006bb65f/90c0f610349ed8e485256ab20064c5aa?OpenDocument&Highlight=0,linux
==>> IBM xSeries servers에 linux, Oracle RAC 설정하기
리눅스용 Oracle9i 설치가이드 (한글)
http://otn.oracle.co.kr/products/oracle9i/download/oracle9i_for_linux_install.doc
==>> 한국 otn 사이트에 있는 한글 문서입니다. 개략적인 설명만 되어 있습니다.
Linux용 Oracle9i Database Release2 : Red Hat Linux Advanced Server 2.1에서의 성능, 안정성, 관리성 강화
이 백서에서는 Linux 상에서 실행되는 오라클 플랫폼을 더욱 강화시키는 Red Hat Linux Advanced Server의 주요 기능에 대해 간단히 설명합니다. 이러한 기능에는 고성능, 안정성, 관리성 등이 포함되어 있습니다.
http://otn.oracle.co.kr/tech/linux/pdf/9iR2-on-Linux-Tech-WP_Final2.pdf
Red Hat Advanced Server2.1의 Linux Virtual Memory와 Oracle의 메모리 사용 특성
Red Hat Linux Advanced Server 커널과 Linux Virtual Memory 아키텍쳐의 단점이 해결 됨으로써, Oracle과 Linux의 통합이 안정성이 매우 높은 고성능 플랫폼을 제공한다는 결과가 나왔습니다.
http://otn.oracle.com/tech/linux/pdf/1_linuxVM_v2_accepted.pdf
Oracle9i Real Application Clusters 사용에 대한 Linux Logical Volume Manager 및 Linux Metadisk Software RAID의 기능 비교
이 백서에서는 Linux용 Oracle9i RAC를 통해 미션 크리티컬한 환경에서 Logical Volume Manager이나 Metadisk Software RAID의 사용이 가능한지에 대해 상세히 조사하였습니다.
http://otn.oracle.com/tech/linux/pdf/lvm_md_comparison.pdf
일반적인 Linux를 배포해서 인증 받은 오라클 제품 목록을 볼 수 있습니다. 오라클 고객들은 metalink.oracle.com에서 확인해야 합니다.
http://otn.oracle.com/tech/linux/pdf/AllOracleLinux_Certs.pdf
otn 문서자료
http://otn.oracle.co.kr/tech/linux/
Oracle9i Database 에 대한 문서 자료
PDF Oracle9i Database Release 2 Release Notes - Linux
PDF Oracle9i Database Release 2 Install Guide - Linux
PDF Oracle9i Database Release 2 Administrator's Reference Guide
PDF Oracle9i RAC Release 2 Configuration Guide
PDF Oracle9i Database Release Notes Release 9.0.1 for Linux
PDF Oracle9i Database Quick Installation Procedure Release 9.0.1 for Linux
PDF Oracle9i Database Installation Checklist Release 9.0.1for Linux
Latest Linux Technical Presentations from Oracle World - Nov. 2002, Nov 2002
http://otn.oracle.com/oracleworld/ow_linux.html
Oracle Cluster File System FAQ, Nov 2002
http://otn.oracle.com/tech/linux/htdocs/ocfs_faq_110602.html
ㅇ 기타 참고자료
-LVM설정관련 자료
LVM 사이트 http://www.sistina.com/products_lvm.htm
LVM HOWTO http://tldp.org/HOWTO/LVM-HOWTO/
Linux@Work 2001. 09 엔터프라이즈환경을 위한 소프트웨어 RAID와 LVM(정진호)
http://kldp.org/HOWTO/html/LVM-HOWTO/index.html (LVM 하우투 한글 번역 문서)
http://tunelinux.pe.kr/bbs/read.php?table=linuxinfo&no=62 (마소에 나왔던 LVM 사용법을 옮겨 놓은 것입니다)
http://tunelinux.pe.kr/zboard/view.php?id=tip&no=28 (제가 간단하게 LVM 사용법을 적은 것입니다)
The Logical Volume Manager (incl. Raw I/O tips) : http://www.suse.com/en/business/certifications/certified_software/oracle/docs/lvm_whitepaper.pdf
- watchdog 자료
커널 소스의 문서 디렉토리에도 watchdog 에 대해서는 자세하게 나와 있지 않다. 위에서 설치문서들을 보면 watchdog 설정 부분이 있으므로 어렵지 않게 해결할 수 있을 것이다. 그런데 위에서 설명했듯이 Oracle RAC release 2 패치에서는 watchdog을 대체하는 프로그램을 제공하고 있다.
http://tunelinux.pe.kr/zboard/view.php?id=tip&no=27 (제가 간단하게 watchdog 사용법을 적은 것입니다)
- raw device
레드햇은 raw device를 사용하도록 준비가 이미 되어있다. AS 2.1 설치시 /etc/sysconfig/rawdevice 에 설정을 하고 /etc/rc.d/init.d/rawdevice start 해주면 된다.
- Oracle + PHP + Apache 연동
Apache은 DSO 방식으로 컴파일되어있을 경우 간단하게 PHP와 연동을 할 수 있다.
PHP를 연동할 웹서버에 Oracle Client 가 설치되어 있어야 한다. Oracle client에서 oracle call interface만 설치해주면 된다. ($ORACLE_HOME/rdbms/demo/oci.h 등의 파일이 필요함.)
이에 대한 상세한 내용은 다음의 자료를 참고한다.
http://tunelinux.pe.kr/zboard/view.php?id=tip&no=12
물론 사전에 tnsnames.ora 설정이 제대로 되어 있고 sqlplus를 이용하여 서버로 접속이 가능한지 먼저 점검해야한다.
- suse + Oracle 자료
http://www.suse.com/us/business/certifications/certified_software/oracle/
수세를 이용할 경우 참고하면 될 듯하다.
댓글