Windows Server 2012, Data Deduplication
Windows Server 2012 RTM이 발표되고, 요 며칠 사이 테스트 해보는 중. 감동의 쓰나미가 밀려오기도 하다가, 의외로 허당 같기도 해서 롤러코스터를 타는 중. Windows Server 2012 같은 경우는 회사(프로젝트에 직접 참여한 건 아니지만)에서 Windows Server 2012 RDP (Rapid Deploy Program) 프로그램에 참여하게 돼서 교육도 받고, 최근 관심 있게 지켜보고 있는 항목. 내용은 Microsoft Evangelist이신 꼬알라(백승주)님의 블로그 내용을 참조 하였음.
PS C:\Users\Administrator> get-dedupmetadata d:
Volume : D: VolumeId : \\?\Volume{11e9d941-d2c6-464f-bd5f-d1e93f487b2e}\ StoreId : {1B76B5FD-920E-4253-A58F-01D957FE5667} DataChunkCount : 422567 DataContainerCount : 30 DataChunkAverageSize : 73.62 KB DataChunkMedianSize : 0 B DataStoreUncompactedFreespace : 0 B StreamMapChunkCount : 257 StreamMapContainerCount : 2 StreamMapAverageDataChunkCount : StreamMapMedianDataChunkCount : StreamMapMaxDataChunkCount : HotspotChunkCount : 69 HotspotContainerCount : 1 HotspotMedianReferenceCount : CorruptionLogEntryCount : 0 TotalChunkStoreSize : 29.86 GB
PS C:\Users\Administrator> get-dedupstatus
FreeSpace SavedSpace OptimizedFiles InPolicyFiles Volume --------- ---------- -------------- ------------- ------ 222.44 GB 149.84 GB 150 150 D: |
실제 저장된 디스크의 내용은 데이터 디듑의 성능을 확인해보기 위해 같은 내용의 파일을 다른 이름으로 저장했고, 이는 데이터 디듑의 기능이 극대화 된 (78% 제거) 특수한 경우이며 일반적인 경우는 아니라고 생각 됩니다. D:\DD\ 폴더에는 약 192GB 가량의 파일이 저장되어있지만, 실제로 디스크에는 33GB의 공간만 점유하고 있으며, 디듑으로 세이브 된 공간은 약 150GB 가량으로 표시 됩니다.
데이터 디듑 기능 보다가 번뜩 떠오른 우스개 이야기로 살색 많이 나오는 야구 동영상들을 한 곳에 모아두면 중복 제거 비율이 더 높아질까? 아니면 같은 주인공인 영상이면 중복 제거가 더 잘 될까? 물론 이론적으로는 턱도 없는 소리(영상 압축)인 거 알지만, 흥미로운 주제여서 증명을 한번 해보고 싶었는데, 요즘 분위기로는 괜히 인증했다가 잡혀갈 거 같아서 패스 (개인적으로는 아동/동물/스너프 이런 거 혐오합니다. 노홍철보다 유재석을 더 선호합니다 (...)
Windows 8 에도 데이터 디듑 기능을 넣어줬다면 좋겠지만 이 디듑 기능은 백 그라운드 작업을 기본으로 하기 때문에, OS 특성에도 안 맞아서 큰 효과를 낼 수 있을 지가 의문이긴 합니다. 스토리지 박스, Windows Server 2012 외에 이런 데이터 디듑을 사용할 수 있는 솔루션으로는 ZFS 파일시스템을 이용한 NexentaStor 등으로도 구현이 가능한 것으로 알고 있지만, 일반 용도의 레벨에서는 구현하기가 까다롭다는 단점이 있습니다. 간단한 Windows 시스템에서 파일 (스토리지) 서버를 구현해야 한다면 Windows Server 2012가 좋은 대안이 될 듯 합니다.
다만 한 가지 우려 되는 것은 Chunk 단위로 구분이 되기 때문에, 싱글 디스크 환경에서는 특정 섹터에 물리적으로 배드 섹터가 생기게 되면, 중복된 조각을 갖고 있는 다른(여러) 파일에 영향을 미칠 수 있을 것 같습니다. 그래서 대부분은 리던던트를 가진 RAID를 사용 하거나(서버에서는 기본적으로 사용하고 있다고 가정하거나) 사용하도록 권장을 하는 것 같습니다. 벤더에서 말하는 5~10% 의 성능 저하는 디듑이 적용 된 볼륨에서의 읽기/쓰기를 말하는 것 같고 (실제로는 성능 저하를 느끼지 못했습니다) 저장된 데이터를 조각내어 재배열하는 작업(백그라운드 스케쥴러)에는 별도의 디스크 I/O와 시간을 필요로 합니다. 하드웨어 벤더 쪽에서는 이 디듑 I/O가 발생하는 시간과 일반 I/O가 겹쳐 질 때, 디듑의 디스크 I/O를 감소시키거나 건너 띌 수 있게 관리 할 수 있다고 하는데, Windows Server 2012에선 그러한 고급 컨트롤이 되는지는 모르겠습니다.
시스템 관리자 입장에서는 디스크 공간을 최대한 활용할 수 있는 매력적인 기능이며, 2차 백업 서버 등의 실무에는 고민 없이 곧바로 적용할 수 있는 아이템입니다. 낭비 되는 디스크의 공간을 절약하기 위한 역사를 살펴보면 MS-DOS 시절의 스태커나 더블 스페이스, NTFS의 폴더 내용 압축 등 이름만 다른 한 가지의 기술들이 사용 되어왔는데요. 데이터 디듑 기능은 이러한 압축 기반이 아닌 순수 파일 시스템 기반의 기술 입니다.
--
이런 중복 제거 기술을 극대화 해서 활용할 수 있는 곳은 VHD/VMDK 라이브러리 or DB 백업 서버 등등... 근데 괜히 잘 돌아가는 거, 신기술 적용/활용도 높여보겠다고 건드렸다가 장애 내고 긁어 부스럼 만들거 같아서 항상 딜레마임. 안 그래도 시키는 일 많은데, 안 시킨 일까지 찾아하려면 귀찮기도 하고...