[2023.12.19]교육 7일차_HugePage 설정

망구씨·2023년 12월 19일
0

입사교육

목록 보기
7/7

네트워크 스위치

RAC가 1,2 있으면 단독으로 스위치 써야하는데 그렇지 못할때는 네트워크에서 가상으로 분리해주는 기능이 있다. VLAN 자기만의 전용 스위치를 쓰는것이 좋지만 안될때는 vlan으로 분리해서

램 크게
유저 만들기(오라클, 그리드)
오라인벤토리는 설치정보를 담아야 하니
ORA_CRSHOME
ORACLE_HOME
ORA_NLS1 , TNS_ADMIN 이 배시에 있음안댐

스위치 쓰면 MTU를 9000으로 잡아라 경보 프레임을 설치해라
RAC는 개별 스위치를 쓰거나 RAC세트간에 간섭 받지 않도록
퍼블릭쪽 인터커넥트는 1500,


(두번째 아래꺼)
flex ASM? :asm이 죽어도 리스너가 죽지 않는 기능

  1. Public ip : 외부 클라이언트들이 노드로 접속할 때 사용하는 ip
  2. private ip : 노드간의 통신을 하기 위해 사용하는 ip
  3. scan-ip : 21라면 21으로 디비 붙으면 50,50? 자동으로 1,2번 노드에 균등하게 붙기 위해(스캔 리스너가 떠있어야 붙을 수 있다.)????????????????? 1,2호기로 분배해주는애 부하,분산 목적이다. 우리가 매뉴얼하게 (수동으로) 1,2호기에 붙어야하는애 지정?????
  4. virtual ip : failover를 지원하기 위해서 사용하는 ip
  • ctf : 한쪽 죽으면 다른한쪽으로 붙을 수 있게
  • taf : ctf + 조회쿼리가 failover가 된다(넘어감). 네가 만약 뭐를 조회하다가 노드가 죽으면 한쪽노드에서 받아서
  • 운영디비 설치할때는 orc, voting은 이중화를 해야한다. asmca를 만들때 명령어 차이 nomal, extern

  • 패키지 설치 확인

  • 커널도 최소 요구사항 충족하는지

  • 리눅스에서 방화벽 꺼져있는지 SE Linux 라는거

  • 그룹에 dba만 만들기 . 그룹 안에 oracle, grid유저만 만들기! 따로만드는 이유는 권한 때문에

  • 모든 설정은 1,2호기에 동일하게 있어야함

  • NTP 설정을 해야한다 . -x 옵션을 주고 설정해ㅇ한다.
    성능 위해 설정값 3개

  • /ect/security/limits.conf

  • /ect/pam.d/login

  • /etc/profile

  • /etc/sysctl.conf

  • 파티셔닝을 해야하는 이유 : 디스크에서 위에 1메가 띄운다 그럼 하드웨어엔지니어가 이거 사용하는 디스크인지 안다. 혹은 작업하다가 깨지는 일에 대해 방지

  • ASMLib 왜할까? 디스크 대해 권한과 소유자를 고정시켜주는것이다. 이건 오라클에서 제공하는 패키지 ㅇ고 리눅스에서 제공하는 Udev 패키지도 있다. 이건 우리가 하는 경우도 있다.

리눅스 경우 디스크가 추가디거나 삭제되는 경우 디바이스 네임과 오너십 퍼미션이 변경될 수 있는데 이제약사항 극복하기 위해 사용이 권장되었다. 디스크에 디스크 긃그루부명을 라벨링한다.

ASM 구성시에 ASM Library(ASMLIB)를 사용해야 되는지에 대해서 다음과 같이
정리해 보았습니다. (Linux Only입니다)

요약하면 (개인적인 의견입니다)
  - multipath 환경에서는 mulitpath software가 persistent한 pseudo device
명을 제공해 줌으로 ASMLIB이 굳이 필요없으며
  - ASMLIB과 udev는 유사한 기능을 제공함으로 고객이 선택적으로 사용할 수
있다.
  * multipath/udev + ASMLIB 구성도 가능은 하지만 중복된 기능을 사용하게
