Docker存储驱动之ZFS简介(2)

  3) 确认你的zfs模块成功安装并加载。

$ lsmod | grep zfs zfs 2813952 3 zunicode 331776 1 zfs zcommon 57344 1 zfs znvpair 90112 2 zfs,zcommon spl 102400 3 zfs,zcommon,znvpair zavl 16384 1 zfs 在Ubuntu 14.04 LTS上安装ZFS

  1) 停止Docker daemon。

$ sudo systemctl stop docker.service

  2) 安装software-properties-common包。

$ sudo apt-get install -y software-properties-common Reading package lists... Done Building dependency tree <output truncated>

  3) 添加zfs-native包。

$ sudo add-apt-repository ppa:zfs-native/stable The native ZFS filesystem for Linux. Install the ubuntu-zfs package. <output truncated> gpg: key F6B0FC61: public key "Launchpad PPA for Native ZFS for Linux" imported gpg: Total number processed: 1 gpg: imported: 1 (RSA: 1) OK

  4) 获取最新包的列表。

$ sudo apt-get update Ign http://us-west-2.ec2.archive.ubuntu.com trusty InRelease Get:1 http://us-west-2.ec2.archive.ubuntu.com trusty-updates InRelease [64.4 kB] <output truncated> Fetched 10.3 MB in 4s (2,370 kB/s) Reading package lists... Done

  5) 安装ubuntu-zfs包。

$ sudo apt-get install -y ubuntu-zfs Reading package lists... Done Building dependency tree <output truncated>

  6) 加载zfs模块。

$ sudo modprobe zfs

  7) 确认模块是否正确加载。

$ lsmod | grep zfs zfs 2768247 0 zunicode 331170 1 zfs zcommon 55411 1 zfs znvpair 89086 2 zfs,zcommon spl 96378 3 zfs,zcommon,znvpair zavl 15236 1 zfs 在Docker中配置ZFS

  一旦安装和加载了ZFS,就可以在Docker中配置ZFS了。
   1) 创建一个新的zpool。

$ sudo zpool create -f zpool-docker /dev/xvdb

   上面命令创建了一个名为“zpool-docker”的zpool。这个名称是随意的。
   2) 检查zpool是否存在。

$ sudo zfs list NAME USED AVAIL REFER MOUNTPOINT zpool-docker 55K 3.84G 19K /zpool-docker

   3) 在/var/lib/docker上创建和映射一个新的ZFS文件系统。

$ sudo zfs create -o mountpoint=/var/lib/docker zpool-docker/docker

   4) 检查前面的步骤是否正常工作。

$ sudo zfs list -t all NAME USED AVAIL REFER MOUNTPOINT zpool-docker 93.K 3.4G 9K /zpool-docker zpool-docker/docker 9K 3.4G 9K /var/lib/docker

   可以看到,在/var/lib/docker上���射了一个ZFS文件系统,daemon启动后会自动加载zfs存储驱动。
   5) 启动Docker daemon。

$ sudo service docker start docker start/running, process 2315

   6) 确认daemon正在使用zfs存储驱动。

$ sudo docker info Containers: 0 Images: 0 Storage Driver: zfs Zpool: zpool-docker Zpool Health: ONLINE Parent Dataset: zpool-docker/docker Space Used By Parent: 27648 Space Available: 4128139776 Parent Quota: no Compression: off Execution Driver: native-0.2 [...] Docker中的ZFS性能

  有以下一些因素会影响zfs存储驱动在Docker中的性能。
   ●内存。内存对ZFS性能影响很大,因为ZFS最初被设计成在拥有大量内存的Sun Solaris服务器上使用的。
   ●ZFS特性。使用ZFS特性,如重复删除技术,会增加ZFS的内存使用。就内存使用和效率原因而言,建议关闭FS的重复删除特性。
   ●ZFS缓存。ZFS将磁盘块缓存在被称作adaptive replacement cache(ARC)内存结构体中。ZFS的ARC单拷贝特性使得块的单个缓存拷贝可以被多个文件系统的克隆共享,也就是说多个运行着的容器可以共享缓存块的单个拷贝。这意味着对于PaaS或其他高密度用例来说,ZFS是一个不错的选择。
   ●存储碎片。碎片是诸如ZFS这种copy-on-write文件系统的副产品。不过,ZFS写128K的块时,会分配slab(多个128K的块)来进行CoW操作,从而尝试减少存储碎片。ZFS intent log(ZIL)和 coalescing of writes(delayed writes)也可以帮忙减少碎片。
   ●使用原生的Linux ZFS驱动。虽然Docker zfs存储驱动支持ZFS FUSE实现,但在高性能场景下不建议使用ZFS FUSE。原生的ZFS Linux驱动有着更好的性能。
   ●使用SSD。为了更好的性能,可以使用更快的存储介质(如SSD)。不过,如果你的SSD存储很有限,那么建议你关闭SSD上的ZIL特性。

限制容器写的存储配额

  如果你像实现对每个镜像的存储配额,那么你可以使用--storage-opt选项。

--storage-opt size=256M

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/c388ba42a46c3e70faa81f6413b9d575.html