태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

EWF 와 HORM에 관하여

허접스런 임베디드 2009.01.22 23:23


EWF for HORM 은
 
 
EWF는 기본적으로 OS 이미지를 보호하기 위해 적용하게 되며, 저장 미디어의 쓰기 액세스 시 발생할 수 있는 섹터 에러를 줄이고자 적용하게 됩니다. 또한 EWF 적용으로 Read_Only 저장 미디어에 OS를 포팅 할 수 도 있습니다. EWF 는 OS 이미지를 보호함으로써 시스템이 부팅조차 할 수 없는 상태로부터 벗어 날 수 있도록 해 주며, 사용자의 실수 또는 Worm, Virus에 의해 시스템이 임의 변경되는 것을 방지해 주기도 합니다. 대부분의 Embedded 시스템은 특정 목적을 위해 빌드 된 후 특별히 변경되지 않는 시스템이므로 EWF 는 Embedded 시스템에서 강력한 도구가 될 수 있습니다. 여기에 Hibernation 기능을 추가하여 HORM을 구현함으로써 빠른 부팅을 제공할 수 있습니다.

EWF 적용 자체는 어렵거나 까다롭지 않으나 그 사용에 있어 또 적용 시나리오 작성에 있어 고려해야 할 사항들이 많습니다. 먼저 EWF 적용에 적합한 시스템인지에 대한 충분한 검토가 필요하며, 이는 EWF 적용을 기본으로 하고 있는 HORM도 마찬가지 입니다.

 
EWF(Enhanced Write Filter)이란
 
 
EWF는 보호된 볼륨(파티션)의 쓰기 동작을 Overlay 공간으로 전환하여 하나 이상의 볼륨의 쓰기 방지를 하는 기능입니다. EWF는 물리 디스크의 볼륨과 File System 사이에서 동작하면서 쓰기 액세스를 Overlay 공간으로 전환하는 역할을 합니다. 또한 읽기 액세스 시에는 볼륨과 Overlay 공간의 내용을 동시에 읽어 들여 사용자에게 실제 볼륨에 쓰여진 것처럼 보이게 합니다.

EWF는 세가지 Mode로 설정할 수 있습니다. 일반적으로 Overlay의 위치에 따라 EWF Disk Mode, EWF RAM Mode로 구분 지어지며, 특별히 EWF Volume 정보를 Registry에 저장하는 EWF RAM Reg Mode 가 있습니다.

 
EWF적용시 고려해야 할 사항
 
 
EWF 는 기본적으로 쓰기 액세스를 Overlay로 전환하여 볼륨을 보호합니다. 이로 인해 고려해야 할 사항들이 발생하게 됩니다. EWF의 기본은 물리 디스크의 쓰기 액세스를 최대한 줄이는 것입니다. OS 빌드 측면에서 디스크 조각 모음 / 임시 저장폴더 변경 / 페이지 파일 저장 위치 변경과 같은 작업이 이루어 져야 합니다. 어플리케이션 개발 측면에서는 파일 저장을 최대한으로 줄이거나 파일 저장 위치를 비보호 파티션으로 변경해야 합니다. 또한 사용자에 의한 볼륨 액세스를 최대한 줄이도록 구성해야 합니다.

EWF는 각 모드 별로 갖는 특징들이 있습니다. EWF RAM / RAM Reg 모드의 경우 Overlay가 RAM에 생성되기 때문에 시스템 재 부팅으로 이전의 시스템 변경 사항이 모두 사라지게 됩니다. 그러나 EWF Disk 모드는 별도의 EWF Volume에 Overlay가 생성되고 이 내용은 시스템을 재 부팅하여도 사라지지 않습니다.

Commit과 같은 명령으로 Overlay의 내용을 실제 디스크에 저장할 수 있으나, Commit 명령의 적용 시점의 문제로 시스템 부팅 이후 시스템 종료 시까지의 모든 내용이 저장됨을 주의해야 합니다.

EWF RAM / Disk 모드에서 Post_FBA Image(Master Image) 배포 시에는 디스크 백업 툴(Ghost, Winclon, SDIMgr)로 디스크 카피를 해야합니다. 이는 EWF_Volume을 함께 카피해야 하기 때문이며 시스템 파티션만 카피해서는 배포할 수 없다는 것 입니다. EWF RAM Reg 모드는 EWF_Volume 정보를 Registry에 저장하기 때문에 파티션 카피로 또는 파일 카피만으로 이미지 배포를 할 수 있습니다.

 
HORM (Hibernate Once Resume Many)이란?
 
 
HORM은 Windows XP Embedded 만이 갖는 EWF(Enhanced Write Filter) 기능과 Windows OS군에서 제공하고 있는 Hibernation Function(최대절전모드) 기능으로 구현 가능하게 된 Windows XP Embedded 만의 특징입니다.

HORM 은 시스템 부팅 시 Hibernation Image 만을 RAM에 Load하여 부팅을 진행하기 때문에 빠른 부팅 시간을 제공합니다. 또한 한번 생성된 Hibernation Image를 계속해서 사용하기 때문에 시스템 항상성을 유지할 수 있습니다.

 
HORM 적용시 고려해야 할 사항
 
 
일반 적으로 Hibernation Function에 의해 생성되는 Hibernation image는 한번 밖에 사용할 수 없습니다. 이는 볼륨의 내용이 변경되어 기존에 생성한 Hibernation image가 무효화 되기 때문입니다. 하지만 EWF를 통해 볼륨이 보호되고 있다면 볼륨의 내용이 변경되지 않아 Hibernation image를 계속해서 사용할 수 있습니다. 이를 이용하여 XP Embedded 에서 제공되는 기능이 HORM (Hibernation Once Resume Many) 입니다.

앞서 설명 드린 것과 같이 Windows XP Embedded에서 HORM을 적용하여 Hibernation Image를 생성 할 때 Disk 내에 Unprotected Volume이 존재해서는 안되며, Hibernation Image의 내용과 Volume의 내용이 상이할 경우 Hibernation Image는 무효화되어 더 이상 사용할 수 없습니다. 이 경우 기존에 생성한 Hibernation Image는 삭제하고 변경부분을 적용한 새로운 Hibernation Image를 생성해야 합니다.

이러한 문제는 Diskpart 등의 Disk 관리 툴로 Unprotected Volume을 Dismount 하고 Hibernation Image를 생성함으로써 해결할 수 있지만 Hibernation Image Load 후에 Dismount Volume을 다시 Mount 해줘야 하는 번거로움이 있습니다.

이를 해결하기 위해 Unprotected Volume을 Dismount하고 Hibernate를 진행한 후 Mount를 하는 작은 프로그램을 생각해 볼 수 있는데, MSDN에서 위의 처리를 하는 샘플코드를 제공하고 있습니다. 그러나 MSDN에서 제공하는 코드는 Dismount를 하고자 하는 Volume의 Name을 직접 입력해줘야 합니다.

EWF API를 사용하면 전체 Volume들 중 Protected Volume과 Unprotected Volume을 구분할 수 있습니다. 이를 이용하여 프로그램 실행 만으로 Unprotected Volume에 대해 자동으로 Dismount를 하고 Hibernate를 실행하는 프로그램을 작성할 수 있으며, 이렇게 작성된 프로그램은 Disk 또는 Volume의 변화와 무관하게 적용하여 실행할 수 있다는 이점이 있습니다.
 
 
자료출처 : DST

신고

티스토리 툴바