스카시예약

스카시예약 에이전트는 공유 디스크를 하드웨어적으로 관리하고 보호하는 에이전트입니다.
스카시예약 에이전트를 사용하면 OS의 Hang과 같은 외부 요소에 의해 발생되는 Split-Brain 상황에서도 데이터 디스크를 안전하게 보호할 수 있습니다.
공유 스토리지가 SCSI3-PR(Persistent Reservation)를 지원한다면, 스카시예약 에이전트와 공유 디스크 에이전트를 함께 사용함으로써 공유된 데이터에 대해 한층 더 높은 안전성을 확보할 수 있습니다.
시스템(다수 또는 단일)에서 SCSI3-PR를 통하여 스토리지로 접근하려면 시스템은 스토리지에 대한 예약키(Reserved-Key)를 가지고 있어야 하며, 예약 키가 없는 시스템은 스토리지 접근이 차단됩니다.


SCSI3-PR(Persistent Reservation)를 지원하지 않는 스토리지는 스카시예약 에이전트를 사용할 수 없습니다.

이 페이지의 주요 내용

동작 방법 

스카시예약 에이전트에 의해 생성된 리소스는 각 노드 별로 등록 키(Registered-keys)가 만들어지고, 이를 속성으로 확인할 수 있습니다.
온라인 노드는 자신의 등록 키를 예약 키로 설정합니다.
스카시예약 에이전트는 설정된 예약 키로 디스크의 접근할 수 있는 노드를 구별하여 디스크의 접근 허용 여부를 결정합니다.
Split-Brain 상황에서도 시스템간 공유된 데이터를 보다 안전하게 관리할 수 있도록 스카시예약 리소스와 공유 디스크 리소스 간에 의존성을 설정합니다.



요구 사항 

스카시예약 리소스를 이용하기 위해서는 스토리지에서 SCSI3-PR을 지원하는지 확인합니다.
LUN(Logical Unit Number) 단위로 스토리지가 구성되어야 합니다. 파티션 단위로 생성한 디스크는 지원하지 않습니다. 



구성 형태

MCCS는 공유 스토리지 환경을 구성 하기 위해, 공유디스크 에이전트와 스카시예약 에이전트를 제공합니다. 
사용자는 환경에 따라 공유 디스크 에이전트만을 사용하거나, 스카시예약 에이전트와 함께 사용할 수 있습니다. 
스카시예약 에이전트를 사용하는 목적은 OS의 Hang과 같은 외부 요소에 의해 발생되는 Split-Brain 상황에 대비하여, 데이타 디스크를 보다 안전하게 관리하기 위함입니다. 

공유 디스크 에이전트만 사용해야 하는 환경

  • 스토리지에서 하나의 LUN으로, 파티션으로 2개 이상 분할하여 사용할 경우
  • 스토리지에서 SCSI3-PR을 지원하지 않는 경우


공유디스크 에이전트와 스카시예약 에이전트의 차이

1. 공유디스크 에이전트는 로컬 노드에서 디스크 접근을 관리하고, SCSI Lock 에이전트는 스토리지에서 노드의 접근을 관리 합니다.   

SW적인 디스크 관리 기능(공유디스크 에이전트)

  • 공유디스크 에이전트는 Mantech Volume Lock(이하 MVL) 커널 드라이버를 이용하여 공유 디스크의 접근통제를 관리합니다.  
  • 공유 디스크에 여러 노드가 동시에 쓰기 접근을 시도하면 데이터가 손상됩니다. 
    따라서 이런 상황을 막기 위해 공유디스크 에이전트는 운영 노드에서만 파일 시스템을 마운트(mount)하고 대기 노드에서는 쓰기 접근을 할 수 없도록 디스마운트(dismount) 한 상태를 유지합니다. 
  • MVL 은 LUN 과 파티션 모두를 관리할 수 있습니다.

HW적인 디스크 관리 기능(스카시예약 에이전트)

  • 스카시예약 에이전트는 SAN 프로토콜을 이용하여 LUN의 Write 제어 혹은 Access 제어를 관리합니다.
  • 스카시예약 에이전트의 리소스로 구성된 디스크 접근은 하나의 노드만을 허용합니다.

 

 2. 공유 디스크 에이전트, 스카시예약 에이전트 모두 데이터를 읽고 쓰기가 가능합니다.
그러나 스카시예약 에이전트는 공유스토리지 리소스의 보호가 목적이기 때문에, 단독 사용하여 데이터를 읽고 쓰는 방법을 권장하지 않습니다. 


구성 방법

스카시예약 에이전트 리소스는 공유디스크 에이전트와 2가지 형태로 구성할 수 있으며, 스카시예약 에이전트 리소스의 속성 값에 따라 구성 방법이 나눠집니다.


공유디스크와 스카시예약 리소스를 동일한 LUN에 적용하여 구성

