프린트 하기
출처 : 
http://blog.naver.com/vxxv122/130128299889

「ASM」

정의

→ 오라클 파일을 통합적으로 관리하는 것.

    어렵게 얘기하면 Volumn Manager와 File System이 오라클 데이터베이스 서버로 구성된 것.

이점

1 . 효율적인 디스크 자원 관리

→ 기존의 DB관리에서는 디스크 삭제,변경,추가시 테이블 스페이스 이동이나 테이블 재편성 작업이 많음

     ASM에서는 추가시 디스크 그룹내의 디스크에 골고루 배분하고, 삭제시 남아 있는 디스크에 자동으로 옳긴다.

2 . 자원의 물리적 장애에 대한 관리 향상

→ Mirroring과 Striping

3 . 디스크 I/O의 효율적 분산

→ AU(Allocation Unit) 이라는 하나의 작은 단위로 데이터를 쪼개어 물리적으로 서로 다른 디스크에 번갈아 분산하

    여 기록함으로써 디스크 Hot-Spot 현상을 방지.

ASM과 OS 파일시스템의 차이

1 . 데이터베이스 설치

 순서

 OS 파일시스템

 ASM

1

 필요한 디스크 자원의 용량산정

 필요한 디스크 자원의 용량산정

2

 폴륨메니저, 파일시스템 인스톨 및 설정

 ASM 인스톨

3

 I/O 분산을 위한 디스크 구성 설계

 디스크 그룹 생성

4

 Logical 볼륨 생성

 데이터베이스 인스톨

5

 파일시스템 생성

 데이터베이스 생성

6

 데이터베이스 인스톨

 

7

 데이터베이스 생성

 

 

2 . 디스크 추가

순서

 OS 파일시스템

 ASM

1

 디스크 추가

 디스크 추가

2

 볼룸매니저를 통한 볼륨그룹 생성

 디스크 추가 SQL문 수행

3

 파일시스템 생성

 

4

 데이터를 추가된 공간으로 이동

 

5

 데이터베이스 파일 리네임

 

6

 I/O 튜닝

 

 

3 . 디스크 I/O 튜닝

순서

 OS 파일시스템

 ASM

1

 디스크 I/O에 대한 일일 모니터링

 N/A

2

 Hot-Spot 발견

3

 Hot-Spot 을 없애기 위한 계획 수립

4

 계획된 공간으로 데이터 이동

5

 데이터베이스 파일 리네임

6

 Hot-Spot 현상이 없어졌는지 검증

 

 

구성요소

1 . 디스크 그룹

(1) Stripe 와 AU

→ 데이터를 기록할 때 AU를 설정하여 AU단위로 데이터를 쓰게 된다. 데이터를 쓸 때 서로다른 물리적 디스

    크에 나누어 기록 함으로써 Stripe 기능을 지원한다.

→ AU 의 옵션

    Coarse : 1 MB

    Fine Grained : 128 KB

(2) Mirroring 과 Failure 그룹

→ Mirroring 을 설정하려고 하면 Failure Group을 설정하여 서로 다른 Failure 그룹 사이의 미러링을 구성

    할 수 있다.

    디스크 장애시 다른 컨트롤러에 미러링된 데이터를 읽을 수 있도록 설정 할 수 있다.

(3) Disk Group 내의 Rebalance

→ 일반적으로 새로운 디스크를 추가하게 되면 디스크 I/O 를 고려하여 데이터 파일과 테이블 스페이스를 재

    분배 하는데 많은 시간을 할당 한다.

    Rebalance는 디스크 I/O의 집중 현상을 감소 시켜준다.

    Rebalance는 다음과 같은 상황에 발생한다.

1) 디스크 추가

2) 디스크 제거

3) 디스크 그룹 Mount, UMount, Check에서 Rebalance 이벤트 발생시

4) Alter Diskgroup 그룹명 Rebalance 속도(1~11까지)

2 . 디스크

(1) Logical Unit Number ( LUN )

(2) Network-Attached File

3 . ASM Instance

→ ASM 인스턴스는 디스크 그룹에 대한 정보를 수집하고 수집된 정보를 ASMB 프로세스를 통해 데이터베이스

    인스턴스에 전달하는 역할

    항상 존재하는 것이 아니라 DB 인스턴스가 요구 할 때만 존재함.

4 . ASM Process

(1) ASMB

→ ASM 인스턴스와 DB 인스턴스 사이에 정보를 교환하는 역할을 함

(2) RBAL

→ 디스크 그룹에 대한 Rebalance 를 감독 및 관리하는 역할을 함

(3) ARBn ( ARB1, ARB2, ... )

→ 디스크 그룹에 대한 Rebalance 를 수행하는 역할을 함. RBAL의 관리하에 수행.

 

시작 및 종료

1 . ASM 인스턴스 시작

2 . Diskgroup Mount

3 . DB 인스턴스 시작

4 . DB 인스턴스 종료

