오라클(Oracle) 11gR2 NF(New Features) - 향상된 ASM(ADVM 과 ACFS)

Share

Last Updated on 11월 7, 2021 by Jade(정현호)

안녕하세요 
이번 포스팅은 오라클 11gR2 ASM NF(New Features) 중 ADVM 과 ACFS 에 관한 문서 입니다. 




1. 테스트 환경


Test Date : 2011/06/01
CPU : Intel(R) Xeon(R) CPU X5620 @ 2.40GHz X 8
Memory : 1GB
O/S : RHEL 5.5

Hostname : ATHENA
ORACLE_SID : ATHENA
Oracle version : 11.2.0.2



2. 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 을 위치 시켜 사용하였다


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 filesystem 의 편의성과 ASM 의 고성능 I/O 성능을 사용할 수 있는 기술이라고 할 수 있다.


관련 하여 ADVM 의 사용 및 지원 가능한 기능 등을 테스트 진행 하도록 하겠다.


2-1 ASM Volume

2-1-1 sysasm


s11gR2 에서 변경 된 것이 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"


SQL> 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?


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-1-2 Volume Creation

ASM 인스턴스를 접속하여 볼륨을 생성한다. 아래쿼리로 조회해보면 사용중인 용량과 여유 용량을 알 수 있다.

SQL> set lines 400
SQL> col name for a30
SQL> select name,state,type,total_mb,free_mb 
from v$asm_diskgroup;

TOTAL_MB    FREE_MB
---------- ----------------------
     32496            26065



약  26000MB가 여유 공간으로 조회되고 있다.  10000MB의 볼륨을 할당 하겠다. 
명령어는 아래와 같다

SQL> alter diskgroup DATA add volume arch size 10000m;



DATA는 ASM DISK GROUP 이름이고arch 는 volume 명이다. 
생성 후 OS에서 /dev/asm 을 조회해보면 OS 디바이스가 생성된 것 을 확인할 수 있다.

oracle ~]$ ls -l /dev/asm/
total 0
brwxrwx--- 1 root dba 252, 226817 Jun  1 23:24 arch-443



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


SQL> select volume_name,size_mb,volume_number,state,
usage,volume_device,mountpath 
from v$asm_volume;

VOLUME_NAME       SIZE_MB        VOLUME_NUMBER         STATE          USAGE          VOLUME_DEVICE        MOUNTPATH
--------------  --------------- ------------------ -------------- ------------- ----------------------- ---------------
 ARCH              10240                    1         ENABLED                     /dev/asm/arch-443        



2-1-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;



2-1-4 Volume Delete

생성 된 볼륨을 삭제 하기 위해서는 아래와 같이 실행 하면 된다.

SQL> alter diskgroup DATA drop volume arch;



2-1-5 Volume status Change

• 볼륨 활성화

SQL> alter diskgroup DATA enable volume arch;
 -- 볼륨 생성 후 default 는 바로 enable 상태 임으로 활성화 할 필요는 없다.



• 볼륨 비활성화

SQL> alter diskgroup DATA disable volume arch;



2-2 RAWDEVICE

2-2-1 RAWDEVICE 생성

test 라는 볼륨을 하나 생성하여 rawdevice 로 사용가능한지를 테스트 해본다.

• 볼륨 생성

SQL> alter diskgroup DATA add volume test size 10m;



• 소유권을 변경(root 유저 수행)

[root]# cd /dev/asm
[root]# 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  <---



2-2-2 데이터 생성 및 조회

테이블 생성 하고 데이터를 insert 하고 조회 해보면 ASM volume 으로 Rawdevice 로 사용가능 하다는 것을 확인 할 수 있다.

-- 테이블 생성
SQL> create table test
(no number)
tablespace test;


-- 데이터 Insert
SQL> insert into test
values(1);


-- 조회
SQL> select * from test;

        NO
----------
        1



2-3 FILESYSTEM

2-3-1 FILESYSTEM 생성

위에서 설명했듯이 ASM 볼륨으로 OS  일반 파일시스템으로도 사용 가능하다 