공유디스크 에이전트는 MVL 드라이버를 이용하여 DATA-DISK를 관리하고, 스카시예약 에이전트는 SCSI3-PR 기능을 이용하여 LOCK-DISK를 관리합니다.
스카시예약 리소스와 공유디스크 리소스 간의 의존관계를 설정함으로써, Split-Brain과 같은 상황에서 발생하는 DATA-DISK의 손상을 방지할 수 있습니다. 

 

 [그림] 공유디스크와 스카시예약 리소스를 동일한 LUN으로 구성


DATA-DISK 의미

  • 공유 디스크 에이전트를 이용하여 생성한 디스크를 나타냅니다. 실제 사용자 데이터가 사용되는 디스크를 나타냅니다.  

LOCK-DISK 의미 

  • 스카시예약 에이전트를 이용하여 생성한 디스크를 나타냅니다. 
    공유 디스크 에이전트 연동 시 공유 디스크에서 사용하는 DATA-DISK에 의존성을 설정하여 사용되는 디스크입니다.



구성 예제

공유디스크와 SCSI Lock 리소스를 동일한 LUN에 적용하여 구성

[그림] 공유디스크와 스카시예약 리소스를 동일한 LUN으로 구성 


우선 공유디스크 에이전트 설정 절차에 따라 등록하고 정상적으로 동작이 되는지 확인한 후에 스카시예약 에이전트용 디스크를 설정합니다.

등록 절차

  1. 양 노드 MCCS 설치
  2. 그룹 설정
  3. 공유 디스크 리소스 추가
  4. 공유 디스크 리소스 활성화 및 양 노드 Offline 확인 
  5. 스카시예약 리소스 추가(공유 디스크 리소스를 생성했던 드라이브 문자로 선택합니다).
  6. 스카시예약 리소스 활성화 및 MCCS Console의 리소스 속성에서 Key 확인 
  7. 리소스 의존성 구성(스카시예약 리소스가 공유디스크보다 먼저 Online 되게 구성이 되어야 합니다).
  8. 노드2에서 노드1로 페일오버 시험
  9. 노드1에서 노드2로 페일오버 시험
  10. 해당 볼륨을 사용하는 고객 응용프로그램 설정

추가

스카시 예약 리소스 새로 추가하는 방법

스카시 예약 응용 리소스를 그룹에 추가합니다.
스카시 예약 리소스 구성전에, SCSI3지원 스토리지를 통해 볼륨을 사전에 구성 해야 합니다. 


  1. 그룹 선택 → 마우스 우 클릭 → [리소스 추가]를 선택합니다.
  2. 리소스 위자드에서 공유 디스크를 선택하고 [Next] 버튼을 클릭합니다.
  3. 스카시예약 리소스에 사용할 드라이브 문자를 선택하면 자동으로 권장이름을 제공해줍니다.

    [그림] 스카시예약 리소스 추가 화면

  4. [완료] 버튼을 클릭하면 스카시 예약 리소스가 추가 됩니다.


리소스 복사 및 붙여넣기

새로운 리소스를 생성 할 때 필수 입력이 되어야 하는 속성 값을 매번 새로 입력하기가 번거롭습니다.

기존에 존재하는 리소스와 유사한 설정 값을 대부분 유지한 상태에서 리소스를 추가 하기 위해서는 관리 웹콘솔 화면에서 리소스 복사 및 붙여넣기 기능을 사용하여 손쉽게 리소스를 추가할 수 있습니다.

리소스 복사의 대상은 개별 리소스이며, 붙여넣기의 대상은 해당 그룹 또는 타 그룹입니다.

리소스 붙여넣기의 속성값은 기본적으로 복사한 리소스의 속성값을 유지합니다.

따라서 붙여넣는 리소스의 속성을 상황에 맞게 변경해야 복사한 리소스의 속성과 중복되지 않습니다.

 

리소스 복사하기

  1. 복사하고자 하는 리소스에 대해서 마우스 우 클릭 → 리소스 복사를 선택합니다.
  2. 복사한 리소스를 붙여넣기 할 대상인 그룹에 마우스 우 클릭 → 리소스 붙여넣기를 선택합니다.


리소스 붙여넣기

새로 추가 할 리소스의 네트워크 어댑터를 선택하시고 리소스 이름을 명명하면 됩니다.

기본적으로 붙여넣기한 리소스 이름은 복사한 리소스의 이름에 "_1" 이 접미어로 제공됩니다. 리소스 타입에 따라 필요한 정보를 더 입력해 합니다.


[그림] 네트워크 카드 리소스 붙여넣기 화면


삭제

해당 리소스 선택  → 마우스 우 클릭  리소스 삭제를 선택합니다.


상태

