스토리지 풀 캐시 이해

적용 대상: Azure Stack HCI, 버전 22H2 및 21H2; Windows Server 2022, Windows Server 2019

Azure Stack HCI 및 Windows Server의 기본 스토리지 가상화 기술인 저장소 공간 다이렉트 스토리지 성능을 최대화하면서 비용을 절감할 수 있는 기본 제공 서버 쪽 캐시를 제공합니다. 배포 시 자동으로 구성된 대규모의 영구 실시간 읽기 쓰기 캐시입니다. 대부분의 경우 수동 관리가 필요하지 않습니다. 캐시 작동 방식은 존재하는 드라이브 유형에 따라 달라집니다.

드라이브 유형 및 배포 옵션

저장소 공간 다이렉트 현재 다음 네 가지 유형의 드라이브에서 작동합니다.

드라이브 유형 설명
PMem PMem 은 대기 시간이 짧은 새로운 유형의 고성능 스토리지인 영구 메모리를 나타냅니다.
NVMe NVMe (비휘발성 메모리 익스프레스)는 PCIe 버스에 직접 배치되는 반도체 드라이브를 나타냅니다. 일반적인 폼 팩터는 2.5" U.2, PCIe AIC(추가 기능 카드) 및 M.2입니다. NVMe는 PMem을 제외한 현재 지원되는 다른 유형의 드라이브보다 대기 시간이 짧은 더 높은 IOPS 및 I/O 처리량을 제공합니다.
SSD SSD 는 기존 SATA 또는 SAS를 통해 연결하는 반도체 드라이브를 나타냅니다.
HDD HDD 는 저렴한 비용으로 방대한 스토리지 용량을 제공하는 회전, 자기 하드 디스크 드라이브를 의미합니다.

이러한 항목은 다양한 방법으로 결합할 수 있으며, "all-flash" 및 "hybrid"의 두 가지 범주로 그룹화됩니다. 모든 HDD를 사용하는 배포는 지원되지 않습니다.

참고

이 문서에서는 NVMe, SSD 및 HDD를 사용한 캐시 구성에 대해 설명합니다. 영구 메모리를 캐시로 사용하는 방법에 대한 자세한 내용은 영구 메모리 이해 및 배포를 참조하세요.

모든 플래시 배포 가능성

모든 플래시 배포는 스토리지 성능을 최대화하는 것을 목표로 하며 HDD를 포함하지 않습니다.

다이어그램은 용량에 대한 NVMe, 용량에 대해 SSD가 있는 캐시용 NVMe 및 용량에 대한 SSD를 포함한 모든 플래시 배포를 보여 줍니다.

하이브리드 배포 가능성

하이브리드 배포는 성능과 용량의 균형을 맞추거나 용량을 최대화하는 것을 목표로 하며 HDD를 포함합니다.

다이어그램은 용량에 HDD가 있는 캐시용 NVMe, 용량에 HDD가 있는 캐시의 경우 SSD, 용량에 대해 HDD 및 SSD를 사용하는 캐시용 NVMe를 포함한 하이브리드 배포를 보여 줍니다.

참고

하이브리드 배포는 단일 서버 구성에서 지원되지 않습니다. 모든 플랫 단일 스토리지 유형 구성(예: all-NVMe 또는 all-SSD)은 단일 서버에 대해 지원되는 유일한 스토리지 유형입니다.

캐시 드라이브가 자동으로 선택됨

여러 유형의 드라이브가 있는 배포에서 저장소 공간 다이렉트 캐싱에 가장 빠른 유형의 모든 드라이브를 자동으로 사용합니다. 나머지 드라이브는 용량에 사용됩니다.

"가장 빠른" 형식은 다음 계층 구조에 따라 결정됩니다.

다이어그램은 HDD를 나타내는 NVMe, SSD, 레이블이 지정되지 않은 디스크 순서로 더 빠르게 정렬된 디스크 유형을 보여 줍니다.

예를 들어 NVMe 및 SSD가 있는 경우 NVMe는 SSD에 대해 캐시됩니다.

