20171108

권영진 선배님 세미나 참석
**Title: Strata: A Cross Media File System

**Abstract
Current hardware and application storage trends put immense pressure on the operating system’s storage subsystem. On the hardware side, the market for storage devices has diversified to a multi-layer storage topology spanning multiple orders of magnitude in cost and performance. Above the file system, applications increasingly need to process small, random IO on vast data sets with low latency, high throughput, and simple crash consistency. File systems designed for a single storage layer cannot support all of these demands together.

We present Strata, a cross-media file system that leverages the strengths of one storage media to compensate for weaknesses of another. In doing so, Strata provides performance, capacity, and a simple, synchronous IO model all at once, while having a simpler design than that of file systems constrained by a single storage device. At its heart, Strata uses a log-structured approach with a novel split of responsibilities among user mode, kernel, and storage layers that separates the concerns of scalable, high-performance persistence from storage layer management. We quantify the performance benefits of strata using a 3-layer storage hierarchy of emulated NVM, a flash-based SSD, and a high-density HDD. Strata has 20-30% better latency and throughput, across several unmodified applications, compared to file systems purpose-built for each layer, while providing synchronous and unified access to the entire storage hierarchy. Finally, Strata achieves up to 2.8x better throughput than a block-based 2-layer cache provided by Linux’s logical volume manager.

Small updates, 10TB dataset, crash consistent server를 만든다고 하자. Storage diversification이 발생하고 있음(DRAM, NVM, SSD, HDD). Small random I/O의 경우엔 kernel code가 bottleneck이 되고 있음. Block level caching을 사용하면 스토리지 계층을 추상화할 수 있지만, byte-addressable NVM을 block unit으로 접근해서 비효율성이 발생함(2배의 latency).

현재 시스템은 오래된 장치를 가정하고 설계되었기 때문에 비효율적이다. 현재 저장 장치에 비해 커널 코드가 너무 복잡하고, single storage type을 가정하고 짜여져있다. 저장 장치에 sync하는 것이 일정 지점에서만 발생한다(DRAM에 저장만 하다가).

NVM을 user-level에서 접근 가능하도록 해야 한다(LibFS), digest and migrate(kernelFS). LibFS는 어플리케이션에게는 POSIX API를 제공하고, NVM에는 kernel bypass로 쓰기를 수행한다. 기존에는 synchronous I/O가 느려서 async I/O를 했지만, kernel bypass to NVM을 사용하면 sync가 더 빠를 수 있다.

LibFS는 어플리케이션마다 붙고, KernelFS가 system-wide 공유를 가능하게 한다. KernelFS는 NVM shared area를 유지한다. Digest 연산은 private log를 shared area로 복사하는 것을 의미함. 이 과정에서 불필요한 log를 제거할 수 있고, throughput을 높일 수 있다. SSD utilization에 따라 write block size에 따른 성능이 달라진다. Utilization이 높아짐에 따라 write throughput이 떨어지고, write block size가 커지면 그 현상이 줄어든다.

Strata에서 가장 디자인하기 어려웠던 부분이 concurrent file access. Leases라는 개념을 차용함. Lock과 같이 동작하지만, kernel에 의해 revocable하다. Concurrent update를 serialize한다.

시스템 학회에서는 timely, principled, general에 대해서 평가한다. Strata는 importance에 대해 동의를 받음. Adhoc한 접근하면 안 된다. Parameter-dependent한 성능을 보여도 안 된다. Approach가 하나의 문장 또는 표로 정리가 되어야 한다. Generality를 갖기는 쉽지 않다. 다른 시스템에 적용되었을 때 잘 동작하느냐? 다른 환경에서도 동작할 것인가? 프로세스의 수가 많아도 동작하는가? 동작한다. 로그 크기를 줄여도 동작하고, 로그를 필요로 하지 않는 경우도 있다. mmap을 지원하느냐? 지원하지 못한다. Follow-up 연구에서 해결함. NVM만 가진 경우에도 동작하느냐? SSD만 가진 경우에도 동작하는가? 세 개의 device로 하나의 file을 표현하다보니 device failure에 취약하다.

POSIX 인터페이스를 꼭 지켜줘야 하는가? POSIX 코드가 좋지 못하지만, directory가 여전히 필요하다(사용자 측면). Coordination 측면에서도 필요하다.

Advertisements
Posted in 1) Memo

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

누적 방문자 수
  • 101,726 hits
%d bloggers like this: