dm-cache
dm-cache개발자 | 조 손버, 하인츠 마우엘샤겐, 마이크 스니처 등 |
---|---|
작성 위치 | C |
운영 체제 | 리눅스 |
유형 | 리눅스 커널 기능 |
면허증. | GNU GPL |
웹사이트 | kernel |
dm-cache는 리눅스 커널의 장치 매퍼의 구성 요소(더 구체적으로는 대상)로, 블록 장치를 더 높은 수준의 가상 블록 장치에 매핑하기 위한 프레임워크입니다.플래시 기반 SSD(Solid State Drive)와 같은 하나 이상의 빠른 스토리지 장치가 하드 Disk 드라이브(HDD)와 같은 하나 이상의 느린 스토리지 장치의 캐쉬 역할을 할 수 있습니다. 따라서 하이브리드 볼륨이 효과적으로 생성되고 보조 스토리지 성능이 향상됩니다.
dm-cache 설계에서는 단일 하이브리드 볼륨을 생성하기 위해 3개의 물리적 스토리지 디바이스가 필요합니다. dm-cache는 이러한 스토리지 디바이스를 사용하여 실제 데이터, 캐쉬 데이터 및 필요한 메타데이터를 개별적으로 저장합니다.구성 가능한 운영 모드와 캐시 정책은 별도의 모듈 형태로 구성되어 데이터 캐싱이 실제로 수행되는 방식을 결정합니다.
dm-cache는 GNU General Public License(GPL)의 조건에 따라 라이센스가 부여되며, Joe Thornber, Heinz Mauelshagen 및 Mike Snitz를 주요 개발자로 두고 있습니다.
개요
dm-cache는 하드 Disk 드라이브(HDD)에 액세스하는 동안 SSD(Solid State Drive)를 추가적인 간접 수준으로 사용하므로 회전 자기 미디어를 기반으로 하는 느린 기계식 HDD의 캐시로 고속 플래시 기반 SSD를 사용하여 전반적인 성능을 향상시킵니다.결과적으로 SSD의 값비싼 속도는 느리지만 저렴한 HDD가 [1]제공하는 스토리지 용량과 결합됩니다.또한 클라우드 환경에서 가상 머신의 공유 스토리지 시스템으로 사용되는 SAN(Storage Area Network)의 경우 dm-cache는 클라이언트 측 로컬 [2][3][4]스토리지를 사용하여 데이터 캐슁을 제공함으로써 전체 성능을 향상시키고 SAN의 로드를 줄일 수 있습니다.
dm-cache는 물리적 블록 디바이스와 가상 블록 디바이스 간에 다양한 매핑을 생성할 수 있는 볼륨 관리 프레임워크인 Linux 커널의 디바이스 매퍼의 구성 요소로 구현됩니다.디바이스 간 매핑이 생성되는 방법에 따라 가상 블록이 기본 물리적 블록으로 변환되는 방식이 결정되며, 특정 변환 유형을 [5]대상이라고 합니다.매핑 대상 역할을 하는 dm-cache를 사용하면 SSD 기반 캐슁을 생성된 가상 블록 디바이스의 일부로 사용할 수 있으며 구성 가능한 운영 모드 및 캐시 정책에 따라 dm-cache의 내부 작동 방식이 결정됩니다.운영 모드는 HDD와 SSD 간에 데이터를 동기화하는 방식을 선택하는 반면, 각 정책을 구현하는 별도의 모듈에서 선택할 수 있는 캐시 정책은 승격(HDD에서 SSD로 이동), 강등(SSD에서 HDD로 이동), 청소 등을 결정하는 알고리즘을 제공합니다.[6]
다중 대기열(mq) 또는 확률적 다중 대기열(smq) 캐시 정책을 사용하도록 구성된 경우, dm-cache는 SSD를 사용하여 수행된 랜덤 읽기 및 쓰기와 관련된 데이터를 저장하여 SSD의 탐색 시간을 거의 활용하고 일반적인 HDD 성능 병목 현상과 같은 I/O 작업을 방지합니다.순차적 읽기 및 쓰기와 관련된 데이터는 SSD에 캐슁되지 않으므로 이러한 작업 중에 바람직하지 않은 캐시 무효화를 방지합니다. 성능 측면에서는 순차적 I/O 작업이 기계적 특성으로 인해 HDD에 적합하기 때문에 이점이 있습니다.순차적 I/O를 캐슁하지 않으면 [7]캐쉬로 사용되는 SSD의 수명을 연장하는 데도 도움이 됩니다.
역사
비슷한 목표를 가진 또 다른 dm-cache 프로젝트는 2006년에 Eric Van Hensbergen과 Ming Zhao에 의해 [8]IBM에서 인턴십 작업의 결과로 발표되었습니다.
나중에 Joe Thornber, Heinz Mauelshagen, Mike Snitz는 그들만의 개념 구현을 제공하여 dm-cache를 리눅스 커널에 포함시켰습니다. dm-cache는 2013년 [6][9]4월 28일에 출시된 커널 버전 3.9에서 리눅스 커널 메인라인에 통합되었습니다.
설계.
dm-cache에서 하이브리드 볼륨 역할을 하는 매핑된 가상 블록 디바이스를 생성하려면 다음과 같은 세 가지 [6]물리적 스토리지 디바이스가 필요합니다.
- 오리진 장치 – 느린 기본 스토리지(일반적으로 HDD) 제공
- 캐시 장치 – 빠른 캐시(일반적으로 SSD) 제공
- 메타데이터 장치 – 블록별 히트 수를 포함하여 캐시 정책에 필요한 기타 내부 데이터뿐만 아니라 블록 및 해당 더티 플래그의 배치를 기록합니다. 메타데이터 장치는 여러 캐시 장치 간에 공유할 수 없으므로 미러링하는 것이 좋습니다.
내부적으로 dm-cache는 다수의 고정 크기 블록을 통해 각 오리진 장치를 참조합니다. 이러한 블록의 크기는 캐싱 익스텐트의 크기와 같으며 하이브리드 볼륨을 생성하는 동안에만 구성할 수 있습니다.캐싱 익스텐트의 크기는 32KB와 1GB 사이여야 하며 32KB의 배수여야 합니다. 일반적으로 캐싱 익스텐트의 크기는 256KB와 1024KB 사이입니다.Disk 섹터보다 큰 캐슁 범위를 선택하면 메타데이터 크기와 캐시 공간 낭비 가능성이 절충됩니다.캐싱 익스텐트가 너무 작으면 메타데이터 장치와 커널 메모리 모두에서 메타데이터의 크기가 증가하는 반면, 캐싱 익스텐트가 너무 크면 [6][10]일부 부분에 대해서만 적중률이 높은 경우에도 전체 익스텐트 캐싱으로 인해 낭비되는 캐시 공간이 증가합니다.
dm-cache에서 지원되는 작동 모드는 기본값인 쓰기 되돌리기, 쓰기 및 통과입니다.쓰기 되돌리기 작동 모드에서 캐시된 블록에 대한 쓰기는 캐시 장치에만 전달되고 원본 장치의 블록은 메타데이터에서 더티로 표시됩니다.쓰기 작업 모드의 경우 데이터가 오리진 및 캐시 장치에 모두 도달할 때까지 쓰기 요청이 완료된 상태로 반환되지 않으며, 클린 블록이 더티로 표시되지 않습니다.패스스루 작동 모드에서는 모든 읽기가 원본 장치에서 직접 수행되어 캐시를 피하는 반면, 모든 쓰기는 원본 장치로 직접 전송됩니다. 캐시 쓰기가 적중하면 캐시 블록도 무효화됩니다.캐시 장치의 상태가 원래 [6][11]장치와 일치하지 않는 경우 패스스루 모드를 사용하여 하이브리드 볼륨을 활성화할 수 있습니다.
dm-cache가 양방향(예: 데이터 승격 및 강등)으로 수행하는 데이터 마이그레이션 속도를 구성된 속도로 조절하여 오리진 및 캐시 장치에 대한 정기적인 I/O를 보존할 수 있습니다.하이브리드 볼륨을 해제하거나 캐시 장치를 축소하려면 더러움으로 표시된 메타데이터의 모든 블록을 캐시 장치에서 오리진 [6][7]장치로 효과적으로 플러싱하는 클리너 정책을 사용해야 합니다.
캐시 정책
2015년 8월과[update] 리눅스 [12]커널 버전 4.2를 기준으로 다음 세 가지 캐시 정책이 리눅스 커널 메인라인과 함께 배포되며, 그 중 dm-cache는 기본적으로 확률적 멀티큐 [6][7]정책을 사용합니다.
- 다중 대기열(mq)
- 다중 대기열(mq) 정책에는 캐시를 기다리는 항목에 대한 첫 번째 집합과 캐시에 이미 있는 항목에 대한 나머지 두 개의 집합을 사용하는 16개의 대기열 세트가 세 개 있으며, 후자는 깨끗하고 더러운 항목이 두 집합에 각각 속하도록 구분됩니다.대기열의 캐시 항목 사용 기간은 연결된 논리 시간을 기준으로 합니다.캐시에 들어가는 항목(즉, 승격되는 항목)의 선택은 가변 임계값을 기반으로 하며, 대기열 선택은 항목의 적중 횟수를 기준으로 합니다.이 정책은 다양한 캐시 누락 비용을 고려하고 다양한 로드 패턴을 자동으로 조정하는 것을 목표로 합니다.
- 이 정책은 순차적 I/O 작업을 내부적으로 추적하여 캐쉬를 중심으로 라우팅할 수 있도록 하며, 랜덤 I/O 작업과 순차적 I/O 작업을 구분하기 위해 서로 다른 임계값을 구성할 수 있습니다.결과적으로 이러한 데이터 액세스 패턴이 HDD에 적합하고 바람직하지 않은 캐시 무효화를 방지하기 때문에 대규모 연속 I/O 작업은 오리진 장치에서 수행해야 합니다.
- 확률적 다중 대기열(smq)
- 확률적 다중 대기열(smq) 정책은 다중 대기열 정책과 유사한 방식으로 수행되지만 운영에 필요한 리소스는 더 적습니다. 특히 캐시된 블록을 추적하기 위해 훨씬 적은 양의 메인 메모리를 사용합니다.또한 다중 대기열 정책의 히트 카운트를 "핫스팟" 대기열로 대체하고 가장 최근에 사용되지 않은(LRU) 기준으로 데이터 승격 및 강등을 결정합니다.결과적으로 이 정책은 다중 대기열 정책에 비해 더 나은 성능을 제공하고, 다른 로드 패턴에 더 잘 자동으로 조정하며, 다양한 임계값의 구성을 제거합니다.
- 청소부
- 클리너 정책은 메타데이터에서 더티로 표시된 모든 블록을 오리진 장치에 다시 씁니다.이 작업을 완료한 후에는 하이브리드 볼륨을 해제하거나 캐시 장치의 크기를 줄일 수 있습니다.
LVM과 함께 사용
논리적 볼륨 관리자에는 다음이 포함됩니다.lvmcache
포장지를 제공합니다.dm-cache
LVM과 [13]통합됩니다.
참고 항목
- bcache – Kent Overstreet이 개발한 리눅스 커널의 블록 계층 캐시
- Flashcache – Facebook에서 처음 개발한 Linux 커널용 디스크 캐시 구성 요소
- 하이브리드 드라이브 – 플래시 기반 및 회전식 자기 미디어 스토리지 기술을 결합한 스토리지 장치
- ReadyBoost – Windows Vista 이상 Microsoft 운영 체제의 디스크 캐싱 소프트웨어 구성 요소
- SRT(Smart Response Technology) – 칩셋용으로 Intel에서 개발한 독점 디스크 스토리지 캐싱 메커니즘
- ZFS – 유사한 통합 캐싱 장치 지원(L2ARC)을 갖춘 OS 간 스토리지 관리 시스템
레퍼런스
- ^ Petros Koutoupis (November 25, 2013). "Advanced Hard Drive Caching Techniques". Linux Journal. Retrieved December 2, 2013.
- ^ "dm-cache: Dynamic Block-level Storage Caching". visa.cs.fiu.edu. Archived from the original on July 18, 2014. Retrieved July 24, 2014.
- ^ Dulcardo Arteaga; Douglas Otstott; Ming Zhao (May 16, 2012). "Dynamic Block-level Cache Management for Cloud Computing Systems". visa.cs.fiu.edu. Archived from the original (PDF) on December 3, 2013. Retrieved December 2, 2013.
- ^ Dulcardo Arteaga; Ming Zhao (June 21, 2014). "Client-side Flash Caching for Cloud Systems". visa.cs.fiu.edu. ACM. Archived from the original (PDF) on September 6, 2015. Retrieved August 31, 2015.
- ^ "Red Hat Enterprise Linux 6 Documentation, Appendix A. The Device Mapper". Red Hat. October 8, 2014. Retrieved December 23, 2014.
- ^ a b c d e f g Joe Thornber; Heinz Mauelshagen; Mike Snitzer (July 20, 2015). "Linux kernel documentation: Documentation/device-mapper/cache.txt". kernel.org. Retrieved August 31, 2015.
- ^ a b c Joe Thornber; Heinz Mauelshagen; Mike Snitzer (June 29, 2015). "Linux kernel documentation: Documentation/device-mapper/cache-policies.txt". kernel.org. Retrieved August 31, 2015.
- ^ Eric Van Hensbergen; Ming Zhao (November 28, 2006). "Dynamic Policy Disk Caching for Storage Networking" (PDF). IBM Research Report. IBM. Retrieved December 2, 2013.
- ^ "Linux kernel 3.9, Section 1.3. SSD cache devices". kernelnewbies.org. April 28, 2013. Retrieved October 7, 2013.
- ^ Jake Edge (May 1, 2013). "LSFMM: Caching – dm-cache and bcache". LWN.net. Retrieved October 7, 2013.
- ^ Joe Thornber (November 11, 2013). "Linux kernel source tree: kernel/git/torvalds/linux.git: dm cache: add passthrough mode". kernel.org. Retrieved February 6, 2014.
- ^ Jonathan Corbet (July 1, 2015). "4.2 Merge window part 2". LWN.net. Retrieved August 31, 2015.
- ^ Red Hat, Inc. "lvmcache — LVM caching". Debian Manpages.
A read and write hot-spot cache, using the dm-cache kernel module.
외부 링크
- 안정적인 업스트림 커널(PDF)의 Linux 블록 캐싱 선택, Dell, 2013년 12월
- 향상된 기능 간 성능 비교IO, bcache 및 dm-cache, LKML, 2013년 6월 11일
- I/O, Bcache 및 DM-Cache Benchmarked, Phoronix, 2013년 6월 11일 Michael Larabel 작성
- dm-cache를 사용한 SSD 캐싱 튜토리얼, 2014년 7월, Kyle Manna 작성
- Re: [dm-devel] [PATCH 8/8] [dm-cache] 캐시 대상, 2012년 12월 14일(메타데이터 장치 싸이징 지침)