SSD 및 HDD가 있는 경우 SSD는 HDD에 대해 캐시됩니다.

참고

캐시 드라이브는 클러스터에 사용 가능한 스토리지 용량을 제공하지 않습니다. 캐시에 저장된 모든 데이터도 다른 곳에 저장되거나 단계가 해제되면 저장됩니다. 즉, 클러스터의 총 원시 스토리지 용량은 용량 드라이브의 합계일 뿐입니다.

모든 드라이브가 동일한 형식이면 캐시가 자동으로 구성되지 않습니다. 동일한 유형의 낮은 내구성 드라이브에 대해 캐시하도록 고내구성 드라이브를 수동으로 구성하는 옵션이 있습니다. 방법을 알아보려면 수동 구성 섹션을 참조하세요.

경우에 따라 스토리지 풀 캐시를 사용하는 것은 의미가 없습니다. 예를 들어 모든 NVMe 또는 모든 SSD 배포에서 특히 매우 작은 규모에서 캐시에 "사용된" 드라이브가 없으면 스토리지 효율성이 향상되고 성능을 최대화할 수 있습니다. 마찬가지로 소규모 원격 또는 지점 배포에는 캐시 드라이브의 공간이 제한될 수 있습니다.

캐시 동작이 자동으로 설정됩니다.

캐시의 동작은 캐시되는 드라이브의 유형에 따라 자동으로 결정됩니다. 플래시 드라이브에 대한 캐싱(예: SSD의 경우 NVMe 캐싱)은 쓰기만 캐시됩니다. 디스크 드라이브를 회전하기 위해 캐싱하는 경우(예: HDD에 대한 SSD 캐싱) 읽기 및 쓰기가 모두 캐시됩니다.

쓰기가 캐시되고 읽기가 캐시되지 않는 모든 플래시에 대한 캐싱을 하이브리드와 비교하여 읽기와 쓰기가 모두 캐시되는 다이어그램

모든 플래시 배포에 대한 쓰기 전용 캐싱

캐싱은 모든 플래시 시나리오에서 사용할 수 있습니다. 예를 들어 NVMe를 캐시로 사용하여 SSD의 성능을 가속화할 수 있습니다. 모든 플래시 배포에 대해 캐싱하는 경우 쓰기만 캐시됩니다. 이렇게 하면 많은 쓰기 및 다시 쓰기가 캐시에서 병합된 다음 필요에 따라 스테이징을 해제하여 용량 드라이브에 대한 누적 트래픽을 줄이고 수명을 연장할 수 있기 때문에 용량 드라이브의 마모가 줄어듭니다. 따라서 캐시에 대해 더 높은 내구성의 쓰기 최적화 드라이브를 선택하는 것이 좋습니다. 용량 드라이브는 쓰기 내구성이 합리적으로 낮을 수 있습니다.

읽기는 플래시의 수명에 크게 영향을 미치지 않으며 SSD는 일반적으로 낮은 읽기 대기 시간을 제공하기 때문에 읽기는 캐시되지 않습니다. 읽기는 용량 드라이브에서 직접 제공됩니다(데이터가 최근에 기록되어 아직 스테이징 해제되지 않은 경우 제외). 이렇게 하면 캐시를 쓰기 전용으로 사용하여 효율성을 극대화할 수 있습니다.

이로 인해 쓰기 대기 시간과 같은 쓰기 특성이 캐시 드라이브에 의해 결정되고 읽기 특성은 용량 드라이브에 의해 결정됩니다. 둘 다 일관되고 예측 가능하며 균일합니다.

하이브리드 배포를 위한 읽기/쓰기 캐싱

HDD에 대한 캐싱 시 읽기와 쓰기가 모두 캐시되어 플래시 유사한 대기 시간(종종 ~10배 향상)을 제공합니다. 읽기 캐시는 빠르게 액세스하고 HDD에 대한 임의 트래픽을 최소화하기 위해 최근 및 자주 읽는 데이터를 저장합니다. (검색 및 회전 지연으로 인해 HDD에 대한 임의 액세스로 인해 발생하는 대기 시간과 손실된 시간이 중요합니다.) 쓰기는 버스트를 흡수하고 이전과 마찬가지로 쓰기 및 다시 쓰기를 병합하고 용량 드라이브에 대한 누적 트래픽을 최소화하기 위해 캐시됩니다.