됨으로 굳이 구성할 필요가 없어 보인다

1. ASMLIB 필요성
    - Linux의 경우 Disk가 추가되거나 삭제되는 경우 device name,
ownership, permission이 변경될 수 있음
      (ex. sda disk가 제거되는 경우 sdb가 sda가 되고, sdc가 sdb가 되는
상항이 발생됨)
http://superuser.com/questions/275135/linux-changing-device-names-in-dev-causes-problems-on-boot

    - 위 제약사항을 극복하기 위해 ASMLIB 사용이 권장되었음
      ASMLIB의 경우 Disk에 DiskGroup명을 labeling하여 Disk Name에 상관없
이 label명을 통하여 Disk Path를 제공

2. 하지만 Linux Kernel에 udev(from 2.5 kernel), device-mapper(from 2.6
kernel) 등의 기능이 포함되어
    ASMLIB처럼 pseudo device name을 제공할 수 있음으로 동 기능을 사용하
는 경우
    ASMLIB을 추가적으로 구성할 필요성은 없어 보임

    - udev 는 disk의 unique id (scsi_id command 등을 이용)하여 unique id
에 해당하는 pseudo device name,
      ownership, permission을 유지시켜 줌
      Note 414897.1 How To Setup UDEV Rules For RAC OCR And Voting
Devices On SLES10, RHEL5, OEL5, OL5

    - udev, device-mapper를 구성하고, 그 위에 또 다시 ASMLIB을 구성할 수
있으나,
      (이럴 경우 udev가 생성한 pseudo device와 original device 두개가 보
일 수 있음으로
       oracleasm_scanorder, oracleasm_scanexclude 등을 지정해서 하나의
device만 보도록 해야함. Note 372783.1)
      이렇게 구성하는 경우 특별한 장점을 MOS에서 찾아볼 수 없으며,
Architecture 구성만 복잡해질것 같음

3. ASMLIB 과 udev 비교
    -
http://www.oracle.com/technetwork/server-storage/linux/persistence-088235.html
참고
      . 두가지 모두 device persistence 기능을 제공함
      . ASMLIB의 경우 oracleasm command를 통해 disk를 create/delete/scan
등을 하고 한쪽 node에서만 작업이 가능하며,
        udev의 경우 /etc/udev/rule.d 의 configuration file을 수정해야 함
(전체 node) 수정 필요

4. ASMLIB과 device-mapper 비교
    - multipath(EMC Powerpath, IBM MPIO, Linux device mapper 등) 기능은
controller, bus, switch 등에 대한 이중화를
      지원해 주는 기능임으로 ASMLIB과는 다른 기술임
      . 다만 multipath는 대부분 persistent한 pseudo device name을 제공하
고 있음으로 ASMLIB을 대체할 수는 있음
      . 참고
        Note 294869.1 Oracle ASM and Multi-Pathing Technologies
        http://en.wikipedia.org/wiki/Multipath_I/O
https://access.redhat.com/knowledge/docs/ko-KR/Red_Hat_Enterprise_Linux/5/html/DM_Multipath/MPIO_Overview.html
http://www.oracle.com/technetwork/database/device-mapper-udev-crs-asm.pdf

5. 제약 사항
    - ASMLIB 제공 제한
      . OEL, Redhat Enterprise Linux 4,5, Suse Linux Enterprise Server
9, 10에 제공되고 있음
      . OEL6의 경우 Unbreakable Enterprise Kerenl(UEK) 사용시에만 제공됨
        (OEL의 경우 Red Hat Compatable Kernel(kABI)와 Unbreakable
Enterprise Kerenl(UEK) 두가지를 사용할 수 있으며
         Booting시에 선택가능함)
      . Redhat Enterprise Linux 6에는 제공안됨
      . Suse Linux Enterprise Server(SLES) 11의 경우 Novel에서 제공예정임
      . Notes
         1089399.1 Oracle ASMLib Software Update Policy for Red Hat
Enterprise Linux Supported by Red Hat
         1097444.1 Oracle ASMLib Software Update Policy for SuSE Linux