5 . ASM 인스턴스 종료

 

→ Startup 옵션

 옵션

 설명

 Force

 이전 프로세스를 Abort로 Shutdown 하고 인스턴스 재시작

 Mount, Open

 ASM 인스턴스 시작, 디스크 그룹 마운트

 Nomount

 ASM 인스턴스 시작, 디스크 그룹 노마운트

 

→ Shutdown 옵션

 옵션

 설명

 Normal

 DB와 상동

 Immediate, Transactional

 Abort

 

 

생성

1 . dd 명령어를 이용해 Block Device 생성 ( root 계정 )

→ dd if = /dev/zero of = /u03/asm_disk/disk1 bs=1024k count=400;

    dd if = /dev/zero of = /u03/asm_disk/disk2 bs=1024k count=400;

2 . losetup 명령어를 이용해 Block Device 를 독립된 Device 로 인식

→ losetup /dev/loop1 /u01/asm_disk/disk1;

    losetup /dev/loop2 /u01/asm_disk/disk2;

3 . raw 명령어를 이용해 물리적 Device 와 Block Device 를 연결

→ raw /dev/raw/raw1 /dev/loop1;

bound to major 7, minor 1 (실행메세지)

    raw /dev/raw/raw2 /dev/loop2;

bound to major 7, minor 1 (실행메세지)

4 . DBCA 를 이용해 ASM 디스크 그룹과 인스턴스 생성

 

ASM 파라미터

1 . Instance_Type = ASM

2 . ASM_Power_Limit = 0 ~ 11

→ Rebalancing 속도 옵션, 속도가 높을수록 디스크 I/O 많이 소비

3 . ASM_Diskstring

4 . ASM_Diskgroups

 

디스크 그룹 생성

1 . 디스크 그룹 옵션

(1) Nomal Redundancy

→ Mirroring : 2 | 3 | Unprotect

(2) High Redundancy

→ Mirroring : 3

(3) External Redundancy

→ Mirroring : Unprotect

2 . 디스크 그룹 생성

(1) Create Diskgroup 그룹명1 Normal Redundancy

     Failure Group Fail그룹명1 Disk '경로/디스크명', '경로/디스크명', ...

     Failure Group Fail그룹명2 Disk '경로/디스크명', '경로/디스크명', ... ;

→ 디스크 그룹 1개 > Failure 그룹 2개 > Fail 그룹당 디스크 2개로 생성

(2) Create Diskgroup 그룹명2 Normal Redundancy

     Failure Group Fail그룹명3 Disk '경로/디스크명', '경로/디스크명', ...

     Failure Group Fail그룹명4 Disk '경로/디스크명', '경로/디스크명', ... ;

→ 디스크 그룹 1개 > Failure 그룹 2개 > Fail 그룹당 디스크 2개로 생성



※ Redundancy? 

만약의 경우를 위해 미러링 하는 정도를 의미


Disk Group에서 그중 하나 이상의 디스크가 장애날 경우 

전체 Disk Group내의 데이터를 모두 손실할 수 있기 때문에 안정성을 위해 redundancy를 설정할 수 있다.


ASM Instance 생성시 디스크 그룹을 선택할 때 생성

Normal

- 2-way mirroring, 2배의 디스크가 필요 (실제 데이터가 저장되는 공간이 100G면, 100G 디스크 2개가 필요)

High

- 3-way mirroring, 3배의 디스크 필요

External

- ASM mirroring 기능 사용하지 않음, Hardware RAID 기능으로 디스크를 보호하고 있을 경우에만 사용하길 권장


 


ASM 관리와 모니터링

1 . 디스크 그룹 변경과 관리

(1) 디스크 추가

→ Alter Diskgroup 그룹명 Add Disk '경로/디스크명' [Rebalance power n];

(2) 디스크 삭제

→ Alter Diskgroup 그룹명 Drop Disk '경로/디스크명' [Rebalance power n];

(3) 디스크 삭제 중일때 취소 작업 (삭제 종료시 취소 불가)

→ Alter Diskgroup 그룹명 Undrop Disks;

(4) 디스크 그룹 Mount와 Unmount

→ Alter Diskgroup [All | 그룹명] [Mount | Dismount];

(5) 디스크 그룹 정합성 체크 (Mount 상태에 실행)

→ Alter Diskgroup 그룹명 Check All;

2 . 디렉토리 생성 및 관리

(1) 디렉토리 생성 ( '+' 기호는 ASM 내부 디렉토리라는 의미로 사용 )

→ Alter Diskgroup 그룹명 Add Directory '+그룹명/디렉토리명';

(2) 디렉토리 Rename

→ Alter Diskgroup 그룹명 Rename Directory '+그룹명/디렉토리명' To '+그룹명/디렉토리명';

(3) 디렉토리 삭제

→ Alter Diskgroup 그룹명 Drop Directory '+그룹명/디렉토리명' [Force To '+그룹명/디렉토리명'];