저장소 공간 다이렉트 쓰기를 스테이징 해제하기 전에 임의로 해제하는 알고리즘을 구현하여 워크로드(예: 가상 머신)에서 들어오는 실제 I/O가 임의인 경우에도 순차적으로 보이는 디스크에 IO 패턴을 에뮬레이트합니다. 이렇게 하면 HDD에 대한 IOPS 및 처리량이 최대화됩니다.

NVMe, SSD 및 HDD를 사용하여 배포에서 캐싱

세 가지 유형의 드라이브가 모두 있는 경우 NVMe 드라이브는 SSD와 HDD 모두에 대한 캐싱을 제공합니다. 동작은 위에서 설명한 대로 SSD에 대해 쓰기만 캐시되고 읽기와 쓰기는 모두 HDD에 대해 캐시됩니다. HDD에 대한 캐싱 부담은 캐시 드라이브 간에 균등하게 분산됩니다.

요약

이 표에는 캐싱에 사용되는 드라이브, 용량에 사용되는 드라이브 및 각 배포 가능성에 대한 캐싱 동작이 요약되어 있습니다.

배포 캐시 드라이브 용량 드라이브 캐시 동작(기본값)
모든 NVMe 없음(선택 사항: 수동으로 구성) NVMe 쓰기 전용(구성된 경우)
모든 SSD 없음(선택 사항: 수동으로 구성) SSD 쓰기 전용(구성된 경우)
NVMe + SSD NVMe SSD 쓰기 전용
NVMe + HDD NVMe HDD 읽기 + 쓰기
SSD + HDD SSD HDD 읽기 + 쓰기
NVMe + SSD + HDD NVMe SSD + HDD 읽기 + HDD용 쓰기, SSD용 쓰기 전용

서버 쪽 아키텍처

캐시는 드라이브 수준에서 구현됩니다. 한 서버 내의 개별 캐시 드라이브는 동일한 서버 내의 하나 이상의 용량 드라이브에 바인딩됩니다.

캐시는 Windows 소프트웨어 정의 스토리지 스택의 나머지 부분보다 낮기 때문에 저장소 공간 또는 내결함성과 같은 개념을 인식할 필요가 없습니다. 그런 다음 운영 체제에 표시되는 "하이브리드"(부분 플래시, 파트 디스크) 드라이브를 만드는 것으로 생각할 수 있습니다. 실제 하이브리드 드라이브와 마찬가지로 실제 미디어의 더 빠르고 느린 부분 간에 핫 및 콜드 데이터의 실시간 이동은 외부에 거의 보이지 않습니다.

저장소 공간 다이렉트 복원력이 적어도 서버 수준이라는 점을 감안할 때(즉, 데이터 복사본은 항상 다른 서버에 기록되고 서버당 최대 하나의 복사본) 캐시의 데이터는 캐시에 없는 데이터와 동일한 복원력을 활용합니다.

다이어그램은 레이블이 지정되지 않은 용량 드라이브에 액세스하는 NVMe 드라이브의 캐시 계층에 액세스하는 스토리지 공간 계층의 3방향 미러 조인된 세 개의 서버를 나타냅니다.

예를 들어 3방향 미러링을 사용하는 경우 데이터의 복사본 3개가 캐시에 있는 다른 서버에 기록됩니다. 나중에 스테이징 해제 여부에 관계없이 3개의 복사본이 항상 존재합니다.

드라이브 바인딩은 동적입니다.

캐시와 용량 드라이브 간의 바인딩은 1:1에서 1:12까지의 비율을 가질 수 있습니다. 확장 또는 오류 후와 같이 드라이브를 추가하거나 제거할 때마다 동적으로 조정됩니다. 즉, 원할 때마다 캐시 드라이브 또는 용량 드라이브를 독립적으로 추가할 수 있습니다.