백업을 위한 볼륨을 생성하고 mount 를 해서 사용하겠다.


• 볼륨 생성

SQL> alter diskgroup DATA add volume backup size 10000m;



• root 유저로 mkfs 후 mount 를 실행

[root]# mkfs -t ext3 /dev/asm/backup-443


[root]# mount /dev/asm/backup-443 /backup


[root]# 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 된 것을 확인 할 수 있다. 


2-3-2 파일시스템 사용 테스트

위에서 생성한 /backup 파일시스템 위칭 rman 으로 백업을 수행해서 정상 사용 가능한지 확인 하겠다.

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 위치에 정상적으로 백업되는 것을 확인 할 수 있으며, 해당 파일시스템을 정상적으로 사용 가능하다는 것을 확인 할 수 있다


2-3-3 acfsutil

ASM 볼륨을 이용하여 mount 한 내역을 다음 부팅에서도 mount 되게 하기 위해서는 OS의 fstab 등에 기록하지 않고 acfsutil 이라는 새로운 utility를 이용한다.


registry 라는 옵션을 사용하며 커맨드는 아래와 같다.

[root]# acfsutil registry  -a /dev/asm/backup-443 /backup


등록해 놓으면 grid 의 resource 기동 순서는 아래와 같이 된다.
ASM => DISKGROUP => Mount => Database start



3. ACFS 

3-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 미러링 및 스트라이핑 기능을 사용할 수 있도록 함으로서 고가용성을 제공한다.


3-2 ACFS 생성

먼저 arch 이름으로 9000MB 용량으로 생성을 진행 한다.

SQL> alter diskgroup data add volume arch size 9000m;



filesystem 사용하듯이 mkfs 작업을 실행한다.

[root]# 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) 을 지정해준다.

[root]# mount -t acfs /dev/asm/arch-443 /arch



df –h 로 조회 해보면 아래와 같이 mount 된 것을 확인 할 수 있다.

[root]# df -h | grep arch

/dev/asm/arch-443     9.0G   55M  9.0G   1% /arch



acfsutil 의 info fs 옵션으로 확인해보며 아래와 같다

[root]# 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에 대한 조회가 가능하다.

USAGE        VOLUME_DEVICE        MOUNT_PATH
----------- -------------------- ------------
             /dev/asm/test-443
ACFS         /dev/asm/arch-443    /arch



위에서 언급 했듯이 mount 정보를 acfsutil 을 이용하여 mount 정보를 등록한다.

[root]# acfsutil registry  -a /dev/asm/arch-443 /arch
acfsutil registry: mount point /arch successfully added to Oracle Registry



3-3 ACFS Resize

이 기능은 Vendor 및 3rd 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 없이 가능하다는 것이다.

A
SM DISK GROUP 에서 새로운 LUN / DISK 를 Online 으로 추가하여 DISK GROUP 의 용량을 증가 시킨 후 ASM Volume 증가 순서로 작업하게 되면 Downtime 없는 고가용성 용량 추가가 가능하다.


위에서 asm volume 의 resize 는 ASM인스턴스 내에서 아래 커맨드 형태로 진행 하였다.

SQL> alter diskgroup DATA resize volume arch 10000m;



하지만 볼륨이 ACFS 로 적용 되었다면 acfsutil 로 resize 를 진행한다.

acfsutil 로 resize 를 하게 되면 volume 도 resize 되면서 Filesystem 도 resize 가 적용된다.

현재 9000MB로 되어있는 arch 볼륨을 15000MB으로 늘려 보겠다. root 유저로 작업하며, 커맨드는 아래와 같고 linux 의 time 명령어로 시간을 측정 해보았다.

[root]# time acfsutil size 15000m /arch
acfsutil size: new file system size: 15837691904 (15104MB)

real    0m0.060s
user    0m0.009s
sys     0m0.014s



9000MB 에서 15000MB로 변경 되었으며 6000MB로 크지 않은 용량 이지만 1초 미만의 빠른 처리를 보여주고 있다. df –h 로 확인해보면 filesystem 이 15000MB로 증가 된 것을 확인 할 수 있다

[root]# df -h | grep arch
/dev/asm/arch-443      15G   67M   15G   1% /arch



ASM 인스턴스 내에서 ASM Volume 을 조회하면 아래와 같이ARCH volume 사이즈도 같이 늘어난 것을 확인 할 수 있다.

VOLUME_NAME SIZE_MB  VOLUME_NUMBER  STATE
----------- ------- -------------- -------
TEST           256              1  ENABLED
ARCH         15104              2  ENABLED




4. Conclusion

4-1 acfsutil

새로운 ACFS 명령어는 다음과 같다.

acfsutil info fs - Display ACFS file and file system features and information	
acfsutil snapshot - create and display ACFS snapshots
acfsutil registry - Registry an ACFS file system with the ACFS mount registry
    마운트 포인트를 등록하는 옵션으로써 다음 부팅때 clusterware 가 올라오면 마운트가 된다.  
    RAC의 경우 한쪽노드에서 실행하면 된다.

    -- mount 정보 등록
    acfsutil registry  -a /dev/asm/backup-443 /backup - mount 정보 등록

    -- mount 정보 삭제
    acfsutil registry -d /backup - mount 정보 삭제


acfsutil rmfs - Remove unmounted ACFS file system
acfsutil size - resize an ACFS file system
        #  acfsutil size 20G /backup/arch/


acfsutil 명령어를 실행시키면 더 많은 옵션에 사용에 대한 정보를 볼 수 있다


4-2 Only Windows Command

아래의 명령어가 윈도우 파일 관리 API가 ACFS 파일 시스템에 통합 되었으며 다음 명령들이 관리 명령에 추가 되었으며, 윈도우 OS에서만 가능하다.

- acfschkdsk
- acfsformat
- acfsmountvol
- acfsdiskmount


- ACFS 파일 시스템 생성
acfsformat [/vf] [/b blksz] [/n name] device [blocks]


- ACFS 파일 시스템 마운트
acfsmountvol [/all] [/v]


- ACFS 파일 시스템 언마운트

acfsdismount [/v] [/p] [/P] path


- ACFS 파일 시스템체크 및 수리

acfschkdsk [/a] [/v] [/n] [/f] [info] device


4-3 Overall rating

모 사이트에서 solaris 에서 Veritas Volume manager 를 사용하는 것을 본적이 있다.

LINUX/UNIX 중 유일하게 solaris 만 LVM이 존재 하지 않고 SVM 을 이용하여 볼륨을 관리하는데 해당 담당자는 SVM 이 불편하여 Veritas제품을 사용한다고 말한적이 있었다.

위에서 테스트 해봤듯이 ASM 볼륨은 어느 볼륨 시스템 보다 쉽고 간편하게 사용할 수 있는 장점이 있어서 OS 볼륨 관리를 위해서도 충분히 사용해볼만 하다라고 생각되며 grid infrastructure + ASM 이 생성 되어있다면 바로 볼륨서비스 및 ACFS를 사용가능하기에 가격 면에서도 3rd Party 보다 저렴할 듯도 하다.

Test 해본 결과 상당히 좋은 기능임을 알 수 있으며, 현재 테스트 환경에서는 datafile 이 ASM영역내에 존재 하지만 db생성 전 ASM 볼륨 +ACFS 를 준비 해놓는다면 cluster file system 영역에 바로 DB를 생성 할 수 있다.

이렇게 구성이 된다면 ASM을 사용하지만 ASM내에 존재 하는 것은 OCR / VOTE 만이 ASM내에 존재 하게 되므로 11gR2 RAC 에서도 datafile 에 대한 관리가 쉬워진다고 볼 수 있다.

11gR2 NF 이기 때문에 좀더 익숙해지고 좀더 Test를 통해 ASM을 더 정확하게 알게 된다면 충분히 11gR2 NF중 쓸모 있는 기능이 될 듯 하다.


PDF 파일 버전 다운로드



관련된 다른 글

 

 

 

 

 



0
글에 대한 당신의 생각을 기다립니다. 댓글 의견 주세요!x