by-nc-sa     개발자, DBA가 함께 만들어가는 구루비 지식창고!

B.SAME과 ASM




1. ASM

  • 스토리지를 자동 관리하는 기능과 소프트웨어 컴포넌트
  • SAME(Stripe And Mirror Everything) 방법론에 근거

    1.1 ASM 장점

    1. I/O작업이 자동으로 모든 디스크에 골고루 분산된다. 핫 스팟이나 병목이 없어진다.
    2. I/O작업이 자동으로 미러링된다.
    3. 디스크를 동적으로 추가/삭제할 수 있으며, 이에 때란 데이터 재분배 작업도 자동으로 이루어진다.
    4. RAC환경에서도 동작한다. 클러스터 파일 시스템이나 로 디바이스를 대신한다.

2. SAME

2.1 SAME 방법론이 필요한 이유

1. 디스크 레벨 분산의 한계

  • 목적별로 디스크를 분산 배치하는 것이 최적화 기법으로 수행되었다.
  • 그러나 물리적으로 디스트 레벨에서 분산을 했다고 하더라도 최적의 성능을 보장받을 수 없으며 때로는 중요한 성능문제를 유발할 수 있다. 특정 디스크가 핫 스팟이 될 가능성이 항상 존재한다.
    2. 볼륨 매니저 (Logical Volumn Manager. LVM)
  • 스토리지를 효과적으로 관리하기 위한 일련의 기능 및 소프트웨어 그룹을 지칭한다.
  • 파일시스템과 물리적 디스크 사이에 존재한다.
  • 물리적 볼륨(PV) : 볼륨 그룹을 구성하는 물리적 단위이다. 하나의 디스크를 여러 개의 물리적은 파티션으로 나누어, 파티션에 대해서 PV를 생성하는 방법이 많이 사용된다. PV는 여러개의 Physical Extent(PE)로 나뉜다.
  • 볼륨 그룹 (VG) : 물리적 볼륨의 모임이다. 하나의 볼륨 그룹에는 여러개의 물리적 볼륨이 존재한다. 즉 여러개의 디스트가 포함된다.
  • 논리적 볼륨(LV) : 여러개의 물리적 볼륨에 속하는 여러개의 PE를 모아서 하나의 논리적인 볼륨을 구성한다. 하나의 LV가 여러개의 PV, 즉 디스트와 매핑 된다는 특징 때문에 LV를 가상 파티션이라고 부른다.

3. LVM 장점

  • 확장성 : 논리적 볼륨에 할당된 디스크 공간을 추가로 할당할때 용이하다.
  • 성능 : 효과적인 스트라이핑에 의해 I/O작업을 골고루 분산시킬 수 있다.
  • 안정성 : 미러링 기능을 자체적으로 제공하여 안정성을 극대화한다.

2.2 SAME의 개념

1. 오라클에서 LVM의 특징과 장점을 극대화하기 위해 고안된 실용적인 스토리지 사용 방법론
2. 효과적인 I/O분산으로 특정 디스크가 핫 스팟이 되는 것은 방지하고, 랜덤 액세스와 순차적의 액세스의 성능을 최적화하는데 목적이 있다.
3. SAME 규직

  • 스트라이핑 : 모든 파일을 모든 디스크에 완벽하게 골고루 분산시킬 것을 권장한다. 핫 스팟을 방지하고, 병렬 작업에도 유리하다.
  • 스트라이트 크기는 1M바이트
    • 한 번에 수행 가능한 I/O크기가 클수록 I/O작업 성능이 좋다.
    • 스트라이프 크기가 1M바이트 이상일때 83%이상의 높은 효율이 보이며, 1M바이트 이상의 크기를 사용하더라도 I/O작업 성능의 개선율은 크지 않다. 지나치게 큰 스트라이프 크기는 데이터 분산 효과를 떨어뜨릴 수 있으므로 오라클은 1M바이트의 스트라이트 크기를 최적으로 권고한다.
    • 순차적 액세스 성능에 영향을 준다 : 오라클의 FTS
         * 스트라이프 크기에 따른 FTS성능 검토 ( 가정 : 테이블 크기 100M, 블록 크기 8K )
          
         a) 스트라이트 크기가 256K인 경우 : DB_FILE_MULTIBLOCK_READ_COUNT = 32 ( 최대 I/O 크기가 8*32=256K)
           100M/256K = 400번의 순차적 읽기 발생
            전체 읽기 시간 = Positioning Time + Transfer Time = 400*10ms + 400*12ms = 8800ms
         a) 스트라이트 크기가 1M인 경우 : DB_FILE_MULTIBLOCK_READ_COUNT = 128 ( 최대 I/O 크기가 8*128=1M)
           100M/1M = 100번의 순차적 읽기 발생
            전체 읽기 시간 = Positioning Time + Transfer Time = 100*10ms + 100*50ms = 6000ms
      
         => 결론 
            - 오라클이 FTS에서 한번에 1M바이트를 읽도록 설정하는 경우가 256K바이트로 설정한 경우에 비해서 더 우수한 성능을 보인다.
           - 단, 오라클에 FTS에서 한번에 읽는 최대 I/O크기를 스트라이트 크기와 일치시켜야 한다.  
          
  • 디스트 바깥쪽의 이용
    • 자주 액세는 되는 데이터들은 디스크의 바깥쪽에 위치시킬 것을 권장한다.
    • 원형의 디스크에서의 디스크의 바깥쪽에 존재하는 데이터를 읽어 들이는 시간이 디스크의 안쪽에 위치한 데이터를 읽어 들이는 시간보다 최대 2배 정도 빠르다.
    • 랜덤 액세스 성능에 영향을 준다. : 디스크의 바깥쪽 영역만을 주로 사용한다면 디스트 암의 이동 시간이 줄어들어 랜덤 액세스의 성능이 개선된다.
    • fdisk와 같은 툴을 사용하여 파티션을 만들 때, 디스크의 바깥쪽 실린더를 사용하게끔 생성하고, 이 파티션을 이용해 물리적 볼륨을 생성한다.
  • 파티션 레벨의 분산 : 논리적 볼륨 구성
  • 미러링

2.3 SAME과 ASM

1. ASM을 사용하면 자동으로 SAME방법론을 사용하는것이 된다.
2. ASM은 하나의 Disk Group에 속한 모든 디스크에 대해 균일하게 스트라이핑을 적용한다. Disk Group 레벨로 파일을 분산한다.
3. ASM은 일반 데이터 파일운 1M바이트 스트라이프 크기를 사용하고, 리두 로그나 컨트롤 파일과 같은 작은 크기의 쓰기 작업이 많은 파일들은 128K바이트 크기의 스트라이프를 사용하여 성능을 극대화할 수 있다.
4. Disk Group에 새로운 디스크를 추가하거나 기존의 디스크를 제거하는 작업 등은 모두 온라인으로 이루어 지고, 데이터 재분배는 오라클에 의해 자동으로 이루어진다.
5. ASM은 Failure Group 개념을 통해 미러링을 수행한다. 각 컨트롤러마다 여러개의 디스크를 Failure Group으로 묶어 장애가 발생하더라도 다른 Failure Group에 미러링이 되어 있어 정상적 수행을 계속할 수 있다.
6. ASM을 사용한다고 디스크의 바깥쪽을 자동으로 사용하지는 않는다. 디스크의 바깥쪽에 해당하는 파티션을 만든 다음, 이 파티션을 Disk Group에 할당한다.

2.4. 성능 이슈

1. SAME방법론은 오라클의 I/O작업을 최적화할 수 있는가?

  • SAME방법론은 철저하게 오라클의 I/O성능을 최적화하기 위해 고안된것이다.
  • LVM의 스트라이핑, 미러링과 거의 동일하다.
    2. ASM은 오라클의 I/O작업을 최적화할 수 있는가?
  • ASM과 LVM의 장단점
      장점 단점
    ASM 오라클의 데이터에 관련된 파일 작업의 자동화 통합적 스토리지 관리 불가 ( RAC환경에서는 로 디바이스나 클러스터 파일 시스템 추가)
    LVM 통합적 스토리지 관리 가능 ASM에 비해 오라클 파일 관리가 다소 번거로움. 관리자 설정에 따라 핫 스팟 발생 가능성 있음
  • ASM 사용 가이드
    • 오라클 데이터베이스 파일은 ASM을 사용하라.
    • 가능하다면 RAID를 적용한다. (RAID를 어레이 레벨에서 스트라이핑과 미러링을 제공)
    • LUN 생성시
      • 디스크 드라이브의 바깥쪽을 사용하라
      • 크기가 작고 RPM이 높은 디스크를 사용하라 ( 15000 RPM 이상 )
    • 효율적인 관리를 위해 두 개의 Disk Group을 사용하라.

