论文学习:Strata: A cross media file system

  • 上周学习了<Strata: A cross media file system>(SOSP 17' ). 想着记录&总结一下

SOSP(操作系统原理大会)自1967年创办以来,两年一届,已经有50个年头了。从1969年的UNIX系统到21世纪初的MapReduce、BigTable、GFS,系统领域一系列最有影响的工作都是发表在SOSP以及与它隔年举行的兄弟会议OSDI上。

  • 这篇论文也是非常有水平,较为完善的一篇论文.

overview

如今文件系统存在的一些问题:

  • 内核对每个操作都有干预:NVM很快,内核是瓶颈所在(如图所示,一次写操作,写到NVM设备延时远远小于进入内核态所带来的开销)

    IO latency.png

  • NVM、SSD、HDD各有优劣,三者都是可持久化设备,如下图所示,NVM的读写延迟最低,但目前的技术中容量较小,价格较高;SSD处于中间位置;HDD发展最久,读写延迟由于机械开销而最高,但能满足大容量,且价格最低。想要具有高性能且低成本,必须混合利用多种设备类型。

    现有的介质对比.png

  • 目前的基于块设备的传统文件系统,例如EXT4、F2FS,都是将数据缓存在DRAM中,只有在必须时才写入设备(fsync)--一致性无法保障。

Motivation

  1. 存储介质的多样化为混合文件系统提供了可能。
  2. 应用程序对文件系统的依赖和需求(一致性):当系统崩溃时能快速恢复到一致性状态,块设备(SSD/HDD)太慢,如果log/journal存放在NVM上可以加速恢复
  3. 当前文件系统几乎只是针对某一种特定的存储介质:NOVA for NVM、F2FS for SSD、Ext4 for HDD;多种存储介质并存时存在写入放大的问题,因为不同存储介质特性不同;当前文件系统大多只是一个block store interface,没有丰富的语义(针对应用程序)

Strata设计目标

  • 快速写。Strata支持快速随机小写
  • 高效同步(sync)过程。Strata在同步的时候尽量减少性能损失。
  • 减少写入放大。合理安排数据迁移的粒度。
  • 高并发性。Strata支持多个线程并发logging
  • 统一的接口(Unified Interface)。Strata的基本架构类似于LSM tree。Strata首先将log同步写到NVM(write-efficient),然后周期性(异步)的digest到Kernel FS(per-file extent tree,read-optimized)。
  • log在用户态,digest在内核中实现。
  • 根据SSD/HDD特性,在(Kernel FS)数据迁移的时候都是顺序写,并选择合适的粒度。
  • 硬件辅助保护机制。保证绕过内核时的安全。


    strata.png

LibFS

LibFS.png
  • 内核利用Intel的libpmem直接访问NVM的一块空间(mmap方式直接访问)。在用户态实现一个库, 用于拦截系统调用,兼容POSIX接口。
    优点:
  1. 用户态的库直接拦截系统调用,避免了进入内核态的开销,在应用程序这一层实现file I/O.
  2. 提供快速同步的持久化。 可以绕过page cache,直接写NVM,消除了内存复制的写入延迟。
  3. Log的一致性。Strata将一次持久化粒度定义为一个transaction。
  4. 快速读。LibFS将(SSD/HDD)数据缓存在DRAM中,NVM中数据不用缓存。

KernelFS

KernelFS.png

Kernel FS主要负责在内核中管理可能存在于任何存储介质层的共享数据。为了做到这一点,Kernel FS将LibFS中的log digest进来,并转化为per-file extent tree的形式。

  • 当log的大小超过一定的阈值(在Strata中为30%),Strata就会通过后台线程(异步)的执行digest。为了减少digest的开销,Strata在digest之前会合并消除一些冗余的log。
  • 内核在后台异步digest日志,并在digest完成后回复LibFS。完成后,通过重置每个日志的header的有效位,LibFS可以安全地回收日志条目。
  • 为了充分利用各个层次存储介质,Strata在Kernel FS中维持了两个LRU list,一个用于NVM-SSD之间的数据迁移,一个用于SSD-HDD之间数据迁移。
  • 和digest类似,数据迁移也是以log-structured的结构方式。为了减少开销,写入到SSD是以erase为单元(百兆级别),写入到HDD是以瓦磁盘方式(GB级别)。

Sharing (leases)

  • 为了能够提供更丰富的(共享)语义,对每一个文件Strata支持一个线程写、多个线程读的共享方式。有点类似于锁机制。

Evaluation

环境

  • 2x Intel Xeon E5-2640 CPU, 64 GB DRAM, 400 GB NVMe SSD, 1 TB HDD
  • Ubuntu 16.04 LTS, Linux kernel 4.8.12
  • 模拟NVM: 4GB的DRAM来模拟

对比

  • NVM文件系统
  1. PMFS
  2. NOVA
  3. EXT4-DAX
  • SSD文件系统
  1. F2FS
  • HDD文件系统
  1. EXT4

Filebench测试

  • 使用Varmail负载以及Fileserver负载
  • 配置:10000files/32KB(avg for varmail) & 128KB(avg for fileserver)/16KB appends/ 读写比1:1(for varmail) & 2:1(for fileserver)/两种工作负载都以1MB的粒度读取和写入数据
  • 测试结果:


    strata-filebench测试结果.png

Data Migration

  • 为了测试Strata使用多个存储设备时的性能,我们将Fileserver配置为1MB,1000files。在这种情况下,工作集一开始在NVM中运行,但随后会digest到SSD和HDD。
  • 测试结果:


    data migration.png

总结

  • 这篇论文很能发现问题,首先发现现有的基于单一介质的文件系统并不能同时满足大容量,高性能,性价比高的需求,所以提出了多种介质混合的想法;第二,通过发现用户态和内核态切换开销所占比例过大,设计了LibFS和KernelFS两者功能各司其职又相互协作的文件系统,其中LibFS拦截了系统调用,自己实现了用户态的库,通过mmap( )的方法直接写到NVM上,然后再在内核态中进一步的digest进去,这一做法十分新颖且高效。
  • 实验部分也做的很完善,在本文中我并没有完全写完它的实验部分,感兴趣的可自己看看。实验结果也说明了Strata确实实现了高吞吐量,低延迟的性能。
  • Source code is available at strata github.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容