Microsoft Cluster 서비스는 DISK 에 대해서 Shared-Nothing 모델입니다. 즉, 클러스터 멤버 간 동시에 디스크를 공유하지 않는 것을 의미합니다. 그렇다면 Cluster 서비스를 설치하지 않고 두 서버에서 SAN Storage DISK 를 공유하면 어떤 문제가 발생할까요? 이 시나리오에 대한 정확한 테스트는 아닙니다만 iSCSI 공유 디스크를 두 서버에서 공유하였을 때 즉, 잘못된 디스크 구성에 의해 발생하는 문제에 대해서 테스트 해봤습니다.


[진행 과정]
1. StarWind iSCSI Server : 디스크 추가 - 100MB (NAME : disk2) - MPIO 지원
2. WORK1 - Windows Server 2003 설치
3. WORK2 - Windows Server 2003 설치
4. WORK1, WORK2 두 대의 서버에 iSCSI Initiator 설치 후 iSCSI Server 에 공유된 disk 2를 각각 연결 (MPIO 사용 안함)




5. WORK1, WORK2 각 서버에서 디스크 관리를 이용하여 NTFS 포맷 진행 (E Drive 100MB 공간 할당)



6. WORK1 서버에서 C:\WINDOWS 폴더에 있는 업데이트 파일을 E Drive 로 복사합니다. (17.3MB 남음)



7. WORK2 의 E Drive 에도 똑같이 보일까요? 그렇지 않습니다. WORK2 의 E Drive 는 용량의 변화도 없습니다.



WORK2 에도 C:\WINDOWS 폴더에 있는 업데이트 파일들을 E Drive 에 복사합니다. 두 서버 모두 17.3MB가 남은 상황입니다. StarWind iSCSI Server 에서 분명 100MB 짜리 디스크를 생성했는데 어떻게 이렇게 많은 데이터가 저장될 수 있을까요? 

정상적으로 파일이 저장되어 있을거라곤 생각하지 않습니다. 각 서버에서 옵션없이 읽기 전용으로 CHKDSK E: 를 수행해 봅니다. WORK1, WORK2 두 서버의 E Drive 볼륨 모두 오류가 발견되고 있습니다.



8. WORK1 에 있는 업데이트 폴더들의 이름을 A~Z 까지 변경하고 나머지 폴더들은 삭제하였으며 WORK2에 있는 업데이트 폴더들의 이름을 1~26까지 변경하고 나머지 폴더들은 삭제합니다.
 



9. WORK2 에서 CHKDSK E: /F 옵션을 사용하여 파일 시스템 오류를 복구합니다.



10. WORK1에 있었던 1~26 번 폴더는 10번을 제외하고 모두 사라지고 마치 WORK1 에서 보이던 데이터가 그대로 복제된 것처럼 보이게 됩니다. (이 상황에서 손상된 파일 및 폴더가 생기거나 데이터가 뒤바뀌는 현상도 나타날 수 있습니다)



11. WORK1, WORK2 의 NTFSINFO.EXE 실행 결과, 두 서버 모두 처음부터 현재까지 MFT cluster 번호는 변함이 없습니다. NTFS는 물리적 위치를 참조하기 위해 LCNs(Logical Cluster Numbers)를 참조하는데 이것 역시 양쪽 모두 같단 말이죠...음.



Windows Server의 NTFS 파일 시스템, I/O 시스템, 스토리지 관리 아키텍처를 이해해야 이에 대한 근거있는 풀이가 가능할 듯 합니다. 제게 남겨준 숙제가 되겠네요. 명쾌하게 도움 주실 분이 있으시면 연락 주십시오. 젭알... 아이스크림 사서 갈께요.


실제 SAN Storage 하나의 볼륨을 두 대의 서버가 공유했을 때 아래와 같은 현상이 나타날 수 있습니다.

1. WORK1, WORK2 모두 간헐적으로 저장된 파일 및 폴더가 손상되며 NTFS 55 이벤트 오류가 발생하게 됩니다.
 - 디스크의 파일 시스템 구조가 잘못되었으며 사용할 수 없습니다. (○○) 볼륨에서 chksdk 유틸리티를 사용하십시오

2. 두 머신이 간헐적으로 예기치 않은 SYSTEM Crash 가 발생합니다. - Bugcheck 0x50, 0x24 (NTFS.SYS I/O)

3. 데이터 파일이 수정된 날짜 변경 없이 파일의 데이터가 달라질 수 있습니다.

4. Chkdsk 를 통해 볼륨의 오류를 복구할 경우 데이터가 마치 복제된 것과 같이 폴더 및 파일이 변경될 수 있습니다.

5. 저장된 파일의 사이즈와 남은 디스크 공간의 차이가 발생합니다.



작성자 : Lai Go / 작성일자 : 2009.12.06
Posted by 사용자 Lai Go

댓글을 달아 주세요

  1. 스토리지 공유볼륨의 동일한 파티션과 데이터는 한쪽만 소유권을 가져야 합니다. 즉 클러스터 사용 목적으로 많이 사용하는데요 두군데서 동시 공유한 상태의 세션에서 데이너 I/O가 발생하면 그 세션에 대한 모든 데이터는 없어지게 되는것입니다. 같이 공유하는게 아닙니다. 클러스터 구성하기전에 처음에 양쪽다 동일한 데이터 접근이 가능한걸 확인하고 디스크 리소스를 등록해서 소유권으로 세션핸들을 하게 되어야만 데이터 손실이 없게 됩니다.
    클러스터 목적이 아닌 NLB 분산처리 목적이라면 공유볼륨이 아니고 공유폴더 접근으로 양쪽다 동일한 데이터 I/O를 구현할수 있게 됩니다.

    2010.09.16 13:24 [ ADDR : EDIT/ DEL : REPLY ]