Section | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
동작 방법
스카시예약 에이전트에 의해 생성 된 생성된 리소스는 각 노드 별로 등록 키등록키(Registered-keys)가 만들어 지고, 이를 속성으로 확인 할 확인할 수 있습니다.
온라인 노드는 자신의 등록 키를 예약 키로 설정합니다.
스카시예약 에이전트는 설정된 예약 키로 디스크의 접근할 수 있는 노드를 구별하여 디스크의 접근 허용 여부를 결정합니다.
Split-Brain 상황에서도 시스템간 공유된 데이터를 보다 안전하게 관리할 수 있도록 스카시예약 리소스와 공유디스크 리소스 간에 의존성을 설정합니다.
...
Info |
---|
SW적인 디스크 관리 기능(공유디스크 에이전트)
HW적인 디스크 관리 기능(스카시예약 에이전트)
|
2. 공유디스크 에이전트, 스카시예약 에이전트 모두 데이터를 읽고 쓰기가 가능합니다읽고 쓸 수 있습니다.
그러나 스카시예약 에이전트는 공유스토리지 리소스 보호가 목적이기 때문에 단독 사용하여 데이터를 읽고 쓰는 방법을 권장하지 않습니다.
그래서 스카시예약 에이전트는 공유스토리지 에이전트와 함께 사용하거나, 공유 스토리지와 별개의 LUN 을 사용하는 옵션(PrType)을 지원합니다.
Info |
---|
PrType (Persist Type) =1 (Write Exclusive) 은 LUN 에 대한 Write만을 제어 합니다. 이 옵션은 공유스토리지 에이전트에 의해 구성된 LUN과 함께 사용할 수 있습니다. 디스크는 작은 용량(약 1G1GB)으로도 가능하며 내용은 보호하지 않습니다. |
구성 방법
스카시예약 에이전트 리소스는 공유디스크 에이전트와 2가지 형태로 구성할 수 있으며, 스카시예약 에이전트 리소스의 속성값에 속성 값에 따라 구성 방법이 나눠집니다.
1. 공유디스크와 스카시예약 리소스를 동일한 LUN에 적용하여 구성 (PrType=1)
스카시예약 에이전트의 리소스에서 속성이 PrType 이 1 인 옵션을 사용하면, 하나의 LUN을 이용하여 공유디스크 리소스와 스카시예약 리소스를 구성합니다.
공유디스크 에이전트는 mount / umount를 이용하여 DATA-DISK를 관리하고, 스카시예약 에이전트는 SCSI3-PR 기능을 이용하여 LOCK-DISK를 관리 합니다관리합니다.
스카시예약 리소스와 공유디스크 리소스 간의 의존관계를 설정함으로써, Split-Brain 과 같은 상황에 발생하는 DATA-DISK의 손상을 방지 할 방지할 수 있습니다.
[그림] 공유디스크와 스카시예약 리소스를 동일한 LUN으로 구성 (PrType 이 1일 경우 구성)
...
공유디스크 에이전트는 단일 드라이브 문자 단위로 DATA-DISK를 관리하고, 스카시예약 에이전트 또한 별도의 독립된 단일 LUN을 LOCK-DISK 전용으로 관리합니다.
이 구성을 위해서는 공유디스크에 최소 2개 이상의 LUN 분할이 존재해야 합니다.
아래 그림과 같이 공유디스크 에이전트와 1:1로 의존시킬 LOCK-DISK 볼륨을 생성합니다.
공유디스크 에이전트 다수와 스카시예약 에이전트 1개를 이용해, 의존성을 구성해서 의존관계를 구성하여 사용할 수도 있습니다
이 디스크는 스토리지에 접근할 수 있는 노드를 확인 하기 위해 노드 확인에 이용하기 때문에 크기가 작아도 상관 없습니다됩니다.
스카시예약 리소스와 공유디스크 리소스 간의 의존관계를 설정함으로써, Split-Brain 과 Brain과 같은 상황에 발생하는 DATA-DISK의 손상을 방지 할 방지할 수 있습니다.
[그림] 공유디스크와 스카시예약 리소스를 서로 다른 LUN으로 구성 (PrType 이 3일 경우 구성)
...
Info |
---|
DATA-DISK 의미
LOCK-DISK 의미
|
...
- 양 노드 MCCS 설치
- 그룹 설정
- 공유 디스크 리소스 추가
- 공유 디스크 리소스 활성화 및 양 노드 Offline 확인
- 스카시예약 리소스 추가 (공유 디스크 공유디스크 리소스를 생성했던 장치경로로 장치경로를 선택합니다.)
- 스카시예약 리소스 활성화 및 MCCS Console의 리소스 속성에서 Key 확인
- 리소스 의존성 구성(스카시예약 리소스가 공유디스크보다 먼저 Online 되게 구성이 되어야 합니다.)
- 노드2에서 노드1로 페일오버 시험
- 노드1에서 노드2로 페일오버 시험
- 해당 볼륨을 사용하는 고객 응용프로그램 설정
...
우선 공유디스크 에이전트 설정 절차에 따라 등록하고 정상적으로 동작이 되는지 확인한 후에 스카시예약 에이전트용 디스크를 설정합니다.
- 양 노드 MCCS 설치
- 그룹 설정
- 공유 디스크 공유디스크 리소스 추가
- 공유 디스크 공유디스크 리소스 활성화 및 양 노드 Offline 확인
- 스카시예약 리소스 추가 (공유 디스크 공유디스크 리소스에서 선택하지 않은 새로운 장치경로 장치경로를 선택합니다.)
- 스카시예약 리소스 활성화 및 MCCS Console의 리소스 속성에서 Key 확인
- 스카시예약 리소스의 속성에서 PrType 1을 3으로 변경
- 리소스 의존성 구성(SCSI Lock 리소스가 공유디스크보다 먼저 Online 되게 구성이 되어야 합니다.)
- 노드2에서 노드1로 페일오버 시험
- 노드1에서 노드2로 페일오버 시험
- 해당 볼륨을 사용하는 고객 응용프로그램 설정
...
리소스를 추가하는 두 가지 방법이 있습니다.
하나는 그룹 이름에서 리소스를 추가하는 것이고, 또 하나는 리소스타입에서 리소스를 리소스 타입에서 리소스를 추가하는 것입니다
그룹에서 추가 할 경우
- 그룹 - 마우스 오른쪽 클릭 - 리소스 추가를 선택합니다.
[그림] 리소스 위자드 리소스추가 화면 - 리소스 위자드에서 스카시예약을 선택하고 Next 버튼을 클릭합니다.
[그림] 리소스 위자드 선택화면 - 나머지 과정은 아래의 리소스 타입에서 추가 할 경우와 같습니다.
...
- 리소스타입 - 마우스 우 클릭 - 리소스 추가를 선택합니다.
[그림] 리소스 타입 리소스추가 화면 - 정보를 모두 가져오게 되면 가져오면 스카시예약 리소스로 사용할 장치경로를 선택할 수 있습니다.
[그림] 스카시예약 리소스 장치경로 선택 화면 - 스카시예약 리소스를 등록할 장치경로가 없다면 "디스크없음" 메시지가 나옵니다.
[그림] 스카시예약 리소스를 등록 할 수 없을 경우 화면 - 스카시예약 리소스에 사용할 장치경로를 선택하면 자동으로 권장이름을 제공해줍니다.
[그림] 스카시예약 리소스 드라이브 선택 화면 - 완료를 선택하면 스카시예약 리소스가 등록됩니다.
[그림] 스카시예약 리소스 등록 완료 화면
...
다음 테이블은 상태와 사용자 명령에 의해 발생되는 MCCS 리소스의 상태 이동에 대해 설명합니다.
명령은 사용자 명령에 사용자에 의해 발생되는 것을 전제로 합니다.
스카시예약 에이전트: 스카시 예약 디스크를 관리합니다.
상태 | Agent 가능 명령 | 설명 | 비고 |
---|---|---|---|
온라인 온라인 된 노드에서 디스크의 키가 베타적으로 배타적으로 예약된 상태입니다. | 오프라인 | 보관중인 예약키를 무시하고 새로 예약키를 만든 후 예약을 유지한 상태로 오프라인으로 전환합니다. | |
모니터링 | 디스크에 예약된 키를 비교하여 예약이 걸려있는지 확인합니다. | ||
오프라인 1. 디스크가 예약은 되어 있지만 리소스 상태는 오프라인 상태입니다. | 온라인 | 디스크 예약을 위해 키를 등록하고 상대 노드의 응답을 대기합니다. 한번 온라인 한 번 온라인한 이후에는 상대 노드의 예약을 빼앗아 오는 형태(preempt)로 온라인이 진행됩니다. | |
모니터링 | 디스크에 예약된 키를 비교하여 예약이 걸려있는지 확인합니다. | ||
장애 온라인 중 예약을 빼앗긴 경우에 발생합니다. | 온라인 | 디스크 예약을 위해 키를 등록하고 상대 노드의 응답을 대기합니다. 한번 온라인 한 번 온라인한 이후에는 상대 노드의 예약을 빼앗아 오는 형태(preempt)로 온라인이 진행됩니다. | |
오프라인 | 보관중인 예약키를 무시하고 새로 예약키를 만든 후 예약을 유지한 상태로 오프라인으로 전환합니다. |
...
스카시예약 리소스 기본 속성 에서 언급된 것 이외에 다음과 같은 상세 속성을 제공합니다.
설정은 리소스 속성 탭의 "리소스 고유속성" 에서 설정합니다.
각 속성값들의 속성 값의 의미는 다음과 같습니다.
속성 명 | 설명 | 데이터 타입 | 기본값 | 수정 | 비고 |
DevicePath | 예약에 사용할 디스크의 장치경로를 지정합니다. | STRING | X | ||
DiskDUID | 디스크의 DUID(Device Unique ID, Hex값으로 16바이트 크기)를 식별자로 사용합니다. | STRING | X | ||
Key | MAC 주소를 예약 키로예약키로 사용합니다. 이 키는 에이전트가 자동으로 설정합니다설정합니다. | STRING | X | ||
PreemptWaitCount | 노드가 디스크를 예약할 때 상대노드에 예약 요청을 하고 응답을 대기합니다. | STRING | 2회 | O | |
PrType | SCSI3-PR 스펙에서 정의하는 Persist Type 으로 예약 디스크의 접근 권한을 어떻게 부여할 것인지 설정하는 속성입니다. | STRING | Prytpe = 1 | O |
...
옵션 | 설명 |
-c devicePath | 시스템에 등록된 디스크 중에서 로컬 노드의 예약 키와 등록 키 삭제합니다 |
-cf devicePath | 시스템에 등록된 디스크 중에서 예약 키와 등록 키 모두 강제로 삭제합니다. |
-r devicePath | 장치경로로 지정된 디스크를 등록합니다. |
-l devicePath | 어떤 노드로 예약되지 않았다면, 지정된 디스크를 잠그고 예약을 합니다. |
-lf devicePath | 어떤 노드로 예약이 되어 있어도, 지정된 디스크를 강제로 잠그고 예약을 합니다. |
-h | scsicmd 의 도움말을 보여줍니다. |
no option | 옵션이 없는 경우 시스템의 디스크 예약 관련 상태정보를 보여줍니다. |
샘플출력
Panel | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
소스노드의 소스 노드의 'scsicmd'명령어 출력결과 (C29043F13는 소스노드의 소스 노드의 MAC Address 입니다.)
타겟노드의 타겟 노드의 'scsicmd'명령어 출력결과 (C29043F13는 소스노드의 소스 노드의 MAC Address 입니다.)
|
디바이스 "/dev/sda"은 PR이 "No" 로 설정되었기 때문에 SCSI3-PR을 지원하는 디스크가 아닌 것을 확인 할 확인할 수 있습니다. (보통 장치경로가 "/dev/sda"로 시작하는 것은 시스템 디스크이고, SCSI를 지원하지 않습니다.)
또한 디바이스 "/dev/sdb"은 PR이 "No"로 설정되어 있습니다. SCSI3있으므로 SCSI3-PR을 지원하는 디스크가 아닌 것을 확인 할 확인할 수 있습니다.(Internal Disk는 SCSI3-PR을 지원하지 않습니다.)
디바이스 "/dev/sdc"과 디바이스 "/dev/sde"은 SCSI3-PR이 "Yes"로 설정되어 있어 SCSI3있으므로 SCSI3-PR을 지원하는 Storage 장치를 이용하고 있으며, 있음을 나타냅니다. 또한 Reserved-Key 와 Registered-Keys가 "none"으로 되어 있어 아직 인 것은 아직 등록되지 않는 상태를 의미 합니다.
디바이스 "/dev/sdd"의 경우 Reserved-Key와 Registered-Keys가 소스노드에서는 소스 노드에서는 C29043F13*, C29043F13*로 타겟노드에서는 타겟 노드에서는 C29043F13, C29043F13로 등록되어 있고 이것은 스카시예약 에이전트를 이용해 리소스를 생성 한 생성한 상태입니다.
두 노드 중 (*)표시가 포함 된 Reserved-Key와 Registered-Keys가 디스크 예약을 하고 있음을 나타냅니다. 또 Reserved-Key에 값을 가지고 있고 (*)표시가 되어있는 (예: C29043F13*) 노드만 디스크 접근을 할 디스크에 접근할 수 있습니다.