다음 테이블은 상태와 사용자 명령에 의해 발생되는 MCCS 리소스의 상태 변화에 대한 설명입니다.

스카시예약 에이전트: 스카시 예약 디스크를 관리합니다. 


상태Agent 가능 명령설명

온라인

온라인 된 노드에서 디스크의 키가 배타적으로 예약된 상태입니다.
다른 노드에서는 키를 등록 할 수 없습니다.

오프라인

예약키를 제거(clear)하여 오프라인으로 전환합니다.

모니터링

디스크에 예약된 키를 비교하여 예약이 걸려있는지 확인합니다.

오프라인

디스크에 키가 등록되어 있지 않은 상태입니다. 

온라인

디스크 예약을 위해 키를 등록하여 온라인으로 전환합니다.

모니터링

디스크에 예약된 키를 비교하여 예약이 걸려있는지 확인합니다.

장애

온라인 중에 현재 예약된 키가아닌 새로운 키가 등록되면 발생합니다.

온라인

디스크 예약을 위해 키를 등록하여 온라인으로 전환합니다.

오프라인예약키를 제거(clear)하여 오프라인으로 전환합니다.


scsicmd.cmd 명령

형식

 scsicmd [option] [diskID]

옵션

SCSI3 PR 명령을 손쉽게 사용하도록 지원하는 유틸리티이고 다음과 같은 옵션을 제공합니다. 

옵션

설명

-c diskId

시스템에 등록된 디스크 중에서 로컬 노드의 예약 키와 등록 키 삭제합니다

-cf diskId

시스템에 등록된 디스크 중에서 예약 키와 등록 키 모두 강제로 삭제합니다. 
예상하지 못한 예약이 걸려서 디스크에 접근을 못할 경우 응급 해제 용도로 사용합니다.

-r diskIddiskId로 지정된 디스크를 등록합니다.

-l diskId

어떤 노드로 예약되지 않았다면, 지정된 디스크를 잠그고 예약을 합니다.   

-lf diskId

어떤 노드로 예약이 되어 있어도, 지정된 디스크를 강제로 잠그고 예약을 합니다.
즉, 다른 노드가 이미 예약하였다면 예약을 강제로 빼앗아 옵니다.

-hscsicmd 의 도움말을 보여줍니다.

no option

옵션이 없는 경우 시스템의 디스크 예약 관련 상태정보를 보여줍니다.

샘플출력

소스 노드의 "scsicmd" 명령어 출력결과 (C29043F13는 소스노드의 MAC Address 입니다.)

Disk DUID(DeviceUniqueID)LetterPRReserved-KeyRegistered-Keys
0
CNononenone
1
DNononenone
200c0ffd796550000f38be34f01000000EYesnonenone
300c0ffd796550000138ce34f01000000FYesC29043F13*C29043F13*
400c0ffd7965500002e8ce34f01000000GYesnonenone


타겟 노드의 'scsicmd' 명령어 출력결과 (C29043F13는 소스노드의 MAC Address 입니다.)

Disk DUID(DeviceUniqueID)LetterPRReserved-KeyRegistered-Keys
0
CNononenone
1
DNononenone
200c0ffd796550000f38be34f01000000EYesnonenone
300c0ffd796550000138ce34f01000000FYesC29043F13C29043F13
400c0ffd7965500002e8ce34f01000000GYesnonenone

Disk 0번(C:)은 PR이 "No" 로 설정되었기 때문에 SCSI3-PR을 지원하는 디스크가 아닌 것을 확인할 수 있습니다. (보통 드라이브 문자가 "C"인 디스크는 시스템의 Booting 디스크이고, SCSI를 지원하지 않습니다.)
또한 Disk 1번(D:)은 PR이 "No"로 설정되어 있습니다. SCSI3-PR을 지원하는 디스크가 아닌 것을 확인할 수 있습니다.(Internal Disk는 SCSI3-PR을 지원하지 않습니다.)
Disk 2번(E:)과 Disk 4번(G:)은 SCSI3-PR이 "Yes"로 설정되어 있어 SCSI3- PR을 지원하는 Storage 장치를 이용하고 있으며, Reserved-Key와 Registered-Keys가 "none"으로 되어 있어 아직 등록되지 않는 상태를 의미합니다.
Disk 3번(F:)은 Reserved-Key와 Registered-Keys가 소스 노드에서는 C29043F13*, C29043F13*로 타겟노드에서는 C29043F13, C29043F13로 등록되어 있고 이것은 스카시예약 에이전트를 이용해 리소스를 생성한 상태입니다.
두 노드 중 (*)표시가 포함된 Reserved-Key와 Registered-Keys가 디스크 예약을 하고 있음을 나타냅니다. 또 Reserved-Key에 값을 가지고 있고 (*)표시가 되어있는 (예: C29043F13*) 노드만 디스크에 접근할 수 있습니다.