ZFS是下一代文件系统,它支持许多高级存储技术,例如卷管理,快照,校验和,压缩和重复数据删除,复制等。
它由Sun Microsystems(现为Oracle Corporation)创建,并以CDDL许可证开源。由于CDDL和GPL之间的许可不兼容,因此ZFS不能作为主线Linux内核的一部分提供。但是,Linux上的ZFS(ZoL)项目提供了树外内核模块和用户空间工具,可以分别安装它们。
Linux上的ZFS(ZoL)端口是健康且成熟的。但是,目前不建议将zfsDocker存储驱动程序用于生产,除非您对Linux上的ZFS有丰富的经验。
前提条件
ZFS需要一个或多个专用块设备,最好是固态驱动器(SSD)。
ZFS仅支持Docker引擎-社区与Ubuntu 14.04或更高版本,与zfs 包(16.04及更高版本)或zfs-native与ubuntu-zfs已安装的软件包(14.04)。
对于Ubuntu 14.04,需要先启用补充软件包存储库, ppa:zfs-native/stable然后才能安装软件包。有关 说明,请参见 https://launchpad.net/~zfs-native/+archive/ubuntu/stable。
Docker EE或CS-Engine或任何其他Linux平台不支持ZFS。
该/var/lib/docker/目录必须安装在ZFS格式的文件系统上。
更改存储驱动程序将使您已经创建的所有容器在本地系统上均不可访问。使用docker save保存的容器,并推动现有图像Docker集线器或私人仓库,这样就不需要再后来创建它们。
配置Docker与zfs存储驱动程序
1.停止Docker。
2.复制内容/var/lib/docker/到/var/lib/docker.bk并删除的内容/var/lib/docker/。
$ sudo cp -au /var/lib/docker /var/lib/docker.bk
$ sudo rm -rf /var/lib/docker/*
3.在一个zpool或多个专用块设备上创建一个新的,然后将其安装到中/var/lib/docker/。确保指定了正确的设备,因为这是破坏性的操作。本示例将两个设备添加到池中。
$ sudo zpool create -f zpool-docker -m /var/lib/docker /dev/xvdf /dev/xvdg
该命令将创建zpool和并将其命名zpool-docker。该名称仅用于显示目的,您可以使用其他名称。使用检查创建和正确安装了池zfs list。
$ sudo zfs list
NAME USED AVAIL REFER MOUNTPOINT
zpool-docker 55K 96.4G 19K /var/lib/docker
4.配置Docker以使用zfs。编辑/etc/docker/daemon.json并将设置 storage-driver为zfs。如果该文件以前为空,则现在应如下所示:
{
\”storage-driver\”: \”zfs\”
}
保存并关闭文件。
5.启动Docker。使用docker info验证存储驱动程序zfs。
$ sudo docker info
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 17.03.1-ce
Storage Driver: zfs
Zpool: zpool-docker
Zpool Health: ONLINE
Parent Dataset: zpool-docker
Space Used By Parent: 249856
Space Available: 103498395648
Parent Quota: no
Compression: off
<…>