애니메이션 다이어그램은 처음 4개, 6개, 8개의 용량 드라이브에 동적으로 매핑하는 두 개의 NVMe 캐시 드라이브를 보여줍니다.

대칭을 위해 용량 드라이브 수를 캐시 드라이브 수의 배수로 만드는 것이 좋습니다. 예를 들어 캐시 드라이브가 4개인 경우 7 또는 9보다 8개 용량 드라이브(1:2 비율)의 성능이 더 높아집니다.

캐시 드라이브 오류 처리

캐시 드라이브가 실패하면 아직 스테이징 해제되지 않은 모든 쓰기가 로컬 서버로 손실되므로 다른 복사본(다른 서버)에만 존재합니다. 다른 드라이브 오류가 발생한 후와 마찬가지로 저장소 공간 남은 복사본을 참조하여 자동으로 복구할 수 있고 복구됩니다.

잠시 동안 손실된 캐시 드라이브에 바인딩된 용량 드라이브가 비정상으로 표시됩니다. 캐시 다시 바인딩이 발생하고(자동) 데이터 복구가 완료되면(자동) 정상으로 표시를 다시 시작합니다.

이 시나리오에서는 성능을 유지하기 위해 서버당 최소 2개의 캐시 드라이브가 필요합니다.

애니메이션 다이어그램은 하나의 캐시 드라이브가 실패할 때까지 6개의 용량 드라이브에 매핑된 두 개의 SSD 캐시 드라이브를 보여 줍니다. 이로 인해 6개의 드라이브가 모두 나머지 캐시 드라이브에 매핑됩니다.

이후 다른 드라이브 교체와 마찬가지로 캐시 드라이브를 교체할 수 있습니다.

참고

AIC(Add-In Card) 또는 M.2 폼 팩터인 NVMe를 안전하게 교체하려면 전원을 낮추어야 할 수 있습니다.

다른 캐시와의 관계

Windows 소프트웨어 정의 스토리지 스택에는 관련 없는 여러 캐시가 있습니다. 예를 들어 저장소 공간 쓰기 저장 캐시 및 CSV(클러스터 공유 볼륨) 메모리 내 읽기 캐시가 있습니다.

Azure Stack HCI를 사용하면 저장소 공간 쓰기 저장 캐시를 기본 동작에서 수정해서는 안 됩니다. 예를 들어 New-Volume cmdlet의 -WriteCacheSize와 같은 매개 변수를 사용하면 안 됩니다.

CSV 캐시를 사용하거나 사용하지 않도록 선택할 수 있습니다. 이는 사용자에게 달려 있습니다. Azure Stack HCI에서는 기본적으로 켜져 있지만 이 항목에 설명된 캐시와 어떤 방식으로든 충돌하지는 않습니다. 특정 시나리오에서는 중요한 성능 향상을 제공할 수 있습니다. 자세한 내용은 Azure Stack HCI에서 CSV 메모리 내 읽기 캐시 사용을 참조하세요.

수동 구성

대부분의 배포에서는 수동 구성이 필요하지 않습니다. 필요한 경우 다음 섹션을 참조하세요.

설정 후 캐시 디바이스 모델을 변경해야 하는 경우 상태 서비스 개요에 설명된 대로 상태 서비스의 지원 구성 요소 문서를 편집합니다.

캐시 드라이브 모델 지정

모든 드라이브가 모든 NVMe 또는 모든 SSD 배포와 같이 동일한 형식인 배포에서는 Windows가 동일한 유형의 드라이브 간에 쓰기 내구성과 같은 특성을 자동으로 구분할 수 없으므로 캐시가 구성되지 않습니다.

동일한 유형의 저내구 드라이브를 캐시하는 데 더 높은 내구성 드라이브를 사용하려면 Enable-ClusterS2D cmdlet의 -CacheDeviceModel 매개 변수와 함께 사용할 드라이브 모델을 지정할 수 있습니다. 해당 모델의 모든 드라이브는 캐싱에 사용됩니다.

Get-PhysicalDisk의 출력에 표시되는 모델 문자열과 정확히 일치해야 합니다.

예제

