본문 바로가기

[+] Forensic

File System - ReFS (2)

계속해서 ReFS를 알아보자.

이번 글에서는 ReFS의 주요 설계 개념과 특징에 대해서 알아 볼 것이다.

[코드 재사용]
ReFS는 NTFS에서 사용하던 파일시스템 API등을 그대로 다시 재사용 하여 NTFS와의 호환성을 유지하였는데, 코드 재사용에서 해당 코드들을 사용하는 엔진은 이번에 새롭게 개발 된 엔진으로 ReFS의 주요 혁신 기술들이 포함되어 있어 ReFS에서 지원하는 주요 혁신 기술과 NTFS와의 호환성 두가지 모두를 해결 하였다.


[확장이 용이하고 신뢰성 있는 온디스크 엔진]
ReFS는 온디스크 엔진 위에서 디렉토리나 파일등을 구현하는데 저장소 엔진은 구현에 B+tree 알고리즘을 사용한다.
B+tree는 다른 tree 알고리즘에 포함될 수도 있어 확장성이 용이하고 단일 구조에서는 시스템이 간소화 되고 코드도 줄어든다. 이러한 온디스크 엔진 구조에는 '테이블' 이라는 개념이 포함되는데 해당 테이블 개념에는 참조 수단으로 Object ID가 사용 된다. 테이블은 아래와 같이 디렉터리라고 이해 할 수 있으며, B+tree 구조를 사용하기 때문에 조금 효율적이고 확장에 대해 용이 하다. 아래는 온디스크 엔진에서의 디렉토리와 파일 구조이다.

[그림 1 - 온디스크 엔진 위에서의 디렉토리와 파일 구조(출처 : MSDN Blog)]


[디스크 업데이트]
ReFS에서는 디스크 업데이트하는 방식을 설계하기 위하여 여러가지 측면에서 설계고민을 했다고 한다. 그 중 채택한 방식이 AOW(Allocate On Write) 방식인데, 이 방식은 메타데이터 업데이트를 원본 위치에서 하지 않고 다른 위치에 메타데이터 업데이트 내용을 기록하는 방식으로 이 방식을 통해 안정성을 극대화 하였다. NTFS는 디스크의 일관성을 유지하기 위해 트랜잭션 저널에 의존하는데 이 트랜잭션은 AOW를 기반으로 하고 있다. 


[복원력]
ReFS는 손상 된 데이터를 발견하면 자동적으로 해당 데이터를 검사하고 수정하는데, 이러한 행위들이 이루어짐으로써 데이터에 대한 무결성 보증과 시스템 가용성이 향상 되었다. ReFS의 모든 메타데이터는 B+tree page 수준에서 체크섬이 진행 되는데 이 체크섬은 해당 페이지와는 별개로 저장되어 디스크의 모든 데이터 오류들을 검출 해 낼 수 있다.
또 ReFS는 모든 디스크의 데이터를 복사하여 관리한다. 이 복사본들은 원본에 오류가 발생 했을 시 대체 데이터나 원본 데이터 오류 수정의 기준이 될 수 있다. 


[무결성 스트림]
무결성 스트림은 파일의 데이터를 오류로부터 보호 하는것이 주 목적이다. 무결성 스트림은 파일이나 디렉토리의 한가지 속성으로 분류 할 수 있으며 디렉토리에 무결성 스트림 속성이 설정 될 경우 해당 디렉토리 하위 파일이나 디렉토리에는 모두 무결성 스트림 속성이 설정 된다.

 * 참고 : 무결성 스트림 속성은 format 명령어로 설정이 가능하다. 


[Bit rot]
Bit rot이란 디스크의 데이터가 한순간 손상되지 않고 시간에 따라 서서히 손상되어 디스크 검사등에 걸리지 않는 것을 말한다. 대부분 Bit rot 데이터를 발견하게 되면 해당 복사본 까지 손상되어 있다. ReFS는 지속적인 스크러빙을 통해 원본과 복사본의 체크섬이 동일하지 않으면 복사본을 기준으로 원본을 수정토록 하였다. 파일 속성 중 FILE_ATRIBUTE_NO_SCRUB_DATA 속성이 있는데 해당 속성이 설정된 파일이나 디렉토리는 스크러빙 작업을 건너띄게 된다.

 * 참고 : Integrity.exe 프로그램은 무결성과 스크러빙 정책 관리를 하는데 사용 된다. 


[볼륨 가용성]
일반적으로 미러링 볼륨은 오류가 일어나지 않지만, 가끔 오류나 손상이 일어날 때가 있다. ReFS는 이러한 경우를 위해 볼륨에서 손상 된 데이터를 제거하고 나머지 삭제된 데이터의 나머지 부분들을 복원하는 기능을 지원한다. 그리고 일반적으로 파일시스템에 데이터가 손상되면 관리자조차 접근을 하지 못하는데 ReFS의 경우 앞서 언급했듯이 손상 된 데이터를 복구 할 수 있어 관리자가 접근 할 수 있게 하였다. 


[저장소 호환성]
ReFS와 저장소 스택의 유연성과 호환성을 극대화 하였다. 하지만 이 둘은 서로 상호작용은 하나 독립적으로 실행되는데, 이렇게 하는 이유는 유연성 관점에서 서로에게 제한되지 않게 하기 위해서이다. ReFS와 저장소 스택의 연결로 인하여 암호화, 볼륨 스냅샷 등의 기능을 완벽하게 사용 할 수 있으며, 다른 파일시스템과의 연결도 완벽하게 연동 된다. 하지만 NTFS에서 NTFS의 물리적 구조에 의존하던 응용 프로그램들은 ReFS에서는 정상적으로 작동을 하지 않을지도 모른다. 


이 특징들 외에 ReFS가 지원 가능한 용량등은 아래 이미지를 참고하도록 한다.

[그림 2 - ReFS 지원 가능한 크기 등]
 
지금까지 ReFS에 대해서 알아보았다. 아직 ReFS는 완벽하게 개발 된 단계는 아닐 뿐더러 명세도 나와 있지 않아 좀 더 시간을 두고 연구, 분석해야 할 파일시스템이다. 일단은 이러한 파일시스템이 있고 이러한 특징들을 가지고 있구나 라는 정도만 알아두었으면 하여 이렇게 언급하였다. 앞으로 NTFS를 대체할 파일시스템으로 꼭 알아두어야 할 파일시스템 중 하나가 될 것이다.

'[+] Forensic' 카테고리의 다른 글

File System - HFS+ (1)  (0) 2012.03.22
e-discovery ?  (0) 2012.03.13
File System - ReFS (1)  (0) 2012.03.12
File System - Ext4 (5)  (0) 2012.03.11