NAND flash-based solid-state drives (SSDs) excel the magnetic disks in fast random access latency, low energy consumption, and high reliability for mobile systems. However, flash memory allows only out-of-place writes with a much larger atomic write granularity than magnetic disks. Due to the restriction on write operations, any partial writes with data size smaller than the write granularity of flash memory cause the entire write unit to be written to a new location. Furthermore, the unit of write varies by flash chips and SSD designs, and is hidden internally. File systems and applications frequently sends partial write requests, incurring significantly more write operations than necessary.
In this paper, we propose a sector-managed data log, called sector log, which uses part of NAND flash memory in SSDs. Sector log can manage the data region in sector unit, and thus, stores partial writes more efficiently than conventional SSDs. By reducing the negative effect of large page sizes in SSDs, sector log allows more flexible designs both for application programmers and SSD designers. In our trace-based evaluation, sector log can improve the throughput of an SSD by 126% for the TPC-C trace, with 8KB page size
NAND 플래시 메모리 기반의 SSD는 기존의 하드디스크에 비해서 빠른 임의 접근 속도, 적은 에너지 소모량, 이동성 시스템을 위한 내구성 등 여러 가지 점에서 뛰어나 차세대 저장 장치로서 각광을 받고 있다. 하지만 이런 SSD는 Out-of-place 업데이트, 하드디스크 보다 작은 쓰기 단위 등 쓰기에 대해서 여러 가지 단점을 가진다. 이런 쓰기 제약으로 인해서, 하드디스크에서는 볼 수 없는, Partial-Write라고 불리는 쓰기가 발생하게 된다. Partial-Write는 플래시 메모리의 쓰기 단위보다 작은 쓰기 요청이 발생하였을때, 쓰기 요청 크기만큼만 기록하는 것이 아니라, 플래시 메모리의 쓰기 단위만큼 기록해야 되는 쓰기이다. 만약 이전의 데이터가 존재하고 있는 상황에서 Partial-Write로 인해 업데이트가 발생하면, 추가의 읽기 요청 또한 발생해야 한다. 게다가 각 SSD마다 이런 쓰기 단위는 어떤 구조를 채용하느냐에 따라서 달라지게 되고, 내부적으로 이러한 정보는 숨겨진다. 결국 파일시스템이나 사용자 프로그램에서는 이러한 쓰기 단위를 모르게 되고, 쓰기 단위보다 작은 크기를 가지는 Partial-Write를 발생시키는 경우가 많이 발생한다.
이 논문에서는, 섹터 단위로 데이터를 관리하는 섹터 로그를 제안하였다. 섹터 로그는 NAND 플래시 메모리의 일부 영역을 사용하고, Partial-Write를 섹터 단위로 저장하여, 기존의 SSD보다 훨씬 효율적으로 Partial-Write를 처리하게 된다. 섹터 로그는 SSD의 쓰기 단위가 커지는 문제를 해결하여, SSD 디자이너와 프로그래머에게 유연한 SSD 디자인을 제공할 수 있다. 이 논문에서는 트레이스 기반의 성능 실험을 수행하였는데, 쓰기 단위가 8KB이고 TPC-C 트레이스를 이용한 실험에서, 섹터 로그는 약 126%에 이르는 Throughput 향상을 보여주었다.