먼저 물리적 디스크 목록을 가져옵니다.

Get-PhysicalDisk | Group Model -NoElement

다음은 몇 가지 출력 예입니다.

Count Name
----- ----
    8 FABRIKAM NVME-1710
   16 CONTOSO NVME-1520

그런 다음 캐시 디바이스 모델을 지정하여 다음 명령을 입력합니다.

Enable-ClusterS2D -CacheDeviceModel "FABRIKAM NVME-1710"

PowerShell에서 Get-PhysicalDisk를 실행하고 해당 Usage 속성에 "저널"가 표시되는지 확인하여 의도한 드라이브가 캐싱에 사용되는지 확인할 수 있습니다.

수동 배포 가능성

수동 구성을 사용하면 다음과 같은 배포 가능성을 사용할 수 있습니다.

다이어그램은 캐시 및 용량 모두에 대한 NVMe, 캐시 및 용량 모두에 대한 SSD, 캐시용 SSD 및 용량용 혼합 SSD 및 HDD를 비롯한 배포 가능성을 보여 줍니다.

캐시 동작 설정

캐시의 기본 동작을 재정의할 수 있습니다. 예를 들어 전체 플래시 배포에서도 읽기를 캐시하도록 설정할 수 있습니다. 기본값이 워크로드에 적합하지 않다고 확신하지 않는 한 동작을 수정하는 것이 좋습니다.

동작을 재정의하려면 Set-ClusterStorageSpacesDirect cmdlet 및 해당 -CacheModeSSD-CacheModeHDD 매개 변수를 사용합니다. CacheModeSSD 매개 변수는 SSD에 대해 캐싱할 때 캐시 동작을 설정합니다. CacheModeHDD 매개 변수는 HDD에 대해 캐싱할 때 캐시 동작을 설정합니다.

Get-ClusterStorageSpacesDirect를 사용하여 동작이 설정되었는지 확인할 수 있습니다.

예제

먼저 저장소 공간 다이렉트 설정을 가져옵니다.

Get-ClusterStorageSpacesDirect

다음은 몇 가지 출력 예입니다.

CacheModeHDD : ReadWrite
CacheModeSSD : WriteOnly

그런 후 다음을 수행합니다.

Set-ClusterStorageSpacesDirect -CacheModeSSD ReadWrite

Get-ClusterS2D

몇 가지 출력 예제는 다음과 같습니다.

CacheModeHDD : ReadWrite
CacheModeSSD : ReadWrite

캐시 크기 조정

캐시는 애플리케이션 및 워크로드의 작업 집합(지정된 시간에 적극적으로 읽거나 쓰는 데이터)을 수용할 수 있도록 크기가 조정되어야 합니다.

이는 하드 디스크 드라이브를 사용하는 하이브리드 배포에서 특히 중요합니다. 활성 작업 집합이 캐시 크기를 초과하거나 활성 작업 집합이 너무 빨리 드리프트되는 경우 읽기 캐시 누락이 증가하고 쓰기가 더 적극적으로 스테이징 해제되어 전반적인 성능이 저하됩니다.

Windows에서 기본 제공 성능 모니터(PerfMon.exe) 유틸리티를 사용하여 캐시 누락 속도를 검사할 수 있습니다. 특히 클러스터 스토리지 하이브리드 디스크 카운터 집합의 캐시 누락 읽기/초를 배포의 전체 읽기 IOPS와 비교할 수 있습니다. 각 "하이브리드 디스크"는 하나의 용량 드라이브에 해당합니다.

예를 들어 4개의 용량 드라이브에 바인딩된 2개의 캐시 드라이브는 서버당 4개의 "하이브리드 디스크" 개체 인스턴스를 생성합니다.

성능 모니터.

범용 규칙은 없지만 읽기가 너무 많으면 캐시가 부족할 수 있으며 캐시 드라이브를 추가하여 캐시를 확장하는 것이 좋습니다. 원할 때마다 캐시 드라이브 또는 용량 드라이브를 독립적으로 추가할 수 있습니다.

다음 단계

추가 스토리지 지식은 다음을 참조하세요.