문서정보

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.
  1. 5월 16, 2011

    장태길 says:

    ASM 스트라이핑 사이즈는 DISKGROUP 별로 다른건 아니고, 하나의 DISKGROUP 내에서 화일 타입에 따라서, COARSE(1M) 나 ...

    ASM 스트라이핑 사이즈는 DISKGROUP 별로 다른건 아니고,
    하나의 DISKGROUP 내에서 화일 타입에 따라서, COARSE(1M) 나 FINE(128)로 구분됌.
    즉 하나의 DISKGROUP 내에서도 생성되는 화일 타입에 따라서 STRIPING SIZE(COARSE , FINE - REDO, CONTROL, FLASHBACK) 가 결정됌
    ( 스터디 시간에는 하나의 DISKGROUP 에서는 동일한 STRIPING SIZE 를 사용할것으로 이야기 되었는데.. 이건 아님 )

    SQL> select name, stripe from v$asm_template where group_number = 2 order by 2 ;

    NAME STRIPE
    ------------------------------ ------------------
    PARAMETERFILE COARSE
    DUMPSET COARSE
    TEMPFILE COARSE
    CHANGETRACKING COARSE
    XTRANSPORT COARSE
    ARCHIVELOG COARSE
    DATAFILE COARSE
    DATAGUARDCONFIG COARSE
    BACKUPSET COARSE
    AUTOBACKUP COARSE
    ONLINELOG FINE
    FLASHBACK FINE
    CONTROLFILE FINE

    13 rows selected.

    굿어스 기술노트 ASM http://www.goodus.com/knowledge_pds/%EA%B8%B0%EC%88%A0%EB%85%B8%ED%8A%B8%5B43%ED%9A%8C%5D_Oracle%20ASM.pdf

  2. 5월 18, 2011

    장태길 says:

    디비 블록 사이즈 - 8k OS Striping Size - 32k DB 에서 Single(8k) Read 요청 하면, OS Strping S...

    디비 블록 사이즈 - 8k
    OS Striping Size - 32k

    DB 에서 Single(8k) Read 요청 하면, OS Strping Size 인 32K 만큼 읽어 들어, 필요한 8k 만 DBMS 에 전달
    DB 에서 Single(8K) Write 요청 하면, OS Striping Size 인 32 만큼 찰때까지 DISk Memory 부분에 Keep 함
    이후 32K 가 차면, 실제 DIsk memory 에서 Physical DIsk 로 Write 됌.
    Disk 에서는 장애 시 Disk memory 부분의 데이타를 보장함 (별도의 Disk 에 강제로 Write 하고, 추후 Physical Disk 에 Write를 보장한다고함 )

    이러한 개념으로 OS Striping Size 단위로 I/O 가 이루어진다고 합니다.
    최근에 H/W 발달로, 디비 블록 사이즈와 OS Striping Size 다른것은 거의 중요한 포인트가 되지 않는다고 하네요..

    킹왕짱 OS 담당자 분에게 문의 결과 입니다.

    1. 5월 18, 2011

      이경화 says:

      와~~ 킹왕짱 멋지세요^^ 그럼 ASM 일반데이터파일의 1M바이트 스트라이프 크기를 사용하다고 했는데..single(8k) read로 요청하더라...

      와~~ 킹왕짱 멋지세요^^
      그럼 ASM 일반데이터파일의 1M바이트 스트라이프 크기를 사용하다고 했는데..single(8k) read로 요청하더라도 1M를 다 읽고, 필요한 8k만 전달하게 되는거겠네요..웬지 스트라이프 크기를 1M로 하는게 비효율적인거 같다는 느낌이 드네요.
      저희는 보통 OLTP성 서비스는 아직도 8k, 배치성 작업이 많은경우는 16K를 사용하는데...
      하나의 DISKGROUP 내에서도 생성되는 화일 타입에 따라서 스트라이프 크기는 달라지는군요^^
      좋은 정보 감사합니다~

  3. 5월 18, 2011

    장태길 says:

    좋은 일 생기신거 축하드려요

    좋은 일 생기신거 축하드려요