Skip to main content
NetApp database solutions
본 한국어 번역은 사용자 편의를 위해 제공되는 기계 번역입니다. 영어 버전과 한국어 버전이 서로 어긋나는 경우에는 언제나 영어 버전이 우선합니다.

Oracle Database 26ai용 Google Cloud NetApp Volumes iSCSI 스토리지 프로비저닝

기여자 netapp-jsnyder

Google Compute Engine에서 Oracle Database 26ai의 고가용성을 위해 Google Cloud NetApp Volumes iSCSI 블록 스토리지를 프로비저닝합니다. 이 절차에서는 GCNV Flex Unified 스토리지 풀 생성, 호스트 그룹 정의, 각 데이터베이스 호스트에 대한 iSCSI 볼륨 생성, Linux iSCSI 및 다중 경로 구성, ASM 백업 장치 파티셔닝, `/u01`파일 시스템 마운트 등을 다룹니다.

1단계: GCNV iSCSI 풀 생성

기본 호스트와 대기 호스트에 iSCSI 볼륨을 제공하기 위해 각 데이터베이스 영역에 Flex Unified 스토리지 풀을 하나씩, 총 두 개를 생성합니다. 각 데이터베이스 호스트는 해당 로컬 영역의 풀에서 볼륨을 사용합니다.

  1. 클라우드 콘솔을 사용하여 두 개의 스토리지 풀을 생성합니다. 아래 표의 사양을 사용하고 각 영역에 대해 생성 프로세스를 반복합니다.

    풀 이름 영역 사용 대상

    oracle-pool-a

    us-west1-a

    oracdb1 (운영)

    oracle-pool-b

    us-west1-b

    oracdb2 (대기)

    NetApp Volumes → 스토리지 풀 → 각 풀에 대해 생성

    • 서비스 수준: Flex(Premium 아님)

    • 유형: Unified

    • Zone: 데이터베이스 VM 영역과 일치(us-west1-a / us-west1-b)

    • PSA: 다음에 연결됨 oracle-vpc

    • 용량: 워크로드에 맞춰 크기가 조정됩니다. 재실행, 백업 또는 복원 작업이 기본 여유 용량(풀당 최대 5120 MiB/s 또는 160K IOPS, 제품 제한)을 초과하는 경우 사용자 지정으로 프로비저닝된 처리량/IOPS를 사용합니다.

  2. 두 풀이 모두 READY 상태에 도달할 때까지 기다린 후 진행하십시오. 데이터베이스 사용량에 맞게 풀 크기를 조정하십시오(3단계: GCNV iSCSI 볼륨 생성의 크기는 예시입니다).

    참고

    기본 모드(이 가이드): Flex Unified 풀은 기본 모드(`--mode=default`를 사용합니다. Cloud Console 또는 `gcloud netapp`를 사용하여 풀 및 iSCSI 볼륨을 생성합니다. 볼륨 복제, 스냅샷 및 클론은 Google Cloud API(3단계: GCNV 대기 초기화)를 사용합니다.

2단계: 호스트 그룹 생성

각 VM이 자체 볼륨만 볼 수 있도록 데이터베이스 호스트별로 호스트 그룹을 하나씩 생성하십시오. 독립적인 스토리지를 유지하려면 기본 호스트와 대기 호스트가 GCNV iSCSI 볼륨을 공유해서는 안 됩니다.

  1. Cloud Console을 사용하여 oracdb1 호스트 그룹을 생성합니다.

    NetApp 볼륨 → 호스트 그룹 → 생성

    • 이름: oracdb1-hg

    • 지역: us-west1

    • 유형: iSCSI 이니시에이터

    • OS 유형: Linux

    • 호스트: oracdb1(값 /etc/iscsi/initiatorname.iscsi)에서 IQN을 붙여넣으세요.

    • 설명: "Oracle 기본 호스트 oracdb1"

    • 만들기

  2. oracdb2`에 대해 이름 `oracdb2-hg 및 `oracdb2`의 IQN으로 프로세스를 반복합니다. Observer 호스트에는 GCNV 리소스가 필요하지 않습니다.

3단계: GCNV iSCSI 볼륨 생성

각 데이터베이스 호스트에 대해 5개의 GCNV iSCSI 볼륨을 생성합니다. 하나는 `/u01`용이고 나머지 4개는 ASM 백업 장치용입니다. 각 호스트의 볼륨은 해당 호스트 그룹과 함께 로컬 영역의 스토리지 풀에 생성되어야 합니다.

  1. `oracdb1`의 5개 볼륨을 `oracle-pool-a`에서 호스트 그룹 `oracdb1-hg`으로 생성하십시오. 아래 표의 사양을 사용하십시오.

    GCNV iSCSI 볼륨 크기 사용 다중 경로 별칭

    ora_<host>_u01

    100 GiB

    /u01 GCNV iSCSI 볼륨 — Grid/Oracle 홈, 스테이징

    /dev/mapper/ora_<host>_u01

    ora_<host>_data_01

    50 GiB

    ASM +DATA

    /dev/mapper/ora_<host>_data_01

    ora_<host>_data_02

    50 GiB

    ASM +DATA(스트라이프)

    /dev/mapper/ora_<host>_data_02

    ora_<host>_arch_01

    100 GiB

    ASM +RECO

    /dev/mapper/ora_<host>_arch_01

    ora_<host>_fra_01

    100 GiB

    ASM +FRA

    /dev/mapper/ora_<host>_fra_01

    볼륨 이름: 문자, 숫자, 밑줄만 사용 가능(하이픈 사용 불가).

    참고

    최소 레이아웃(검증용): 호스트당 LUN 2개(*_data, *_reco) arch_01p1+RECOarch_01p2→`+FRA`는 연구실 환경에서 사용 가능하며, 프로덕션 환경에서는3단계: GCNV iSCSI 볼륨 생성당 5개의 볼륨을 사용합니다.

  2. `oracdb2`의 5개 볼륨을 `oracle-pool-b`에서 호스트 그룹 `oracdb2-hg`을 사용하여 동일한 사양으로 생성합니다. 각 풀에 대해 NetApp Volumes → Volumes → Create — iSCSI, 올바른 풀 및 호스트 그룹, Linux를 사용합니다. 다음 정보를 기록합니다.

4단계: iSCSI 및 다중 경로 구성

각 데이터베이스 호스트에서 iSCSI 및 device-mapper-multipath를 구성하여 두 스토리지 포털 IP를 통해 GCNV 볼륨에 액세스하도록 합니다. `oracdb1`에서 기본 풀의 포털 IP를 사용하여 이 단계를 실행한 다음, `oracdb2`에서 대기 풀의 포털 IP를 사용하여 동일한 단계를 반복합니다. 호스트 송신이 제한된 경우, 각 데이터베이스 VM에서 GCNV iSCSI 포털 IP로 TCP/3260을 허용해야 합니다(2단계: VPC 방화벽 - 세 영역 모두에서 TCP/1521 허용 목록 추가에서의 VM 간 TCP/1521 포함).

  1. 대상 검색, 로그인 및 노드 시작 정보 유지:

    sudo iscsiadm --mode discovery --op update --type sendtargets --portal <ISCSI_PORTAL_1>
    sudo iscsiadm --mode discovery --op update --type sendtargets --portal <ISCSI_PORTAL_2>
    sudo iscsiadm --mode node --op update --name node.startup --value automatic
    sudo iscsiadm --mode node -l all
    sudo systemctl enable --now iscsid iscsi multipathd
    sudo iscsiadm --mode session         # expect 10 sessions (5 GCNV iSCSI volumes × 2 portals)
    sudo lsblk -o NAME,SIZE,WWN,VENDOR,MODEL

    재부팅 후 Oracle을 시작하기 전에 다시 확인하십시오.

    sudo iscsiadm --mode session
    sudo multipath -ll
  2. Configure device-mapper-multipath 기본 설정값과 블랙리스트 규칙을 사용하여 구성하십시오.

    sudo tee /etc/multipath.conf >/dev/null <<'EOF'
    defaults {
        find_multipaths     yes
        user_friendly_names yes
    }
    blacklist {
        devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
        devnode "^hd[a-z]"
        devnode "^cciss.*"
    }
    EOF
    
    sudo systemctl enable --now multipathd
    sudo multipath -ll
  3. 호스트에서 발견한 WWID 별칭을 `/etc/multipath.conf`에 추가합니다(추측하지 마십시오 — `multipath.conf`는 셸 변수를 확장하지 않습니다). WWID 검색:

    sudo multipath -ll
    for dev in /dev/sd*; do
      [ -b "$dev" ] || continue
      printf '%s: ' "$dev"
      sudo /usr/lib/udev/scsi_id --whitelisted --device="$dev" 2>/dev/null || true
      echo
    done

    해당 호스트에 대한 구체적인 별칭을 /etc/multipath.conf`에 추가한 다음 `sudo systemctl restart multipathd.

    `oracdb1`에서 다음을 추가합니다.
    multipaths {
        multipath { wwid <host-discovered-wwid-for-u01>      alias ora_oracdb1_u01     }
        multipath { wwid <host-discovered-wwid-for-data-01>  alias ora_oracdb1_data_01 }
        multipath { wwid <host-discovered-wwid-for-data-02>  alias ora_oracdb1_data_02 }
        multipath { wwid <host-discovered-wwid-for-arch-01>  alias ora_oracdb1_arch_01 }
        multipath { wwid <host-discovered-wwid-for-fra-01>   alias ora_oracdb1_fra_01  }
    }
    `oracdb2`에서  `ora_oracdb2_*` 별칭에 동일한 패턴을 사용한 다음:
    sudo systemctl restart multipathd
    ls -l /dev/mapper/ora_$(hostname -s)_*

5단계: ASM 장치 분할

4개의 ASM 백업 장치( u01 제외)를 각각 ASM 사용을 위한 GPT 파티션 하나씩으로 분할한 다음, 그리드 소유권에 대한 udev 규칙을 구성하십시오. 각 데이터베이스 호스트에서 이러한 단계를 실행하십시오.

  1. 4개의 ASM 백업 장치를 GPT로 파티션하고 파티션을 확인합니다.

    HOST=$(hostname -s)        # oracdb1 on the primary, oracdb2 on the standby
    for dev in /dev/mapper/ora_${HOST}_data_01 \
               /dev/mapper/ora_${HOST}_data_02 \
               /dev/mapper/ora_${HOST}_arch_01 \
               /dev/mapper/ora_${HOST}_fra_01; do
      sudo parted -s "$dev" mklabel gpt
      sudo parted -s "$dev" mkpart primary 0% 100%
    done
    sudo partprobe
    sudo systemctl reload multipathd
    ls /dev/mapper/ora_${HOST}_*p1     # expect 4 partitions
  2. 그리드 소유권을 할당하고 변경 사항을 트리거하도록 udev 규칙을 구성합니다.

    HOST=$(hostname -s)
    sudo tee /etc/udev/rules.d/99-oracle-asm.rules >/dev/null <<'EOF'
    KERNEL=="dm-*", ENV{DM_UUID}=="part?-mpath-*", ENV{DM_NAME}=="ora_oracdb*_*p?", \
        OWNER="grid", GROUP="asmadmin", MODE="0660"
    EOF
    
    sudo udevadm control --reload-rules
    for part in /dev/mapper/ora_${HOST}_*p1; do
      dm=$(readlink -f "$part" | xargs basename)
      sudo udevadm trigger --action=change --name-match="/dev/${dm}"
    done
    sudo udevadm settle
    ls -lL /dev/mapper/ora_${HOST}_*p1    # grid:asmadmin 0660

6단계: 포맷 및 마운트 /u01

GCNV 볼륨을 ora_<host>_u01 XFS로 포맷하고 /etc/fstab`에서 UUID를 사용하여 영구적으로 마운트합니다. 해당 `/u01 파일 시스템에는 Grid 홈, Oracle 홈 및 스테이징 파일이 저장됩니다.

  1. 다중 경로 장치를 XFS로 포맷하고 해당 장치의 UUID를 캡처합니다.

    HOST=$(hostname -s)
    U01_DEV=/dev/mapper/ora_${HOST}_u01
    ls -l "$U01_DEV"
    
    sudo mkfs.xfs -f "$U01_DEV"
    U01_UUID=$(sudo blkid -s UUID -o value "$U01_DEV")
  2. UUID 기반 마운트 항목을 `/etc/fstab`에 추가하고 파일 시스템을 마운트하십시오.

    sudo mkdir -p /u01
    echo "UUID=${U01_UUID} /u01 xfs defaults,_netdev,nofail,x-systemd.requires=iscsi.service,x-systemd.requires=multipathd.service,x-systemd.after=iscsi.service,x-systemd.after=multipathd.service 0 0" | sudo tee -a /etc/fstab
    sudo mount -a
  3. Grid 및 Oracle 소프트웨어에 적합한 소유권으로 디렉터리 구조를 생성하십시오.

    sudo mkdir -p /u01/app/oraInventory /u01/app/26ai/grid /u01/app/grid \
      /u01/app/oracle/product/26ai/db_1 /u01/stage
    sudo chown -R grid:oinstall /u01/app/oraInventory /u01/app/26ai /u01/app/grid
    sudo chown -R oracle:oinstall /u01/app/oracle /u01/stage
    sudo chmod -R 775 /u01/app /u01/stage

    한 번 재부팅하고 /u01 마운트가 Oracle 소프트웨어 설치 전에 완료되는지 확인합니다.

다음 단계

준비된 호스트에 Oracle Grid Infrastructure 및 Database 바이너리를 설치하려면 두 호스트 모두에서 Oracle Grid Infrastructure 및 Oracle Database 소프트웨어를 설치합니다.로 이동하십시오.