새싹 DBA/Oracle

[오라클] ASM 디스크 추가(oracleasm, AFD tool)

LIMMI 2025. 1. 22. 10:45


--ASM 디스크 내용 확인

SELECT DISK.PATH, DG.NAME "DISKGROUP", DG.STATE, DG.TYPE
  FROM V$ASM_DISKGROUP DG, V$ASM_DISK DISK
 WHERE DG.GROUP_NUMBER = DISK.GROUP_NUMBER;

 
-- ASM 인스턴스에 연결되어 있는 DISK GROUP

SELECT GROUP_NUMBER, NAME, TYPE, STATE 
  FROM V$ASM_DISKGROUP;

 
-- 각 디스크 그룹 별 세부 정보 

SELECT GROUP_NUMBER, DISK_NUMBER, NAME, MOUNT_STATUS, PATH, TOTAL_MB, FREE_MB
  FROM V$ASM_DISK
 ORDER BY 1,3;

-- 여기서 path 에 /dev/oracleasm/disks~ 라고 되어있으면 oracleasm 사용하면되고
-- 만약 path 에 /AFD:DATA1 이런식으로 afd 가 적혀있으면 afd tool 을 사용해서 disk 를 붙여야한다.

1. ASM DISK 생성 (root 계정)

1) 물리 디스크 확인

$fdisk-l #디스크 및 파티션 확인
Disk/dev/mapper/vg00-lv_08: 1000GiB, 1073737629696 bytes, 2097143808 sectors
Units: sectors of 1*512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

  
2) Disk Label 확인 (lsblk)

$lsblk -o NAME, KNAME, LABEL, TYPE, SIZE, MOUNTPOINT

NAME KNAME LABEL TYPE SIZE MOUNTPOINT
sda sda disk 100G
|--sda1 sda1 part 512M/boot
|--sda2 sda2 part 40G/
|--sda3 sda3 part 10G[SWAP]
|--sda4 sda4 part 1K
|--sda5 sda5part 49.5G/ GCLOUD

sdb sdba disk 2T
|--vgg00-lv_oracle dm-0 lvm 100G /oracle/db
|--vg00-lv_logs dm-1 lvm 100G logs/oracle
|--vg00-lv_grid dm-2 lvm 100G /grid/db
|--vg00-lv_01 dm-3 DATA1 lvm 200G
|--vg00-lv_02 dm-4 DATA2 lvm 200G
|--vg00-lv_03 dm -5 DATA3 lvm 200G
|--vg00-lv_04 dm-6 DATA4 lvm 200G
|--vg00-lv_05 dm-7 DATA5 lvm 200G
|--vg00-lv_06 dm-8 DATA6 lvm 200G
|--vg00-lv_07 dm-9 RECO lvm 100G

 
 
3) ASM에 할당되지 않은 볼륨을 ASM DISK로 생성 
-- oracleasm 

$ oracleasm create disk DATA7 /dev/mapper/vg00-lv_08
Writing disk header : done
Instantiation disk:done

#등록확인
$oracleasm listdisks

 
--AFD tool

root > afdtool -add /dev/sdo DATA5 
#경로와(dev/sdo) 라벨 (data5) 는 위에서 확인한 lsblk로 확인해서 중복되지 않도록한다.

2. ASM DISKGROUP 에 DISK 할당 (grid 계정)

#추가할 수 있는 디스크 조회
$ASMCMD > lsdsk --candidate
#OR
# sqlplus 접속
sqlplus / as sysasm
SQL> SELECT D.GROUP_NUMBER, A.NAME AS DISK_GROUP, A.STATE, D.DISK_NUMBER, D.NAME, D.STATUS, D.PATH, D.TOTAL_MB, D.FREE_MB
       FROM V$ASM_DISK D
          , V$ASM_DISKGROUP A
      WHERE D.GROUP_NUMBER = A.GROU_NUMBER(+)
      ORDER BY 1,4;

--ORACLEASM 사용시
 SQL> ALTER DISKGROUP DATA ADD DISK '/dev/oracleasm/disks/DATA7' REBALANCE POWER 64;
 Diskgroup altered.
 
 --AFE 사용시
 SQL> ALTER DISKGROUP DATA ADD DISK 'AFD:DATA5' NAMD DATA5 REBALANCE POWER 64;

 
 

3. 결과 확인

SELECT GROUP_NUMBER, DISK_NUMBER, NAME, MOUNT_STATUS, PATH, TOTAL_MB
  FROM V$ASM_DISK;