3 . 파일 템플릿과 파일 생성

 

→ 지원 형식

File Type

지원여부

템플릿명

컨트롤 파일

Yes

Controlfile

데이타 파일

Yes

Datafile

리두로그 파일

Yes

Onlinelog

아카이브로그 파일

Yes

Archivelog

트레이스 파일

No

 

Temporary 파일

Yes

Tempfile

Datafile Backup Pieces

Yes

Backupset

Datafile incremental Backup Pieces

Yes

Backupset

Archive log Backup Pieces

Yes

Backupset

Datafile Copy

Yes

Datafile

Persistent initialization Parameter 파일(SPFILE)

Yes

Parameterfile

Disaster Recovery configurations

Yes

Dataguardconfig

Flashback logs

Yes

Flashback

Change Tracking 파일

Yes

Changetracking

Data Pump dumpset

Yes

Dumpset

Automatically Generated Control File Backup

Yes

Autobackup

 

→ 기록 방식

Template Name

Striping

Normal

High

External

Archivelog

Coarse

Mirror

High

Unprotected

Tempfile

Coarse

Mirror

High

Unprotected

Backupset

Coarse

Mirror

High

Unprotected

Parameterfile

Coarse

Mirror

High

Unprotected

Dataguardconfig

Coarse

Mirror

High

Unprotected

Flashback

Fine

Mirror

High

Unprotected

Changetracking

Coarse

Mirror

High

Unprotected

Dumpset

Coarse

Mirror

High

Unprotected

Xtransport

Coarse

Mirror

High

Unprotected

Autobackup

Coarse

Mirror

High

Unprotected

Datafile

Coarse

Mirror

High

Unprotected

Controlfile

Fine

High

High

Unprotected

Onlinelog

Fine

Mirror

High

Unprotected

 

→ Alter Diskgroup 그룹명 Add Template 템플릿명 Attributes [Mirror Fine]

    변경시 위와같이 해주어야 함.

 

4 . Tablespace 생성

→ Create Tablespace TS명 '디렉토리(템플릿명)';

 

5 . Redolog 생성

(1) Init 파라미터 설정

→ DB_Create_Online_Log_Dest1 = '+경로'

    DB_Create_Online_Log_Dest2 = '+경로'

(2) 설정 후

→ Alter Database Add Logfile;

 

6 . ASM 모니터링

(1) ASMCMD (ASM Command Line Interface)

→ 이동 : cd +경로

→ 리스트 : ls -al

→ 용량 : du

(2) View

View

설명

 V$ASM_Diskgroup

 디스크 그룹 정보

 V$ASM_Disk

 디스크 정보

 V$ASM_File

 ASM 파일 정보

 V$ASM_Template

 ASM 의 모든 디스크 그룹에 설정된 템플릿 정보

 V$ASM_Alias

 ASM 디스크 그룹의 Alias 정보

 V$ASM_Operation

 ASM 인스턴스 상에서 실행되는 작업 현황

 V$ASM_Client

 ASM 을 사용하는 DB 인스턴스 정보

 

 

참고

1 . Raw Device 를 생성하는 이유

→ 테이블 스페이스가 파일시스템에 데이터를 저장하는 것이 일반적이라면 일부 DBMS는 Raw Device로 불리는

    OS Device로 구성하여 운영체제 파일이스템의 오버헤드를 없애고 더 빠른 성능을 제공한다.

    모든 환경(OLTP, DW 등..)에서 Raw Device가 좋은 성능을 제공하는 것은 아니므로 File system별로 퍼보먼스

    를 체크하여 가장 사용 환경에 알맞는 File System을 선택하는 것이 중요함.

2 . dd ( 파티션 전체를 백업하고 복구하기 위한 Tool )

→ dd if=/dev/zero of=asm_disk1 bs=1024k count=500

* zero를 이용해 asm_disk1을 생성하며 이 파일에는 1,024 KB의 용량으로 5000번의 I/O 카운트를 수행한다.

  위 명령을 실행하면 zero(실제 존재하지만 아무 내용도 없는 것) 장치를 이용하여 500 MB 크기의 아무것도

  없는 파일로 생성하게 된다.

3 . Loop Device

→ losetup /dev/loop1 asm_disk1

* Loop Device는 /dev/loop0 ~ loop7 까지 생성되어 있다. 위에서 생성한 asm_disk1을 Block 단위로 I/O

  가 가능하게 해주기 위해서는 Loop Device에 매핑을 해주어야 한다.

4 . Raw Device 생성

→ Raw /dev/raw/raw1 /dev/loop0

* Loop0 Device를 Raw1 에 Mount 한다.

  asm_disk1은 Linux의 File System을 벗어나 Raw Device로 독립적인 I/O가 가능하게 된다.

  Mount가 된 후 Raw Device에 대한 소유권을 조정해 줘야 일반 유저가 사용가능 하다.

 



참조: https://hayleyfish.tistory.com/114 [DB네 생선가게]