11gR2 향상된 ASM(ADVM 과 ACFS) (Oracle 11g R2 11.2.0.2.0) Author: Hyun-Ho, Jung Site: http://www.commit.co.kr E-MAIL: admin@commit.co.kr cleanto@naver.com Creation Date: 2011-06-01
DBMS Install Document Server Information Items Description Test Date 2011 / 06 / 01 CPU Intel(R) Xeon(R) CPU X5620 @ 2.40GHz X 8 Main Memory 1GB O/S version RHEL 5.5 Host Name ATHENA ORACLE_SID ATHENA Oracle version 11.2.0.2 DBMS Install Document 1 of 16
ADVM 11gR2 ASM 에서새롭게나온기능이며해당기능하나로벤더혹은 3 rd party 볼륨제품군을사용하지않아도 될만큼훌륭한기능이다. ADVM 과 ACFS 를사용하기이전에 ADVM 이라는의미를이해해야한다. ADVM 은 ASM Dynamic Volume Manager 의약자이며용어대로 ASM 의볼륨을관리하는기능이다. 위의그림이 ADVM 과 ACFS 를설명해주는가장손쉬운그림이다. ASM DISK GROUP 위에 ADVM 이존재하며 ADVM 을통해 ASM Volume 생성및 ACFS 기능을이용할수있다. ADVM 은 linux, aix, hp-ux 에서사용중인볼륨서비스인 LVM 과유사하다고볼수있다. LVM 은여러개의 Disk 를 Volume Group 으로만든후 logical volume 을생성한후 Rawdevice 나 mount 하여 filesystem 영역에사용하게되는데이와유사하다고할수있다. ASM 의경우여러개의 Disk 를하나의 ASM Disk Group 으로생성하여사용하게된다. 10g,11gR1 까지는이렇게생성된 ASM Disk Group 내에 datafile 을위치시켜사용하였다. ADVM 2 of 16
11gR2 는여기서좀더진보하여 LVM 과유사하게 ASM Disk Group 에서 volume 을생성할수있다. 해당 Volume 은 rawdevice 로사용가능하며, mount 하여 OS 의 filesystem 영역으로사용가능하며, ADVM 에서제공하는 ACFS 를이용하여 Cluster file system 을사용할수있게된다. 볼륨은오라클데이터베이스의데이터파일이아닌 OS 의파일시스템의볼륨으로표현된다. ADVM 과관련디바이스드라이버는동적볼륨과 ASM 클러스터파일시스템간에인터페이스를제공한다. ASM 동적볼륨에는 NTFS 와같은다른파일시스템으로도운영될수있다. ASM 의장점중에하나인 ASM Disk GROUP 내에존재하는 Disk 에아주균등하게 Striping 되어 ASM AU 가분배되어 어느 Storage 기능보다 I/O 성능을보장받을수있다는것은익히알려진내용이며, ACFS 를사용하게되면 Cluster file system 의편의성과 ASM 의고성능 I/O 성능을사용할수있는기술이라고할수있다. ADVM 3 of 16
ADVM TEST ASM Volume 1. sysasm => sysdba 11gR2 에서변경된것이 ASM 인스턴스접속관리자권한이 sysdba 에서 sysasm 권한으로변경되었다는것이다. asm 인스턴스에접속해서히든파라미터를조회하면 11gR1 과 R2 가다른것을 확인할수있다. COL PARAM FORMAT A60 HEADING "Parameter Name" WRAP COL DESCRIPTION FORMAT A64 HEADING "Parameter Description" WRAP COL DFLT FORMAT A7 HEADING "Default Values" COL ISSES_MODIFIABLE FORMAT A10 HEADING "IsSession Modifiable" COL ISSYS_MODIFIABLE FORMAT A10 HEADING "IsSystem Modifiable" SELECT RPAD(I.KSPPINM, 35) ' = ' V.KSPPSTVL AS PARAM, I.KSPPDESC DESCRIPTION, DECODE(V.KSPPSTDF,'FALSE','F','TRUE','T') AS DFLT, P.ISSES_MODIFIABLE, P.ISSYS_MODIFIABLE FROM X$KSPPI I, X$KSPPCV V, V$PARAMETER P WHERE V.INDX = I.INDX AND V.INST_ID = I.INST_ID AND I.KSPPINM = P.NAME(+) AND I.KSPPINM ='_asm_admin_with_sysdba' ORDER BY I.KSPPINM; 위쿼리의결과에서보면 11gR1 Name --------------------------------------------------------- _asm_admin_with_sysdba = TRUE 11gR2 Name ------------------------------------------------------------ _asm_admin_with_sysdba = FALSE 해당파라미터의 Description 에는아래와같이 ASM 의관리자권한을 sysdba 인지 여부를결정하는것을알수있다. Does the sysdba role have administrative privileges on ASM? ADVM TEST 4 of 16
11gR1 까지는 true 로되어있으며 export ORACLE_SID=+ASM 지정후 sqlplus " /as sysdba" 로 ASM 인스턴스내로접근할수있었지만 11gR2 부터는 grid 유저로 sqlplus " /as sysasm" 으로접속해야한다. 그렇기때문에사용의편의성을위해 sysdba 를사용하기위해 11gR2 에서파라미터수정을하겠다. SQL> alter system set "_asm_admin_with_sysdba"=true scope=spfile; db 종료 => asm 재시작 => db 구동순으로작업하면된다. 필수사항은아니며, 11gR2 부터는 sysasm 를사용해야한다는것이변경된점이다. 2. Volume Creation ASM 인스턴스를접속하여볼륨을생성한다. 아래쿼리로조회해보면사용중인용량과여유용량을알수있다. set lines 400 col name for a30 select name,state,type,total_mb,free_mb from v$asm_diskgroup; TOTAL_MB FREE_MB ---------- ---------------------- 32496 26065 약 26000MB 가여유공간으로조회되고있다. 10000MB 의볼륨을할당하겠다. 명령어는아래와같다 alter diskgroup DATA add volume arch size 10000m; DATA 는 ASM DISK GROUP 이름이고 arch 는 volume 명이다. 생성후 OS 에서 /dev/asm 을조회해보면 OS 디바이스가생성된것을확인할수있다. ls -l /dev/asm/ total 0 brwxrwx--- 1 root dba 252, 226817 Jun 1 23:24 arch-443 ADVM TEST 5 of 16
arch-443 으로디바이스가생성되었고 -443 은디스크그룹에대한고유번호이다. 이번호는시스템에의해자동으로할당된다. 쿼리로조회해보면 set lines 500 col usage for a20 col volume_name for a20 col mountpath for a30 col volume_device for a30 col mountpath for a30 select volume_name,size_mb,volume_number,state,usage,volume_device,mountpath from v$asm_volume; 아래와같은내용이조회할수있다. 3. Volume Resize 10000MB 로생성된 arch 볼륨을 resize 시키려면아래와같다. Increase SQL> alter diskgroup DATA resize volume arch size 10005m; Reduce SQL> alter diskgroup DATA resize volume arch size 9500m; 4. Volume Delete 생성된볼륨을삭제하기위해서아래와같다. alter diskgroup DATA drop volume arch; ADVM TEST 6 of 16
5. Volume Status Change 볼륨활성화 SQL> alter diskgroup DATA enable volume arch; => 볼륨생성후 default 는바로 enable 상태임으로활성화할필요는없다. 볼륨비활성화 SQL> alter diskgroup DATA disable volume arch; RAWDEVICE 1. RAWDEVICE test 라는볼륨을하나생성하여 rawdevice 로사용가능한지를테스트해본다. SQL> alter diskgroup DATA add volume test size 10m; root 유저로 /dev/asm 으로이동한뒤소유권을변경한다. # chown oracle:dba test-443 oracle 유저로 Database 로접속하여테이블스페이스를생성한다. SQL> create tablespace test datafile '/dev/asm/test-443' size 8m; 조회해보면정상적으로 Tablespace 가생성되었음을확인할수있다 TABLESPACE_NAME FILE_NAME ------------------------------ ---------------------------------------- SYSTEM +DATA/athena/datafile/system01.dbf SYSAUX +DATA/athena/datafile/sysaux01.dbf UNDOTBS1 +DATA/athena/datafile/undotbs01.dbf USERS +DATA/athena/datafile/users01.dbf TEST /dev/asm/test-443 ADVM TEST 7 of 16
테이블생성하고데이터를 insert 하고조회해보면 ASM volume 으로 Rawdevice 로사용가능하다는것을확인할수있다. Filesystem 1. Filesystem 위에서설명했듯이 ASM 볼륨으로 OS 일반파일시스템으로도사용가능하다. 백업을위한볼륨을생성하고 mount 를해서사용하겠다. SQL> alter diskgroup DATA add volume backup size 10000m; root 유저로 mkfs 후 mount 를실행한다. mkfs -t ext3 /dev/asm/backup-443 mount /dev/asm/backup-443 /backup ADVM TEST 8 of 16
[root@athena trace]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/os_vol-root_vol 39G 17G 21G 44% / /dev/hda1 289M 17M 257M 7% /boot tmpfs 2.0G 567M 1.5G 28% /dev/shm /dev/asm/backup-443 9.9G 151M 9.2G 2% /backup df h 로보면정상적으로 /backup 에 mount 된것을확인할수있다. rman 으로백업을수행해서 /backup 파일시스템을정상사용가능한지확인하겠다. rman> backup incremental level 0 database format '/backup/df_%d_%s_%p.bus' [oracle@athena:/backup]$ ls -l total 449324 -rw-r----- 1 oracle dba 20905984 Jun 2 00:19 df_athena_2_1.bus -rw-r----- 1 oracle dba 417832960 Jun 2 00:23 df_athena_3_1.bus -rw-r----- 1 oracle dba 20905984 Jun 2 00:23 df_athena_4_1.bus /backup 위치에정상적으로백업되는것을확인할수있으며, 해당파일시스템을정상적으로사용가능하다는것을확인할수있다 ASM 볼륨을이용하여 mount 한내역을다음부팅에서도 mount 되게하기위해서는 OS 의 fstab 등에기록하지않고 acfsutil 이라는새로운 utility 를이용한다. registry 라는옵션을사용하며커맨드는아래와같다. acfsutil registry -a /dev/asm/backup-443 /backup 등록해놓으면 grid 의 resource 기동순서는아래와같이된다. ASM => DISKGROUP => Mount => Database start ADVM TEST 9 of 16
ACFS 1. ACFS ACFS 는강인성, 일반용도, 익스텐트기반, 저널링파일시스템을제공하여 ASM 을확장한다. ACFS 는오라클이진파일 ( 바이너리 ), 리포트파일, 추적파일 (Trace), 경보로그 (alert log), 그외애플리케이션데이터파일들을지원한다. ACFS 가추가됨으로서 ASM 은오라클데이터베이스와비 - 데이터베이스파일들을모두지원하는완전한저장장소관리솔루션이된다. ACFS 는소용량파일에서대용량 ( 엑사바이트 ) 파일까지확장되며, 클러스터내의수많은노드들을지원한다. ACFS 는고성능을제공하고, 파일시스템의무결성및신속한복구를위한로그기반메타데이터트랜잭션엔진을사용하기위한익스텐트기반파일시스템이다. ACFS 디스크구조는엔디언 (edian) 중립메타데이터를지원한다. ACFS 파일시스템은 NFS 및 CIFS 와같은산업표준프로토콜을이용하여원격클라이언트에게제공될수도있다. ACFS 는단일노드뿐만아니라, RAC 와같은그리드컴퓨팅환경에서모든파일타입관리를단순화하며, 써드파티 (Third Party) 클러스터파일시스템의도입및구입의필요성을감소시킨다. ACFS 는데이터베이스를정지하지않고동적파일시스템의확장및축소를지원한다. ACFS 는하드웨어 RAID 기능에추가하여 ASM 미러링및스트라이핑기능을사용할수있도록함으로서고가용성을제공한다. 2. mkfs t acfs arch 이름으로 9000MB 용량으로생성한다. SQL> alter diskgroup data add volume arch size 9000m; filesystem 사용하듯이 mkfs 작업을실행한다. ADVM TEST 10 of 16
# mkfs -t acfs /dev/asm/arch-443 mkfs.acfs: version = 11.2.0.2.0 mkfs.acfs: on-disk version = 39.0 mkfs.acfs: volume = /dev/asm/arch-443 mkfs.acfs: volume size = 9663676416 mkfs.acfs: Format complete. mount 시에도 t(type) 을지정해준다. # mount -t acfs /dev/asm/arch-443 /arch df h 로조회해보면아래와같이 mount 된것을확인할수있다. /dev/asm/arch-443 9.0G 55M 9.0G 1% /arch acfsutil 의 info fs 옵션으로확인해보며아래와같다 # acfsutil info fs /arch ACFS Version: 11.2.0.2.0 flags: MountPoint,Available mount time: Thu Jun 2 00:44:41 2011 volumes: 1 total size: 9663676416 total free: 9606504448 primary volume: /dev/asm/arch-443 label: flags: Primary,Available,ADVM on-disk version: 39.0 allocation unit: 4096 major, minor: 252, 226818 size: 9663676416 free: 9606504448 ADVM diskgroup DATA ADVM resize increment: 268435456 ADVM redundancy: unprotected ADVM stripe columns: 4 ADVM stripe width: 131072 number of snapshots: 0 snapshot space usage: 0 ASM 인스턴스에서조회하면 USAGE 에는 ACFS 로 MOUNTPATH /arch 로볼륨정보및 ACFS 에대한조회가가능하다. ADVM TEST 11 of 16
위에서언급했듯이 mount 정보를 acfsutil 을이용하여 mount 정보를등록한다. # acfsutil registry -a /dev/asm/arch-443 /arch acfsutil registry: mount point /arch successfully added to Oracle Registry 3. ACFS Resize 위에서벤더및 3 rd party 볼륨제품군을사용하지않아도될만큼고가용성을 느낄수있는부분이다. HP-UX 기준으로 LVM Version1 을사용하기때문에 online 중에볼륨추가 및 resize 가되지않는다고한다. Cluster 일경우한쪽노드의 LVM 의변경사항을 export 한후 import 해줘야하는 번거러움도존재한다. Linux 기준으로 LVM 사용시 Volume resize 후 Filesystem 에서따로 resize2fs 작업이동반되지만 ACFS 는명령어한줄로아주빠르게 Online Resize 가가능하다. 물론파일시스템 umount 하지않아도된다. ASM DISK GROUP 의여유공간이있다면해당공간만큼증가시킬수있다 ASM 의장점중한가지는 ASM DISK GROUP 에신규 DISK 를추가시 Online 추가및 Rebalance 기능이다. 정리하면 ASM 을사용하면서용량부족에대한부분 Downtime 없이 가능하다는것이다. ASM DISK GROUP 에서새로운 LUN / DISK 를 Online 으로추가하여 DISK GROUP 의용량을증가시킨후 ASM Volume 증가순서로작업하게되면 Downtime 없는고가용성용량추가가가능하다. 위에서 asm volume 의 resize 는 ASM 인스턴스내에서아래커맨드형태로 진행하였다. SQL> alter diskgroup DATA resize volume arch 10000m; ADVM TEST 12 of 16
하지만볼륨이 ACFS 로적용되었다면 acfsutil 로 resize 를진행한다. acfsutil 로 resize 를하게되면 volume 도 resize 되면서 Filesystem 도 resize 가적용된다. 현재 9000MB 로되어있는 arch 볼륨을 15000MB 으로늘려보겠다. root 로작업하며, 커맨드는아래와같고 linux 의 time 명령어로시간을 측정해보았다. # time acfsutil size 15000m /arch acfsutil size: new file system size: 15837691904 (15104MB) real user sys 0m0.060s 0m0.009s 0m0.014s 9000MB 에서 15000MB 로변경되었으며 6000MB 로크지않은용량이지만 1 초미만의빠른처리를보여주고있다. df h 로확인해보면 filesystem 이 15000MB 로증가된것을확인할수있다 /dev/asm/arch-443 15G 67M 15G 1% /arch ASM 인스턴스내에서 ASM Volume 을조회하면아래와같이 ARCH volume 사이즈도같이늘어난것을확인할수있다. ADVM TEST 13 of 16
Conclusion 1. acfstuil 리눅스 / 유닉스및윈도우에서지원되지않는새로운 ACFS 명령어는다음과같다. acfsutil info fs acfsutil snapshot - Display ACFS file and file system features and information - create and display ACFS snapshots acfsutil registry - Registry an ACFS file system with the ACFS mount registry 마운트포인트를등록하는옵션으로써다음부팅때 clusterware 가올라오면마운트가된다. RAC 의경우한쪽노드에서실행하면된다. acfsutil registry -a /dev/asm/backup-443 /backup - mount 정보등록 acfsutil registry -d /backup - mount 정보삭제 acfsutil rmfs acfsutil size - Remove unmounted ACFS file system - resize an ACFS file system # acfsutil size 20G /backup/arch/ acfsutil 명령어를실행시키면더많은옵션에사용에대한정보를볼수있다 2. only MS-Windows Command 아래의명령어가윈도우파일관리 API 가 ACFS 파일시스템에통합되었으며다음명령들이관리명령에추가되었으며, 윈도우 OS 에서만가능하다. - acfschkdsk - acfsformat - acfsmountvol - acfsdiskmount - ACFS 파일시스템생성 acfsformat [/vf] [/b blksz] [/n name] device [blocks] ADVM TEST 14 of 16
- ACFS 파일시스템마운트 acfsmountvol [/all] [/v] - ACFS 파일시스템언마운트 acfsdismount [/v] [/p] [/P] path - ACFS 파일시스템체크및수리 acfschkdsk [/a] [/v] [/n] [/f] [info] device 3. Overall rating 모사이트에서 solaris 에서 Veritas Volume manager 를사용하는것을본적이있다. LINUX/UNIX 중유일하게 solaris 만 LVM 이존재하지않고 SVM 을이용하여볼륨을관리하는데해당담당자는 SVM 이불편하여 Veritas 제품을사용한다고말한적이있었다. 위에서테스트해봤듯이 ASM 볼륨은어느볼륨시스템보다쉽고간편하게 사용할수있는장점이있어서 OS 볼륨관리를위해서도충분히사용해볼 만하다라고생각되며 grid infrastructure + ASM 이생성되어있다면바로 볼륨서비스및 ACFS 를사용가능하기에가격면에서도 3 rd Party 보다저렴할듯도하다. Test 해본결과상당히좋은기능임을알수있으며, 현재테스트환경에서는 datafile 이 ASM 영역내에존재하지만 db 생성전 ASM 볼륨 +ACFS 를준비 해놓는다면 cluster file system 영역에바로 DB 를생성할수있다. 이렇게구성이된다면 ASM 을사용하지만 ASM 내에존재하는것은 OCR / VOTE 만이 ASM 내에존재하게되므로 11gR2 RAC 에서도 datafile 에대한관리가쉬워진다고볼수있다. ADVM TEST 15 of 16