[论文笔记] Live deduplication storage of virtual machine images in an open-source cloud (Middleware, 2011)

Timespan: 1.22 - 1.23
Chun-Ho Ng, Mingcao Ma, Tsz-Yeung Wong, Patrick P. C. Lee, John C. S. Lui: Live Deduplication Storage of Virtual Machine Images in an Open-Source Cloud. Middleware 2011: 81-100 (gs:3)

    本文提出了LiveDFS,一种去重文件系统。LiveDFS是基于Linux文件系统(Ext3)进行修改,加上了去重功能;并使用了spatial localisty, prefetching of metadata, journaling等特性来提高性能和可靠性。LiveDFS可以作为云平台(如Cloudstack)的storage layer,文中实验表明至少可以减少40%的虚拟机镜像存储空间。
    LiveDFS是POSIX-compliant(可以无缝集成到基于Linux的开源云平台中),实现形式是作为kernal-space driver module,不需要修改、不需要重新编译内核源代码就能加载到Linux内核。作者认为他们的工作是:"first work that addresses the practical deployment of live deduplication for VM image storage in an open-source cloud"。

1. deduplication (S1)
文中给出的定义: eliminates redundant data blocks by creating smaller-size pointers to reference an already stored data block that has identical content.
文中提到同一个Linux发行版(Linux Distribution)的不同版本的虚拟机镜像的数据块有较高的重复性。

2. 将去重特性引入到虚拟机镜像存储,需要考虑以下方面的要求(S1):

  • 对虚拟机性能的影响,比如是否会影响VM启动。
  • 对通用的文件系统操作的操作,比如修改、删除等,现有针对后备存储的去重技术就不支持删除操作。
  • 对硬件的要求(原文是"compatibility with low-cost commodity settings"),应支持较廉价的硬件设备,在支持去重的同时保证I/O性能。


3. (S2)介绍了LiveDFS的设计思想,主要的想法比较直接简单:Ext3FS中,每个文件分配了一个inode,inode存储了一组block number(即block的地址),如果两个block的内容一样的话,LiveDFS中设计成指向同一个block,以此达到去重的目的(S2.1)。
     要达到上述的实现,必须要解决以下问题:(1) 如何判断两个block是否内容相同?(使用fingerprints,使用MD5等hash方法生成) (2) 如何支持删除操作? (每个block有一个reference count记数)

4. (S2.2)详细介绍了fingerprint的设计,这个设计需要考虑性能(不可能将所有的fingerprint值放到内存里)。
文中提出了fingerprint store和fingerprint filter:前者持有所有的fingerprint,存储在硬盘上;后者存在内存,用于快速查找到fingerprint

image

根据作者的计算,对于1TB的数据,如果block size为4KB(其他参数见文中),需要用来存储fingerprint filter的内存在2G以内。

5. (S2.3)介绍了fingerprint store的预取,用以提高性能;(S2.4)介绍了Journaling特性,可以提高可靠性,同时对write performance也有帮助。

6 LiveDFS的一些局限性或假设

  1. deployed in a single storage partition (S2)
  2. only applied deduplication to the stored data within the same partition (S2)
  3. mainly targets for VM image storage (S2)

你可能感兴趣的:(virtual)