Computer >> 컴퓨터 >  >> 시스템 >> Windows Server

Windows Server 2008 R2 메타파일로 인한 메모리 사용량 급증 문제 해결 방법

Windows Server 2008 R2가 설치된 파일 서버 중 하나에서 높은 RAM 사용률로 인해 서버와 애플리케이션 성능이 저하되는 문제가 발생했습니다. 원인을 분석한 결과, 파일 시스템 메타데이터를 담고 있는 시스템 파일 캐시가 메모리를 대량으로 점유하고 있는 것으로 밝혀졌습니다.

이 문제는 사용자들이 다수의 파일에 접근하는 모든 파일 서버에 잠재적으로 영향을 미칠 수 있으며, 특히 x64 버전의 Windows에서 심각합니다. x64 환경에서는 메모리 내 메타데이터 파일 크기가 거의 전체 RAM 용량까지 커질 수 있기 때문입니다.

Windows 파일 서버의 높은 RAM 사용률

이 문제는 작업 관리자(Task Manager)에서 물리적 메모리가 95~99%까지 사용 중인 것으로 나타나는 형태로 드러납니다.

Windows Server 2008 R2 메타파일로 인한 메모리 사용량 급증 문제 해결 방법

흥미로운 점은 프로세스 탭에서 비정상적으로 많은 메모리를 소비하는 프로세스가 없다는 사실입니다. 실제로 모든 프로세스의 메모리 사용량을 합산해도 서버의 전체 물리적 메모리의 50%에도 미치지 못합니다. 그렇다면 도대체 무엇이 메모리를 차지하고 있는 걸까요?

Windows Server 2008 R2 메타파일로 인한 메모리 사용량 급증 문제 해결 방법

정확한 RAM 사용 현황은 Mark Russinovich가 만든 작은 유틸리티인 RAMMap으로 확인할 수 있습니다. 해당 도구가 포함된 압축 파일을 내려받아 관리자 권한으로 RAMMap.exe를 실행합니다. Use Counts 탭을 보면 Metafile이 가장 많은 RAM을 사용하고 있는 것을 확인할 수 있습니다. (본 사례에서는 서버 RAM 25GB 중 11GB를 메타파일이 점유하고 있었습니다.)

Windows Server 2008 R2 메타파일로 인한 메모리 사용량 급증 문제 해결 방법

Windows에서 메타파일(Metafile)이란?

메타파일은 NTFS 메타데이터를 담고 있는 시스템 캐시의 일부로, 파일 접근 시 파일 시스템 성능을 향상시키기 위해 사용됩니다. NTFS 메타데이터에는 MFT(Master File Table, 마스터 파일 테이블) 데이터가 포함됩니다.

사용자가 접근하는 각 파일이나 폴더마다 최소 1KB 이상의 블록(각 파일 속성 레코드는 1KB이며, 모든 파일은 최소 하나 이상의 속성을 가짐)이 메타파일에 생성됩니다. 따라서 대량의 파일을 보관하는 파일 서버에서는 메타파일(NTFS 캐시) 크기가 수십 기가바이트를 초과할 수 있습니다.

문제는 Windows의 기본 제공 도구로는 이 캐시를 비활성화하거나 관리할 수 없다는 것입니다. 해결책으로 서버 메모리를 증설하는 방법이 있지만, 항상 가능한 것은 아닙니다.

메모리를 확보하기 위해 서버를 재시작할 수도 있지만, 시간이 지나면 메모리 내 메타파일 크기는 다시 급격히 증가합니다.

참고로 Russinovich의 또 다른 도구인 ntfsinfo를 사용하면 MFT 크기를 추정할 수 있습니다. 본 사례에서 2TB 디스크의 MFT 크기는 13GB였습니다.

Windows Server 2008 R2 메타파일로 인한 메모리 사용량 급증 문제 해결 방법

메타파일 빠르게 정리하는 방법

RAMMap을 사용하면 서버를 재시작하지 않고도 MFT로 인해 점유된 메모리를 신속하게 비울 수 있습니다. 메뉴에서 Empty → Empty System Working Set을 선택하면 됩니다.

Windows Server 2008 R2 메타파일로 인한 메모리 사용량 급증 문제 해결 방법

실행 후 메모리 내 메타파일 크기는 수십 배 줄어들었고, RAM 사용률도 95%에서 26%로 크게 하락했습니다.

Windows Server 2008 R2 메타파일로 인한 메모리 사용량 급증 문제 해결 방법

다만 이 방법의 가장 큰 단점은 정리 작업이 수동으로만 가능하고 자동화할 수 없다는 점입니다.

Dynamic Cache Service로 파일 캐시 관리하기

메타파일로 인한 높은 메모리 사용률을 보다 근본적으로 해결하는 방법은 Microsoft에서 제공하는 Dynamic Cache Service(DynCache)(https://www.microsoft.com/en-us/download/details.aspx?id=9258)를 설치하는 것입니다. 이 서비스를 사용하면 시스템 API를 통해 MFT 캐시 파라미터를 관리할 수 있습니다.

주의: 이 솔루션은 위에서 설명한 문제가 실제로 발생하는 경우에만 사용해야 합니다. 이 서비스를 설치한다고 해서 서버의 높은 메모리 사용률을 유발하는 다른 모든 원인까지 해결되는 만능 해결책은 아닙니다.

DynCache 설치는 비교적 간단합니다(압축 파일에 상세한 설명서가 포함되어 있습니다).

  • DynCache.exe 파일을 %SystemRoot%\System32 폴더로 복사합니다.
  • 다음 명령어로 DynCache 서비스를 생성합니다.
    sc create DynCache binpath= %SystemRoot%\System32\DynCache.exe start= auto type= own DisplayName= "Dynamic Cache Service"
    Windows Server 2008 R2 메타파일로 인한 메모리 사용량 급증 문제 해결 방법
  • DynCache.reg 파일을 레지스트리에 가져옵니다(기본값이 포함되어 있음).
  • 레지스트리 키 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters에서 다음 값들을 변경합니다.
    1. MaxSystemCacheMBytes: 4096 (10진수) – 최대 캐시 크기(MB)
    2. MinSystemCacheMBytes: 100 (10진수) – 최소 캐시 크기(MB)
      Windows Server 2008 R2 메타파일로 인한 메모리 사용량 급증 문제 해결 방법

참고: 위 설정을 포함한 DynCache 서비스의各项 설정 값은 서버의 RAM 용량, 부하 상태, 필요한 성능 등에 맞춰 조정해야 합니다. 일반적으로 캐시 크기는 서버에 장착된 물리적 RAM의 절반을 넘지 않도록 설정하는 것이 좋습니다. 설정 변경 후에는 DynCache를 재시작할 필요가 없으며, 모든 변경 사항은 동적으로 적용됩니다.

  • 다음 명령어로 서비스를 시작합니다.
    sc start DynCache

본 사례에서는 DynCache 서비스 설치 후 메타파일의 메모리 사용량이 설정한 4GB를 초과하지 않았으며, 파일 서버에서 성능 문제를 겪었다는 사용자 불만도 더 이상 접수되지 않았습니다.