Strata: A Cross Media File System

Ahn9807 (토론 | 기여)님의 2023년 3월 23일 (목) 07:13 판 (새 문서: 분류: 시스템 논문 == 개요 == Strata는 다양한 스토리지 하드웨어의 Need를 맞추기 위해서 Log를 유저레벨에서 작성하고 커널에서 Digest하는 방식을 제시하여 성능 향상을 이룬 논문이다. == Motivation == 서버에서 사용하는 스토리지 디바이스의 Diversification이 점차 심해지는 상황에서 이들의 요구를 만족시키면서 빠른 속도를 보장하는 File system이 없었다. 현재 서버...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)


개요

Strata는 다양한 스토리지 하드웨어의 Need를 맞추기 위해서 Log를 유저레벨에서 작성하고 커널에서 Digest하는 방식을 제시하여 성능 향상을 이룬 논문이다.

Motivation

서버에서 사용하는 스토리지 디바이스의 Diversification이 점차 심해지는 상황에서 이들의 요구를 만족시키면서 빠른 속도를 보장하는 File system이 없었다. 현재 서버의 대부분은 조그만한 단위의 업데이트 (< 1 kbytes), 데이터가 10TB이상으로 커질 수 있으며, 업데이트는 반드시 Crash consistency를 보장해야 한다. 또한 디바이스마다 요구하는 Access pattern이 다르고, 최대한의 성능을 뽑아 낼 수 있는 방법이 다르다. 예를 들어서 NVM은 Byte단위로 접근 가능하고 Crash consistency하지만 SSD는 쓰기데 하나의 섹터를 전부 Rewrite해야 하나의 Page를 쓸 수 있다. 또한 Metadata작성이 매 Write마다 동작하기 때문에 Write amplification이 발생하는 문제가 있었다.

Importance

그러나 위의 Motivation을 만족시키는 파일시스템은 현재 없다. 이러한 모든 조건을 모두 만족시키는 파일 시스템을 만들기가 힘들기 때문이다. 대부분의 파일시스템은 NVM에서 쓰기에는 너무 느리고, 각각의 하드웨어에 초점이 맞추져 있으며, DRAM에 캐싱하기 때문에 Crash consistency환경에 취약하다. 이러한 상황에서 Fundamental하게 파일시스템을 다시 설계할 필요가 있다.

Main idea

Log operation들을 유저레벨에서 관리함으로서, 커널 바이패스를 사용하여 빠른 그리고 Crash consistency한 환경을 제공한다. 커널은 유저가 제공한 Log을 Digest하도록 하여서, 안전하게 하나의 디바이스를 공유하여 관리할 수 있도록 하였다. 또한 스트라타에서는 하드웨어마다 달라지는 설정, 예를 들어서 Block size와 같은 Individual implementations들이 없다. 이를 통해서 하드웨어가 달라도 공유된 환경을 제공 할 수 있도록 하였다.

Design

User-level Strata LibFS
LibFS는 유저레벨 라이브러리로 로그를 통해서 Log structured merge tree처럼 관리된다. Small write들이 빠른 NVM에 먼저 기록되고 나중에 Block단위로 Digest되어서 디바이스에 작성되기 때문에, Consistency + Performance를 동시에 잡을 수 있다. 또한 Page cache가 필요 없다는 장점도 있다.
Kernel-level Start KernelFS
커널 파일 시스템은 주기적, 비 동기적으로 로그를 Digest하면서 로그에 있는 내용을 Batching으로 디바이스에 적는 역활을 한다. 또한 커널 파일 시스템은 서로 다른 계층에 있는 데이터의 접근 주기를 바탕으로 LRU정책을 통해서 자주 접근 하는 데이터는 NVM처럼 빠른 곳으로 아닌 데이터는 HDD처럼 느린곳으로 Migration하는 역활을 수행한다.

Result

이 논문은 성능을 향상시키는 것이 목적이기 때문에 파일시스템의 Latency와 Throughput이 중요한 결과 이다.

Microbenchmark
Latency latency를 소타인 노바에 비해서 평균 26%정도 (테일 43% 정도) 줄일 수 있었으며, 대부분의 경우 EXT4-DAX보다 훨씬 좋은 성능(7배)을 보일 수 있었다.
LevelDB
레벨디비의 처리는 Digest과정에서 많은 Synchoronous digests를 시키는데 Sota인 Nova에 비해서 25%정도의 성능 향상을 보일 수 있었다. 이를 통해서 Latency가 Digest의 처리에 큰 영향을 보이지 않음을 보일 수 있었다.
Varmail
스트라타는 Nova에 비해서 29% 정도 좋은 성능을 보일 수 있었다. 기존 시스템이 Latency와 Throughput에 각각 다른 장점을 보이는 반면에 스트라타는 둘다 좋은 성능을 보였다.

Contribution

  1. 스트라타는 다양한 하드웨어가 공존하는 환경에서 파일 시스템의 성능 향상을 어떻게 하면 보일 수 있을지를 탐구 하였다.
  2. 스트라타는 User-level그리고 Kernel-level로 파일시스템의 구현을 분리하여 Flexible하면서도 Performance oriented된 파일시스템을 개발하는 디자인을 제시하였다.
  3. NVM이 등장하던 초창기에 NVM의 성능 특성을 분석하고 NVM을 효과적으로 사용할 수 없을지에 대한 Motivation을 제공하고 있다.

Criticize

  1. 완벽... 그 자체

Reference