소식
- SK하이닉스가 차세대 SSD로 ZNS(Zoned Namespaces SSD)
- 웨스턴디지털 - ZNS개발 , 용량 증가 비용 감소
- 삼성 - Key value SSD 제안
- 인텔 - Optane SSD
NVMe Standard Roadmap
- PCIe 기반 인터페이스에서 동작하는 NVMe 프로토콜
- 비휘발성 메모리를 사용하겠다. (NAND가 아닌)
- SCM(==NVM) : 스토리지 클래스 메모리
- DRAM과 디스크의 특성을 모두 제공하는 메모리소자 = NVM , SCM
- 병렬성과 내구성
- Zoned Namespace
- Key Value I/O 커맨드 => 오픈채널 SSD , 옵태인 SSD , 존네임스페이스 , Key Value SSD
전통적인 SSD의 문제점
- FTL : SSD 내부를 감추어서 병렬성을 충분히 활용하지 못할 수 있다.
- 내부의 소프트웨어와 호스트단의 소프트웨어가 중복되어 있다.
- SSD 내부와 호스트단의 소프트웨어가 중복되어있다.
- 스토리지를 위한 소프트웨어 스택 : 층 구조
- 많은 부분이 중복되어 있다.
- 중복된 이유 : 호스트와 SSD가 구분되어 있기 때문 = Semantic Gap
- 이 점을 해결하려고 하는게 차세대 SSD
차세대 SSD
- 소프트웨어를 한 곳에 모아두려고 한다.
- FTL을 호스트단으로 옮겨보자 ==> 왼쪽 구조 (ZNS SSD)
- 호스트 단의 소프트웨어를 SSD 단으로 내려보자 => (Key Value SSD)
Key Value Store
정형 데이터 : 테이블 형태 ex) 출석부 (이름 , 학번 , 주소 - relation으로 표현하기 쉬움)
비정형 데이터 : 여러가지 포멧(밀집되어있지 않음 - 사진, 동영상 , text)
Rocks DB
- LevelDB에서 파생됨 ,페이스북의 KV 스토어
- 키, 밸류 인터페이스 존재, 데이터를 영속적으로 저장
- LSM 트리 , 로그 스트럭쳐 머지
- 임베디드 and 오픈소스
- 다양한 알고리즘 제공
- LSM트리란 ?
- 로그스트럭쳐 : out of place update,
- key1과 val1이 있는데 val1을 val4로 바꾸려고 한다. 다른 위치에 key1 = val4라고 갱신한다.
- in place update : 읽기 좋고 쓰기 나쁨.
- out place update : 쓰기 좋고 읽기 나쁨 , 회수작업 필요 =>merge
- merge : 기존의 데이터들을 합침 => invalid 공간을 해소, 위에 있는 데이터가 아래로 내려옴
- Tree : L0층에 데이터가 쌓임 . 일부가 업데이트되면 invalid시키고 꽉차면 C1으로 내림. 이 과정에서 merge sort를 시행함. 용량이 너무 커지면 k1, k1키가 같으면 merge (최근꺼 사용)
-
SSTables는 스토리지에 저장
-
key가 push되면 memtable에 쌓이고 쓴다. L0에 쓰여지고 쓰여진것을 SStable이라고 한다. 쌓이다 보면 merge sort를 하고 다음 레벨로 넘어간다. => 컴팩션
-
memtable에서 SSTable로 내려가는것을 flush라고 한다.
-
레벨0에서 쌓이면 레벨 1으로 내려가고 레벨1에서 레벨 2로 내려감
-
일관성을 유지하기위해 저널링 도입, 로그작성한다.
- 새로운 키 밸류가 입력이되면 로그에 쓰고 memtable에 쓰고 immutable되고 flush된다. 그리고 compaction되며 아래로 내려감
ZNS SSD
-
스토리지를 존이라는 개념으로 나눠서 호스트에게 제공한다.
-
사용가자 존으로 구분해서 따로따로 쓸 수 있다.
-
왼쪽이 hot이고 오른쪽이 cold라면 플래시메모리에서 부하가 줄어들 것 (가비지컬렉션시)
-
워크로드 구분 가능 => WAF 줄임(Write Amplification Factor)(쓰기증폭)
-
고립 제공 => isolation
-
SSD를 저가로 만들 수 있다.
-
단점 : 연속적인 쓰기만 가능하다.호스트 레벨의 관리
- 블럭 인터페이스 택스 :플래시 메모리는 덮어쓰기 제한이 있고 erase 단위간의 차이가 있고 out of place , 가비지 컬렉션 필요 => 성능감소
- Streamed SSD : Hot Cold를 알려줌. FTL이 필요함.
- 오픈채널 SSD : SSD내부의 채널정보를 호스트에게 알려준다. FTL이 없다. 너무 자유적이다. 설계공간이 넓어서 표준된 소프트웨어 개발이 어렵다.
- 성능저하가 없는부분이 zns ssd가 된다.