SSD 내부 쓰기 버퍼의 선택적 내구성 보장을 통한 전원 손실 보호 기법 연구
요약
대다수 SSD는 내부에서 DRAM을 버퍼로 사용하고, DRAM은 휘발성이므로 전원이 끊어지면 데이터가 손실된다. 갑작스러운 전력 손실 상황은 스토리지의 영속성(Persistence)을 해칠 수도 있다. 따라서 이를 방지하기 위해서는 PLP(Power Loss Protection)가 필요하다. PLP는 커패시터에 전력을 저장한 후, 갑작스러운 전력 손실 상황에서 커패시터의 남은 전력을 이용한다. 전력 손실 상황을 인지한 후에는 Buffer에 남아있는 데이터들을 SSD의 영구 저장 매체인 NAND 플래시 메모리로 쓰기 작업을 진행한다. 하지만 커패시터는 SSD 제작 비용의 상당 부분을 차지하기 때문에 많은 곳에서 필요 커패시터의 양을 줄이기 위해 노력 중이다. 본 논문에서는 Key-Value Store에서 선택적으로 내구성을 보장하여 필요 커패시터의 양을 줄이면서도 성능을 보장하는 기법을 제안한다. 먼저 SSD 내 DRAM 버퍼를 분리하여 선택적으로 내구성을 보장한다. 대부분의 데이터베이스 엔진은 WAL(Write Ahead Log)를 지원한다. WAL은 전력 손실 상황에서 데이터가 손실되더라도 WAL 파일만 온전히 존재하면 시스템을 다시 복구할 수 있다. 본 연구에서는 필요한 커패시터의 양을 줄이기 위해 WAL 파일에 대해서만 선택적으로 내구성을 보장한다. 또한 커패시터의 이점을 활용하기 위해 커패시터가 부착된 버퍼에 대해서는 Flush 명령어를 무시하고 내부적으로 처리하여 상대적으로 성능 향상을 노린다. 이처럼 선택적 내구성을 보장하는 Buffer를 사용함으로써 PLP 전력 소비를 줄이는 기법을 제안한다.