Docker存储驱动之Btrfs简介(3)

  Fragmentation。存储残片是像Btrfs这种copy-on-write文件系统的天然副产品,很多小的随机写会产生这个问题。它可以表现为使用SSD介质的Docker主机上的CPU峰值和使用旋转介质的Docker主机上的抖动(It can manifest as CPU spikes on Docker hosts using SSD media and head thrashing on Docker hosts using spinning media.不是很理解这句)。这两个都会导致性能很差。 
  Btrfs的最近版本允许你制定autodefrag作为一个映射点。这种模式下,会探测到随机写并进行碎片整理。在确定使用Btrfs之前,你应该在你的Docker host上进行测试。一些测试显示,在执行大量的samll writes操作时(包括启停很多容器),这个选项会有一些负面的性能问题。

  Solid State Devices(SSD)。Btrfs有原生的SSD优化,可以通过映射时加上-o ssd映射选项来使能它。这些优化包括在SSD介质上避免seek之类的操作来增强SSD写性能,因为这类操作在SSD上没有任何作用。
  Btrfs也支持TRIM/Discard元操作。然而,映射时加上 -o discard 的选项会导致性能问题。因此,还是建议在使用之前做些测试。

  Use Data Volumes。数据卷提供最优和最可预测的性能。因为它们可以绕过存储驱动,不会引起任何超配和copy-on-write可能会导致的潜在的负载。

  Balance BTRFS。开启一个cron任务来均衡你的BTRFS设备,比如均衡地传输子卷的块给raid设备,回收未使用的块。如果不这样做,docker删除的快照和子卷会遗留分配了的块,这些块装满了BTRFS根卷的。一旦你没有执行再均衡操作,在不添加额外的存储设备情况下,会导致潜在的不可恢复的状态。如果你不愿意使用crond来自动执行,另一个方法是在非峰值时手动执行再均衡命令,因此为这种操作时磁盘I/O密集型操作。此命令按要求所有的大块使用了1%或者更少:

$ sudo btrfs filesystem balance start -dusage=1 /var/lib/docker Dumping filters: flags 0x1, state 0x0, force is off DATA (flags 0x2): balancing, usage=1 Done, had to relocate 673 out of 842 chunks 小结

  Btrfs存储驱动的主要特性就是超配,copy-on-write和快照。与AuFS或者devmapper不同,要在Docker上使用Btrfs,要求整个/var/lib/docker所处的文件系统就是Btrfs。此外,btrfs存储驱动由于现在还在重度开发中,现在最多的就是各种性能问题。所以,官方也不建议直接在Docker生产环境中使用,除非,你在Btrfs上有着丰富的经验。

更多Docker相关教程见以下内容

Docker安装应用(CentOS 6.5_x64)

Ubuntu 14.04安装Docker 

Ubuntu使用VNC运行基于Docker的桌面系统 

阿里云CentOS 6.5 模板上安装 Docker

Ubuntu 15.04下安装Docker 

在Ubuntu Trusty 14.04 (LTS) (64-bit)安装Docker

在 Ubuntu 15.04 上如何安装Docker及基本用法

Ubuntu 16.04上Docker使用手记

Docker 的详细介绍请点这里
Docker 的下载地址请点这里

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

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