Enterprise Server (SLES)
    - 참고 Note
      . https://blogs.oracle.com/wim/entry/asmlib : ASMLIB에 대한 등장배
경 및 ASMLIB의 제공(지원) 범위

감사합니다.

i/o 스케쥴러 온 리눅스 세팅은 데드라인으로 해야한다 . 성능과 관련있음

  • gui가 안뜰때 이거 해야함. 테스트 환경 다를때(서버 받아서)
    #xhost + (export display...?)
    #su - grid
    .runinstaller

리눅스에서 오라클 디비쓸때는 휴지페이지 필수다.


HugePage 설정

ROOT에서 설정

Step1) memlock user limit 확인

✅ /etc/security/limits.conf 에서 memlock 값이 사용코자 하는 page 크기보다 커야 함
✅ 4GB 인 경우 아래와 같이 설정 가능(물리적인 메모리보다 조금 작게 설정해야 함)

#<domain>      <type>  <item>         <value>
#

#*               soft    memlock         5397977
#*               hard    memlock         5397977
#@student        hard    nproc           20
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#@student        -       maxlogins       4

# End of file

✅ 다음과 같이 확인

[racdb1:/home/oracle]> ulimit -l
134217728

Step2) vm.nr_hugepages 커널 값 계산 (계산 쉘 스크립트는 note 401749.1 참고)

✅ ipcs –m 의 메모리 합과 유사하나, 쉘 스크립트 권장(현재 설정된 SGA값을 참조함)

$ ./hugepages_settings.sh
...
Recommended setting: vm.nr_hugepages = 605
Recommended setting: vm.nr_hugepages = 598 -- NODE2

Step3) vm.nr_hugepages 커널 값 입력

✅ /etc/sysctl.conf 에 아래 입력

vm.nr_hugepages = 605
vm.nr_hugepages = 598 -- NODE2

Step4) hugepages 커널 값 적용하기

✅ 시스템을 리부팅하거나, 각 시스템별로 dynamic 하게 적용

[root@rac1 ~]# sysctl -p
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.panic_on_oops = 1
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
vm.nr_hugepages = 605

[root@rac2 ~]# sysctl -p
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.panic_on_oops = 1
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
vm.nr_hugepages = 598

✅ Large page 설정 확인
1. ALERT 로그 파일 경로 찾기

diagnostic_dest                      string
/u01/app/oracle

/u01/app/oracle/diag/rdbms/racdb/racdb1/trace

[racdb1:/u01/app/oracle/diag/rdbms/racdb/racdb1/trace]> ls alert*
alert_racdb1.log
[racdb1:/u01/app/oracle/diag/rdbms/racdb/racdb1/trace]> vi alert_racdb1.log
[racdb1:/u01/app/oracle/diag/rdbms/racdb/racdb1/trace]> grep HugePages /proc/meminfo
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
FileHugePages:         0 kB
HugePages_Total:     605 -- 이거확인
HugePages_Free:       18
HugePages_Rsvd:        6
HugePages_Surp:        0
-- alert log 파일 내용 
  PAGESIZE  AVAILABLE_PAGES  EXPECTED_PAGES  ALLOCATED_PAGES  ERROR(s)
2023-12-19T07:46:42.381227+09:00
        4K       Configured               3               3        NONE
2023-12-19T07:46:42.381293+09:00
     2048K              605             593             593        NONE
2023-12-19T07:46:42.381320+09:00

Step5) DB Instance 기동

✅ DB Instance의 large page 사용 확인

[racdb1:/home/oracle]> grep HugePages /proc/meminfo
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
FileHugePages:         0 kB
HugePages_Total:     605
HugePages_Free:       18
HugePages_Rsvd:        6 -- 이거확인
HugePages_Surp:        0

[racdb2:/home/oracle]> grep HugePages /proc/meminfo
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
FileHugePages:         0 kB
HugePages_Total:     598
HugePages_Free:       11
HugePages_Rsvd:        6
HugePages_Surp:        0
  • 노드 2에서도 위와 동일하게 진행한다.
profile
Slow and steady wins the race.

0개의 댓글