如何在Ubuntu系统中使用Overlay文件系统


【编者的话】本文用最简洁的语言介绍了如何在Ubuntu系统上运行Overlay文件系统,正如作者所说:AUFS是过去时代的王者,现在新的国王是Overlay。看来Overlay以后将是Docker存储的首选。

在上周的Docker伦敦大会上面,Jérôme Petazzoni分享了「深度研究Docker存储驱动」的演讲,非常棒。如果这件事还没有令我足够信服,那么Jessie Frazelle则完全说服了我,她在Qcon组织的演讲中宣称:AUFS是过去时代的王者,现在新的国王是Overlay。在Jessie的演讲过程中,我打算为我自己搭建这样的一个环境,因为我没有办法找到一个比我现在写的这个更加简单明了的手册。

3.18 Kernel(3.18版本的内核)

OverlayFS之前已经加入到了Ubuntu内核中,但是那并不是我们想要的。Overlay(没有FS)是一个不同的内核模块,因此你需要安装3.18(或者以上)的内核:
cd /tmp/ 
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.18-vivid/linux-headers-3.18.0-031800-generic_3.18.0-031800.201412071935_amd64.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.18-vivid/linux-headers-3.18.0-031800_3.18.0-031800.201412071935_all.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.18-vivid/linux-image-3.18.0-031800-generic_3.18.0-031800.201412071935_amd64.deb
sudo dpkg -i linux-headers-3.18.0-*.deb linux-image-3.18.0-*.deb

我已经在Ubuntu14.04和12.04环境下测试成功了。

Docker

你需要安装Docker 1.4或者更高版本(我使用1.5版本做测试的),具体可以参考官方文档来安装。
在有了新的内核并且重新启动以后,现在需要在/etc/default/docker中给DOCKER_OPTS设置-s overlay
# Use DOCKER_OPTS to modify the daemon startup options.
DOCKER_OPTS="-s overlay"

设置好以后,重新启动Docker服务,如果一切顺利的话,你可以从docker info命令中得到如下的信息:
$ sudo docker info
Containers: 0
Images: 0
Storage Driver: overlay
Backing Filesystem: extfs
Execution Driver: native-0.2
Kernel Version: 3.18.0-031800-generic
Operating System: Ubuntu 14.04.1 LTS
etc...

为了使Overlay正常跑起来,你可能需要在Ubuntu 12.04的环境下执行modprobe overlay。还有一点需要注意:如果 Docker 不能成功地使用 Overlay 作为存储后端,那么将会转为使用DeviceMapper(而不是AUFS)机制存储。

原文链接:Using Overlay file system with Docker on Ubuntu(翻译:刘凯宁 校对:李颖杰)
===========================
译者介绍
刘凯宁,中南大学信息管理与信息系统专业,本科三年级在读,热爱互联网,热爱软件开发技术。大一下开始编程,熟悉Java SE,PHP,Go,有若干小型商业项目实践经验(网站、微信平台、JavaSE实用软件)和软件公司实习经历(上海热璞科技,201407-201409)技术博客:C2P技术博客;QQ:929025296 ;很高兴和各位前辈交流!

5 个评论

以下纯属吹毛求疵。

* `Docker bits` 肯定不是`Docker二进制源代码`的意思。什么叫二进制源代码?我想,这里是指`有关Docker的几部分(内容)`。结合上下文,本文主要内容分为“3.18 内核”和“Docker”两部分。所以,这里直接译为`Docker`就行。

* 有些地方翻译的痕迹太浓。例如,最后一句,原文是

I'd also note the bad news that Docker falls back to DeviceMapper (rather than AUFS) if it can't make Overlay work.

可考虑翻译为:

还有一点需要注意:如果 Docker 不能成功地使用 Overlay 作为存储后端,它会转而使用 DeviceMapper (而不是 AUFS )存储。
谢谢指出不足!我会多加注意!
非常感谢您的反馈,不知道是否有兴趣加入我们的翻译团队?
我只能保证一周一篇的工作量,:-)
我将docker的底层Storage修改为overlay,filesystem 用的是XFS,但不幸的是container经常报错:"lstat .... no such file or directory",导致container无法启动或者无法commit了,我自己分析估计是文件实体和文件meta不同步,即文件已删除了,但docker的meta中还记录着该文件信息。
一查发现docker果然有类似的bug还未fix: https://github.com/docker/docker/issues/11012 。
建议大家在使用xfs时慎用overlay,我想应该是docker的支持overlay的驱动服务方面的问题吧
我只好将切换回aufs去工作了。

要回复文章请先登录注册