적용 대상:
Oracle Exadata Storage Server Software - 버전 11.1.0.3.0 과(와) 그 후속
Exadata Database Machine X2-2 Hardware - 버전 All Versions to All Versions [릴리즈 All Releases]
Oracle Solaris on x86-64 (64-bit)
Linux x86-64
목적
다양한 이유로 인하여 (예를 들어 미디어 오류 카운트 증가) 엑사데이터 스토리지 셀 내에서의 온라인 디스크들을 교체합니다. 이 문서의 목적은 온라인 디스크는 엑사데이터 자동 디스크 관리 기능들에 의하여 ASM 디스크그룹들로 부터 삭제되지 않는 것을 위한 것입니다.
해결책
11.2.3.3.0 이후
엑사데이터 스토리지 서버 버전 11.2.3.3.0 이상에서, 새로운 cellcli 명령어 절차의 수행을 용이하게 하기 의하여 "ALTER PHYSICALDISK <disk number> DROP FOR REPLACEMENT" 는 도입 되었습니다. 예를들어:
CellCLI> ALTER PHYSICALDISK 20:2 DROP FOR REPLACEMENT
명령어는 디스크가 안전하게 제거 할 수 있을지를 확인하기 위하여 검사를 수행할 것이며, 다음에 교체를 준비합니다. 일단 성공적으로 완료하면, 디스크내의 청색 LED 는 켜지게 될 것 입니다. 명령어의 검사들과 동작들의 대략적인 개요는 백그라운드에서 수행합니다:
- 만약 교체되어질 디스크에 연관되어진 파트너 디스크들이 온라인인지 보기 위하여 ASM 을 확인하세요. 이러한 파트너 디스크들은 다른 스토리지 셀들에 위치합니다. 만약 어느 파트너 디스크들이 ASM 내에서 오프라인 일 경우 명령어는 실패 할 것입니다. 이것은 "list griddisk attributes name, asmdeactivationoutcome" 을 실행하는 것과 같습니다.
- 셀의 운영 시스템이 위치한 (슬롯 0 과 1) 두개의 디스크들중에 하나에 대해서 실행하는 경우, 만약 MD 파트너 디스크들이 동기화하는 경우 확인을 할 것입니다. 만약 그것들이 되지 않는다면, 명령어는 실패할 것입니다.
- 만약 위의 결과가 성공적이라면, Management Server (MS) 는 물리디스크내에 위치하고 있는 그리드디스크들을 비활성화로 표시할 것을 요청 할 것입니다. 그리드디스크들에서 이 결과들은 ASM 내에서 오프라인이 됩니다.
- 셀 디스크는 제거 되었으며(단지 메모리로 부터) 그리고 청색 LED 는 켜집니다. 현재 디스크는 물리적으로 교체에 대한 준비가 되었습니다.
주의사항은 명령어는 ASM 으로부터 그리드디스크들의 삭제를 시작하지 않으며, 대신 디스크들의 오프라인에 대해 선택합니다. 예를 들어, 이 명령어가 실행되어진 결과로써 리밸런스가 발생하지 않을 것 입니다. 이 방법의 장점은 명령어가 완료 되자마자 디스크는 교체할 수 있으며 단일 리밸런스작업이 발생할 것이며, 새로운 디스크가 추가되어진 이후에 디스크는 위치합니다. 디스크가 교체되어 진 이후에 접근방식은 중복을 복원하기 위하여 파트너 디스크에 위치한 보조 (미러) 범위의 무결성에 의존합니다. 이것은 디스크 실패 이후에 발생한 것과 유사한 여러가지 방법입니다. 만약 다른 셀들에 위치하고 있는 다른 디스크들이 I/O 문제들을 가지거나 경험한 경우 (예를 들어 ASM 또는 데이터베이스 인스턴스들 alert logs) 이 절차를 수행하는 동안 ASM 과 디스크그룹들의 부분은 여전히 온라인이며, 이것은 ASM 으로부터 삭제되어지는 디스크와 리밸런스를 실행하는 아래의 수동적인 절차에 따르는 것보다 더욱 현명한 것일지도 모릅니다. 리밸런스는 삭제되어진 디스크에 저장되어진 기본 범위들과 디스크가 삭제되어진 이후에 전체 중복을 복원하기 위한 파트너 디스크들에 저장되어 미러된 범위들을 접근 할 수 있을 것 입니다. 이것은 파트너 디스크들내에 미러되어진 범위들에 단지 접근할 수 있도록 추가되어진 새로운 디스크에 따른 단일 리밸런스와 대조적 입니다. 만약 "ALTER PHYSICALDISK DROP FOR REPLACEMENT" 을 실행한 후, 물리적인 디스크 교체를 하지 않는 것을 결정하거나, 또는 명령어가 잘못된 디스크에 대해서 실행한다면, 다음의 명령어는 디스크를 다시 활성화 그리고 다시 디스크를 추가 실행 할 수 있습니다:
CellCLI> ALTER PHYSICALDISK 20:2 REENABLE
만약 디스크가 제거 되어지고 다시 다른 슬롯에 추가되어지면, "cellcli -e list lun" 는 "normal - rejected due to wrong slot" 의 상태를 나타낼 수 있습니다. 이것을 해결하기 위하여, 실행하세요:
CellCLI> ALTER PHYSICALDISK 20:2 REENABLE FORCE
수동적인 절차 (11.2.3.2.1 이전)
1 ~ 7 단계는 싸이트에 도착하기로 예정 되어진 필드 엔지니어가 오기 몇 시간전에 수행되어져야 하며, ASM 으로부터 디스크의 삭제들을 완료하기 위하여 리밸런스를 하기 위해서 입니다. 디스크가 완료 삭제된 후 리밸런스를 시작하는 것을 허용하는 것은 요구사항은 아니며 모든 장애 시나리오에 적용되지 않을 수 있는 반면, 이것은 데이터 무결성에 영향을 미칠 수 있는 드문 경우를 피하는데 도움이 될 수 있습니다.
1. 디스크를 교체할 필요성이 있는지 확인하여야 합니다:
확인: Determining when Disks should be replaced on Oracle Exadata Database Machine Document 1452325.1
2. 교체 할 디스크에 다른 파트너 디스크들이 오프라인 또는 누락되지 않았는지 확인하여야 합니다. 8개까지 파트너 디스크들이 있으며 다른 셀 스토리지 (failgroups) 에 위치되어 있습니다. NB:
만약에 다른 스토리지 셀들에 다른 디스크들이 오프라인이 있고 디스크의 파트너들이 교체되어지는 것이 발생되며, 교체하는 디스크는 모든 디스크그룹들이 디스마운트가 되며, 데이터베이스 인스턴스들은 크래쉬되며 점진적으로 데이터 유실이 되는 결과가 될 수 있습니다. 어떠한 시점에, 두개의 다른 스토리지 셀들로부터 디스크들을 동시에 제거하시면 안됩니다. 또한, 만약 하나 또는 이상의 디스크들이 이미 다른 스토리지 셀에서 오프라인이라면 주어진 결과의 스토리 셀(이전에 수행되어진 아래의 체크사항들)로부터 어떠한 디스크도 제거될 수 없습니다.
a) ASM 에서 아래의 쿼리들을 실행하세요. 기본적으로, 각각의 실패그룹은 RECO, DATA 디스크그룹들내에 12 디스크들 그리고 DBFG_DG 에는 10 디스크들을 포함해야 합니다. mode_status 는 CACHED 그리고 mount_status 는 ONLINE 이 되어야 합니다.
col path format a40
col name format a30
col failgroup format a30
set linesize 200
select group_number, name from v$asm_diskgroup;
select inst_id,group_number,failgroup,mount_status,count(*) from gv$asm_disk
group by inst_id,group_number,failgroup,mount_status;
select inst_id,group_number,failgroup,mode_status,count(*) from gv$asm_disk
group by inst_id,group_number,failgroup,mode_status;
b) 디스크가 제거되어진 곳의 스토리지 셀에서, 다음의 cellcli 쿼리를 실행하세요. 만약 모든 디스크들에 대해서 "asmdeactivationoutcome" 가 "Yes" 이면 단지 교체만 진행 하십시오 :
cellcli -e list griddisk attributes name, status, asmdeactivationoutcome
c) 아래의 문서는 형식화 된 ASM 출력결과를 얻을 수 있으며 오프라인 디스크들에 대한 내용을 검토할 수 있는 좋은 방법입니다:
How To Gather/Backup ASM Metadata In A Formatted Manner? (Doc ID 470211.1)
3. ASM_POWER_LIMIT 속성에 대한 값을 확인하세요. 만약 0 이면, 0 가 아닌 값으로 설정하면 그 결과 디스크 교체 후에 리밸런스는 발생 할 수 있으며 새롭게 추가되어진 디스크들은 데이터가 쓰여질 것 입니다.
alter system set asm_power_limit=4;
4. 어떠한 노드내의 인스턴스에서 리밸런스 수행이 일어나지 않는지 확인하세요:
select * from gv$asm_operation;
위의 쿼리는 0 로우를 반환햐야 합니다. 단지 0 로우를 반환 할때 리밸런스가 없다는 것을 결정 할 수 있습니다. 만약 어떠한 로우의 결과가 있다면, 리밸런스가 완료되며 쿼리가 no rows 를 반환할 때까지 기다려야만 합니다.
주의사항으로 랙내에서 모든 ASM 인스턴스들로부터 데이터를 주는 gv$ 뷰를 사용하여야 합니다. 다른 ASM 인스턴스에서 리밸런스가 실행중에 있을때, v$ 를 조회하는 것은 정확한 결과를 가져오지 않습니다.
5. 교체되어진 물리적 디스크에 존재하는 ASM 그리드디스크들을 확인하세요:
a. 셀 노드에서 다음을 수행하세요:
- Find the lun number "0_11" in the list physicaldisk detail output
# cellcli -e list physicaldisk detail
.....
luns: 0_11
.....
- Find the "name" associated to this LUN using the following syntax
# cellcli -e list lun attributes name where id=0_11
- Find the celldisk created for this lun (physicaldisk)
# cellcli -e list celldisk where lun=0_11
CD_11_dmorlcel02 normal
- Find the griddisks created for this celldisk
# cellcli -e list griddisk where celldisk=CD_11_dmorlcel02
DATA_CD_11_dmorlcel02 active
RECO_CD_11_dmorlcel02 active
DBFS_DG_CD_11_dmorlcel02
b. ASM 인스턴스와 연결된 어떠한 디비 노드에서 다음을 수행하세요:
ㅁ
SQL> select name, substr(path,1,50) , mount_status, header_status, state from v$asm_disk where name in ('DATA_CD_11_DMORLCEL02','RECO_CD_11_DMORLCEL02');
NAME SUBSTR (PATH,1,50) MOUNT_S HEADER_STA STATE
------------------------------ ---------------------------------------- ------
DATA_CD_11_DMORLCEL02 o/192.168.xxx.6/DATA_CD_11_dmorlcel02 CACHED MEMBER NORMAL
RECO_CD_11_DMORLCEL02 o/192.168.xxx.6/RECO_CD_11_dmorlcel02 CACHED MEMBER NORMAL
DBFS_DG_CD_11_DMORLCEL02 o/192.168.xxx.6/DBFS_DG_CD_11_dmorlcel02 CACHED MEMBER NORMAL
6. 지금 디스크 그룹(들)로 부터 디스크는 삭제됩니다:
alter diskgroup DATA drop disk 'DATA_CD_11_DMORLCEL02';
alter diskgroup RECO drop disk 'RECO_CD_11_DMORLCEL02';
alter diskgroup DBFS_DG drop disk 'DBFS_DG_CD_11_DMORLCEL02';
7. 배드 디스크내에 그리드 디스크들과 연관되어진 Oracle ASM 디스크들이 성공적으로 제거 될 때까지 기다리며 리밸런스는 V$ASM_DISK_STAT 과 GV$ASM_OPERATION 뷰들을 조회하여 완료됨을 확인할 수 있습니다. GV$ASM_OPERATION 의 결과에서 no rows 를 반환하면 리밸런스는 완료 되었습니다.
V$ASM_DISK_STAT 는 V$ASM_DISK 를 수행하는 방식과 같은 방법으로 디스크 통계를 표시하지만 새로운 디스크들의 검색을 수행하지 않습니다. 이것은 적은 비용의 연산 결과들 입니다. 그러나, 검색이 수행되지 않기 때문에, 이 보기의 결과는 시스템의 새로운 디스크들에 대한 어떠한 결과도 포함하지 않습니다.
8. 하드웨어 수준에서 디스크에 황색 표시 LED 를 설정하여 서비스하는 것을 표시합니다:
cellcli -e 'alter physicaldisk disk_name serviceled on'
여기 disk_name 은 물리적 디스크 '20:11' 의 이름으로 대체되어 질 것입니다.
이 단계는 교체할 디스크를 식별하는데 도움을 줄 것입니다. 이 명령어는 11.2.2.2 이하의 버전들에서는 동작하지 않을 수 있음을 참고하십시요, 그러나 필수사항은 아닙니다.
9. 지금 하드웨어 레벨에서 디스크를 교체하세요. 서비스 LED 는 이전 단계의 결과로써 디스크에 대해서 켜질 것 입니다.
10. 디스크 교체 후, 엑사데이터 소프트웨어는 자동적으로 LUN, 셀디스크, 그리드디스크들을 생성할 것입니다. 이러한 동작을 보기 위하여 셀 alert.log 와 ASM alert.log 추적 할 수 있습니다. 그러나, 디스크들이 삭제되어지는 동안 FORCE 선택사항을 사용하지 않았을 때 디스크들은 다시 ASM 디스크들에 다시 추가되어지지 않을 것입니다. 그래서 디스크들을 수동적으로 추가가 필요합니다. ASM 으로부터 아래의 명령어를 실행하세요:
alter diskgroup DATA add disk 'o/192.168.xxx.6/DATA_CD_11_dmorlcel02';
alter diskgroup RECO add disk 'o/192.168.xxx.6/RECO_CD_11_dmorlcel02';
alter diskgroup DBFS_DG add disk 'o/192.168.xxx.6/DBFS_DG_CD_11_dmorlcel02';
-- Cell alert.log 파일의 위치:
$CELLTRACE/alert.log.
-- ASM alert.log 파일의 위치:
<diagnostic_dest>/diag/asm/+asm/+ASM2/trace
11. 아래 쿼리를 사용하여 리밸런스가 완료 될 때까지 확인하세요:
select * from gv$asm_operation;
12. 일단 리밸런스가 완료되면, 다시 ASM 디스크들의 상태를 확인하시고 모든것이 정상인지 검증 하십시오. 모든 디스크들의 mount_status 는 ONLINE, mode_status 는 CACHED 가 될 것으로 예상합니다:
SQL> select name, substr(path,1,50) , mount_status, header_status, state from v$asm_disk where name in ('DATA_CD_11_DMORLCEL02','RECO_CD_11_DMORLCEL02');
13. 새로운 디스크가 삽입되었을 때, "Disk Cache Policy" 는 "Disk's Default" 로 설정될 수 있습니다.
'Disabled' 로 표시되어야 하며 그렇지 않다면 exachk 유틸리티는 오류를 보고 할 것 입니다. 새로운 디스크를 삽입한 이후에 이 값을 변경하기 위하여 다음을 실행하세요.
# /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp -DisDskCache -LAll -a0