탐색 링크 건너뛰기 | |
인쇄 보기 종료 | |
Oracle Solaris 11.1 조정 가능 매개변수 참조 설명서 Oracle Solaris 11.1 Information Library (한국어) |
2. Oracle Solaris 커널 조정 가능 매개변수
3. Oracle Solaris ZFS 조정 가능 매개변수
데이터베이스 제품에 ZFS를 사용할 때는 다음과 같은 고려 사항을 검토하십시오.
데이터베이스에서 I/O에 대해 고정된 디스크 블록 또는 레코드 크기가 사용될 경우 이에 맞게 ZFS recordsize 등록 정보를 설정하십시오. 이 작업은 여러 파일 시스템이 단일 풀을 공유하더라도 파일 시스템별 기준으로 수행할 수 있습니다.
ZFS의 "쓰기 시 복사" 설계에 따라 recordsize를 낮게 조정하는 것은 일괄 처리 보고 질의의 비용으로 OLTP 성능을 향상시킬 수 있는 한 가지 방법입니다.
ZFS는 디스크에 저장된 모든 블록에 대해 체크섬을 수행합니다. 이렇게 하면 데이터베이스 계층이 추가 시간을 들여 데이터를 체크섬을 수행할 필요를 줄여줍니다. 데이터베이스 계층 대신 ZFS에서 체크섬을 계산하면 데이터가 응용 프로그램에 반환되기 전에 불일치를 포착하고 수정할 수 있습니다.
UFS 직접 I/O는 UFS의 몇 가지 설계적인 단점을 극복하고 데이터의 이중 버퍼링을 제거하기 위해 사용됩니다. ZFS에서는 UFS의 설계적인 단점이 존재하지 않으며, ZFS가 primarycache 및 secondarycache 등록 정보를 사용하여 ARC에서 버퍼링 데이터를 관리합니다. 무작위 읽기를 향상시키기 위해 secondarycache(L2ARC) 등록 정보를 사용하려면 primarycache 등록 정보도 사용으로 설정해야 합니다.
풀 성능을 유지하려면 풀 공간 활용률을 90% 미만으로 유지합니다.
ZFS는 단일 인스턴스 모드의 Oracle 데이터베이스 버전에 대해 권장됩니다. NFS 공유 파일 시스템으로 제공될 경우 Oracle RAC 데이터베이스에 ZFS를 사용할 수 있습니다.
Oracle 데이터베이스에 대해 ZFS를 조정하기 위해서는 아래의 권장 사항을 검토하십시오.
최신 Solaris 릴리스를 실행 중인지 확인
최신 Solaris 10 또는 Solaris 11 릴리스를 사용하거나 Solaris 10 9/10 릴리스를 최소 시작 지점으로 사용합니다.
필요에 따라 ZFS 저장소 풀에 대한 LUN을 만듭니다.
저장소 배열 도구를 사용해서 ZFS 저장소 풀에 제공될 LUN을 만듭니다. 또는 미러링된 ZFS 저장소 풀의 경우 전체 디스크를 사용합니다. 자세한 내용은 Oracle Solaris 11.1 관리: ZFS 파일 시스템의 3 장, Oracle Solaris ZFS 저장소 풀 관리를 참조하십시오.
테이블, 인덱스, 실행 취소 및 임시 데이터에 대한 데이터 파일의 저장소 풀을 만듭니다.
상위 레벨의 데이터 중복성을 제공하기 위해서는 미러링된 저장소 풀을 만드는 것이 좋습니다. 예를 들면 다음과 같습니다.
# zpool status dbpool pool: dbpool state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM dbpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t5000C500335F95E3d0 ONLINE 0 0 0 c0t5000C500335F907Fd0 ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 c0t5000C500335BD117d0 ONLINE 0 0 0 c0t5000C500335DC60Fd0 ONLINE 0 0 0 errors: No known data errors
여러 커밋을 포함하는 일반적인 OLTP 데이터베이스와 같은 리두 로그 작업이 많은 데이터베이스에서는 별도 로그용으로 개별 LUN을 사용합니다.
archivelog에 대한 저장소 풀을 만듭니다.
가능한 경우 시스템 내장 디스크가 이 유형의 부하를 처리할 수 있습니다. archivelog 파일 시스템은 dbpool의 파일 시스템일 수도 있습니다.
# zpool create archivepool c0t5000C500335E106Bd0
다음 지침에 따라 ZFS 파일 시스템을 만들고 특정 파일 시스템 등록 정보를 설정합니다.
기본 레코드 크기 128KB를 사용하여 리두, 아카이브, 실행 취소 및 임시 데이터베이스 구성 요소에 대한 별도의 파일 시스템을 만듭니다. 일반 규칙은 Oracle 데이터 파일을 포함하는 파일 시스템에 대해 파일 시스템 recordsize = db_block_size를 설정하는 것입니다. 테이블 데이터 및 인덱스 구성 요소에 대해 레코드 크기가 8KB인 파일 시스템을 만듭니다. primarycache 등록 정보를 사용하여 데이터베이스 파일 시스템에 대한 메타 데이터 캐싱 힌트를 제공할 수도 있습니다. ZFS 파일 시스템 등록 정보에 대한 자세한 내용은 Oracle Solaris 11.1 관리: ZFS 파일 시스템의 ZFS 등록 정보 소개를 참조하십시오.
recordsize가 8KB인 테이블 데이터 파일 및 인덱스 데이터 파일에 대한 파일 시스템을 만듭니다. primarycache에 대해 기본값을 사용합니다.
# zfs create -o recordsize=8k -o mountpoint=/my_db_path/index dbpool/index # zfs set logbias=throughput dbpool/index # zfs get primarycache,recordsize,logbias dbpool/index NAME PROPERTY VALUE SOURCE dbpool/index primarycache all default dbpool/index recordsize 8K local dbpool/index logbias throughput local
기본 recordsize 및 primarycache 값을 사용해서 임시 및 실행 취소 테이블 공간에 대한 파일 시스템을 만듭니다.
# zfs create -o mountpoint=/my_db_path/temp dbpool/temp # zfs set logbias=throughput dbpool/temp # zfs create -o mountpoint=/my_db_path/undo dbpool/undo # zfs set logbias=throughput dbpool/undo
별도 로그 장치를 사용해서 리두 로그에 대한 저장소 풀을 만듭니다. 여러 커밋을 포함하는 일반적인 OLTP 데이터베이스와 같은 리두 로그 작업이 많은 데이터베이스에서는 별도의 로그 장치 LUN을 사용합니다.
디스크를 두 개의 조각으로 분할합니다. 작은 조각인 s0은 64 ~ 150MB 범위이며 개별 로그 장치에 대해 사용됩니다. s1 조각은 리두 로그에 대한 남은 디스크 공간을 포함합니다.
# zpool create redopool c0t50015179594B6F11d0s1 log c0t50015179594B6F11d0s0 # zpool status redopool pool: redopool state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM redopool ONLINE 0 0 0 c0t50015179594B6F11d0s1 ONLINE 0 0 0 logs c0t50015179594B6F11d0s0 ONLINE 0 0 0 errors: No known data errors
리두 풀의 리두 로그에 대한 파일 시스템을 만듭니다. recordsize 및 primarycache에 대해 기본 파일 시스템 값을 사용합니다.
# zfs create -o mountpoint=/my_db_path/redo redopool/redo # zfs set logbias=latency redopool/redo
아카이브 풀에서 archivelog 파일에 대한 파일 시스템을 만들어 압축을 사용으로 설정하고, recordsize에 대해 기본값을 사용하고, primarycache를 metadata로 설정합니다.
# zfs create -o compression=on -o primarycache=metadata -o mountpoint= /my_db_admin_path/archive archivepool/archive # zfs get primarycache,recordsize,compressratio,compression,available, used,quota archivepool/archive NAME PROPERTY VALUE SOURCE archivepool/archive primarycache metadata local archivepool/archive recordsize 128K default archivepool/archive compressratio 1.32x - archivepool/archive compression on local archivepool/archive available 40.0G - archivepool/archive used 10.0G - archivepool/archive quota 50G local
저장소 배열 I/O 대기열을 조정합니다(HDS 또는 EMC 저장소 배열을 포함하는 시스템의 경우).
ZFS는 읽기 및 쓰기 I/O를 집계하고 장치를 처리하는 드라이버 레벨에 보내기 전에 I/O의 우선순위를 관리합니다. zfs_vdev_max_pending 매개변수는 ZFS가 저장소 풀 장치에 보내는 최대 I/O 수를 정의합니다.
레거시 저장소 환경에서 ssd_max_throttle 및 sd_max_throttle 매개변수는 드라이버가 저장소에 보낼 수 있는 동시 I/O의 최대 개수를 정의합니다. zfs_vdev_max_pending 기본값을 [s]sd_max_throttle 매개변수 값과 동일하게 설정하면 ZFS가 다른 불필요한 SD 계층에 대해 I/O를 대기열에 넣지 않도록 방지합니다.
기존 환경에서 /etc/system 파일에 ssd:ssd_max_throttle 또는 sd:sd_max_throttle이 있는 경우, zfs:zfs_vdev_max_pending을 동일 값으로 설정합니다. 예를 들어, 저장소 배열 관리자가 다음과 같은 설정을 요청할 수 있습니다.
set ssd:ssd_max_throttle=20
그런 후 이 매개변수를 다음과 같이 설정합니다.
set ssd:ssd_max_throttle=20 set zfs:zfs_vdev_max_pending=20
이 매개변수를 설정하면 ZFS가 각 LUN 대기열을 제어할 수 있습니다. 즉, 저장소에 보류 중인 총 I/O 개수는 다음과 같이 증가할 수 있습니다.
number of LUNs * ZFS_VDEV_MAX_PENDING
충분한 메모리 및 스왑 리소스를 할당합니다.
zfs_arc_max 매개변수를 낮은 값으로 조정하여 ZFS 메모리 소비를 줄일 수 있지만 현재 사용 중인 데이터베이스 부분에 대한 메타 데이터를 캐시하는 데 충분한 메모리(8KB ZFS 레코드 크기의 경우 1.5% 추정)를 제공하고 이를 레코드 크기에 맞게 적절하게 조정하는 것이 좋습니다. 인덱스 파일을 저장하는 파일 시스템은 메모리 부족이 발생할 때 가장 마지막으로 무효화되기 때문에 시스템 캐싱으로 인해 가장 큰 이점을 얻을 수 있습니다. zfs_arc_max 매개변수는 바이트 단위이며 10진수 또는 16진수 값을 사용할 수 있습니다. 다음 예에서는 이 매개변수를 2GB로 설정합니다.
set zfs:zfs_arc_max=2147483648 or set zfs:zfs_arc_max=0x80000000
응용 프로그램이 메모리 부족으로 인해 실패하지 않도록 방지하기 위해서는 일정 정도의 스왑 공간을 구성해야 합니다. 모든 시스템 메모리에 해당하는 스왑 공간이면 항상 이 목적에 충분합니다. 이 스왑 공간은 사용되지 않지만 예약 영역으로서 필요합니다. 스왑 공간을 늘리는 방법에 대한 자세한 내용은 Oracle Solaris 11.1 관리: ZFS 파일 시스템의 ZFS 스왑 및 덤프 장치 관리를 참조하십시오.
추가 Oracle 데이터베이스 구성 권장 사항
다음 백서의 Configuring Your Oracle Database on ZFS File Systems:
http://www.oracle.com/technetwork/server-storage/solaris/config-solaris-zfs-wp-167894.pdf
Dynamic SGA Tuning of Oracle Database on Oracle Solaris with DISM 백서:
Oracle 11g 설치 설명서
Oracle Database Quick Installation Guide 11g Release 2 (11.2) for Oracle Solaris on SPARC (64-Bit)
http://docs.oracle.com/cd/E11882_01/install.112/e24349/toc.htm
Oracle Database Quick Installation Guide 11g Release 2 (11.2) for Oracle Solaris on x86-64 (64-Bit)
http://docs.oracle.com/cd/E11882_01/install.112/e24351/toc.htm
MySQL에서 ZFS를 사용할 때는 다음과 같은 고려 사항을 검토하십시오.
ZFS recordsize
OLTP 성능 향상을 위해 저장소 엔진 블록 크기에 맞게 ZFS recordsize 등록 정보를 설정합니다.
InnoDB
데이터베이스 응용 프로그램 등에 대해 알려진 응용 프로그램 메모리 단위를 사용하여 ARC 크기 상한을 제한하면 응용 프로그램이 ZFS 캐시에서 필요한 메모리를 재생 이용할 필요가 없습니다.
로그에 대한 개별 풀을 만듭니다.
데이터에 대한 다른 경로를 설정하고 my.cnf 파일에 로그인합니다.
데이터 파일을 만들기 전에 InnoDB 데이터 파일에 대해 ZFS recordsize 등록 정보를 16K로 설정하고 InnoDB 로그에 대한 기본 recordsize 값을 사용합니다.