티스토리 뷰

메모리 덤프를 생성할 때 시스템 드라이브의 공간 한계를 극복하는 DedicatedDumpFile 을 사용하는 방법


예전에 메모리 덤프가 생성 되는 과정을 포스팅 한 적이 있습니다.그 내용을 잠시 살펴 보면 덤프 파일의 생성 조건 중에 boot volume에 반드시 pagefiles.sys 이 존재, 즉 부팅 파티션에 반드시 페이징 파일이 있어야 한다는 내용이 있습니다.......

http://ryuchan.kr/24 
 


이로 인해 대용량 메모리를 사용 중인 운영 체제에서 전체 메모리 덤프를 설정 할 경우 C 드라이브의 공간이 부족 해지는 현상이 발생 할 소지가 상당히 많습니다.
예를 들면 32G의 물리적 메모리를 사용하고 C드라이브의 공간이 총 공간이 60G 이라면 이미 페이징 파일로 32G 이상을 사용 해야 하기 때문 C드라이브의 공간 중 절반은 이미 사용 할 수 없게 되는 것이니까요
........
그래서 대부분의 운영자들이 실제 메모리 덤프가 저장 되는 곳은 C 드라이브가 아닌 D 드라이브나 다른 로컬 디스크의 위치로 변경을 합니다
.

Windows server 2003
이하 버전의 운영 체제에서는 메모리 덤프 생성을 위해서는 반드시 페이징 파일이 부팅 파티션에  필요 합니다만 Windows vista 이후 버전(Windows server 2008 & Windows 7)에서는 더 이상 메모리 덤프 생성을 위해 부팅 파티션에 물리적 메모리 사이즈 만큼의 페이지이 파일이 필요 하지 않게 되었습니다.

바로 Dedicated dump file이라는 것을 이용하여 반드시 부팅 파티션이 아니더라도 시스템 부팅시 로컬 드라이브로 인식 되는 곳이면 어느 위치에서도 메모리 덤프를 생성 할 수 있습니다.

Dedicated dump file
이란 무엇 인가?

Dedicated dump file
crash dump 루틴에만 사용 될 예약 된 페이징 파일입니다.

수동으로 메모리 덤프를 생성하거나 시스템 크래시에 의해 덤프가 생성 될 경우 물리적 메모리의 데이터들은 아래와 같이 레지스트리를 설정 하면 시스템 드라이브의 페이징 파일 대신 Dedicated dump file에 저장이 됩니다. 
Location
: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\CrashControl
Name: DedicatedDumpFile
Type:  REG_SZ
Value: D:\dedicateddumpfile.sys


어디에 저장이 되는 가?

페이징 파일을 지원하는 어떤 로컬 드라이브에 저장이 됩니다. 즉 부팅 파티션이 위치한 디스크가 아닌 다른 로컬 디스크 혹인 SAN 볼륨에도 저장이 가능 합니다.

Note: DedicatedDumpFile cannot be used to generate a dump file to a spanned volume. This includes striped or RAID 5 volumes.

얼마만큼의 공간이 필요 한가?
시스템이 dedicated dump file의 사이즈를 자동을 결정 하거나 레지스트리에서 DumpFileSize 값을 설정 하여 수동으로 값을 설정 할 수 있습니다.

시스템이 자동으로 사이즈를 결정 하게 할 경우 물리적 메모리 + 256M의 사이즈가 할당 됩니다. 수동으로 사이즈를 설정 하려면 아래의 레지스트리 키를 추가 합니다.

Manual size specified via the registry
The following registry value will allow you to manually set the dedicated dump file size in megabytes:
Location
:   HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\CrashControl
Name: DumpFileSize
Type:  REG_DWORD
Value: The dump file size in megabytes


덤프 파일이 저장 되는 위치는?

덤프 파일의 저장 위치는 이전 버전에서와 마찬 가지로 아래의 레지스트리 키를 추가 하면 됩니다.

After a bug check, the data will be written to the dedicated dump file on disk.  However, the final memory dump location will be based on the following registry value:
Location
:   HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\CrashControl
Name: DumpFile
Type:  REG_EXPAND_SZ
Value: The target dump file name together with the full path, such as D:\memory.dmp

 



[
참고 사이트]
How to generate a kernel or a complete memory dump file in Windows Server 2008 and Windows Server 2008 R2
http://support.microsoft.com/kb/969028/en-us

Kernel memory dump files may not be generated on Windows Server 2008-based and Windows Vista SP1 or later based computers when physical memory is larger than the size of the page file
http://support.microsoft.com/default.aspx?scid=kb;EN-US;949052

A dedicated complete memory dump file may not be successfully generated if the volume that stores the dedicated dump file has insufficient free space
http://support.microsoft.com/default.aspx?scid=kb;EN-US;957517


Dedicated dump files are unexpectedly truncated to 4 GB on a computer that is running Windows Server 2008 or Windows Vista and that has more than 4 GB of physical memory
http://support.microsoft.com/default.aspx?scid=kb;EN-US;950858


위 내용은 아래의 블로그에서 발췌 한 것입니다^^
http://blogs.msdn.com/b/ntdebugging/archive/2010/04/02/how-to-use-the-dedicateddumpfile-registry-value-to-overcome-space-limitations-on-the-system-drive-when-capturing-a-system-memory-dump.aspx

감사합니다.

댓글
댓글쓰기 폼