DCOS Docker存储方式研究选型

  sda1

  sda2

  loop0 7:0 0 100G 0 loop

  loop1 7:1 0 2G 0 loop

  接下来如何选择

  用户可根据自己的实际需要,考虑以下几个方面:容器密度、文件大小、是否IO密集等,以及自己在使用方面的喜好,来选择一种。

  由于AUFS没有并入linux内核主线,overlay没有完全支持POSIX标准,ZFS也存在兼容性问题。鉴于DeviceMapper(loop模式)之前遇到种种问题,所以我们计划在Btrfs与DeviceMapper(direct-lvm模式)两者中选一种,下面对他们进行一些IO性能的测试,之后在现有环境中部分部署Btrfs,部分部署DeviceMapper,对稳定性进行比较。

  大家对于打算使用的存储驱动,可以关注官方网站的bug列表,也是一个可参考的因素。

  IO性能测试

  使用IOzone测试工具,该工具参数多样,可灵活使用,测试各种读写,我们结合自己的场景,主要测试读的速度,主要关注文件大小在几百kKB到几MB之间的数据,仅比较Btrfs与DeviceMapper。

  测试环境

  宿主机配置如下:

物联网

  测试1

  Read(读测试),文件大小为4k到128k,以record 4k来传输,测试结果如下图所示:

  红色为Btrfs,蓝色为DeviceMapper;

  横坐标为文件大小,单位为kBytes,纵坐标为传输速度,单位为kBytes/s;

物联网

  图6 测试1

  测试2

  Read(读测试),文件大小为128k到8192k,以record 4k来传输,测试结果如下图所示:

  红色为Btrfs,蓝色为DeviceMapper;

  横坐标为文件大小,单位为kBytes,纵坐标为传输速度,单位为kBytes/s;

物联网

  图7 测试2

  测试3

  Read(读测试),文件大小为256k到16384k,以record 256k来传输,测试结果如下图所示:

  红色为Btrfs,蓝色为DeviceMapper;

  横坐标为文件大小,单位为kBytes,纵坐标为传输速度,单位为kBytes/s;

物联网

  图8 测试3

  测试4

  Reread(对刚读过的文件重读),文件大小为4k到128k,以record 4k来传输,测试结果如下图所示:

  红色为Btrfs,蓝色为DeviceMapper;

  横坐标为文件大小,单位为kBytes,纵坐标为传输速度,单位为kBytes/s;

物联网

  图9 测试4

  测试5

  Reread(对刚读过的文件重读),文件大小为128k到8192k,以record 4k来传输,测试结果如下图所示:

  红色为Btrfs,蓝色为DeviceMapper;

  横坐标为文件大小,单位为kBytes,纵坐标为传输速度,单位为kBytes/s;

物联网

  图10 测试5

  测试6

  Reread(对刚读过的文件重读),文件大小为256k到16384k,以record 256k来传输,测试结果如下图所示:

  红色为Btrfs,蓝色为DeviceMapper;

  横坐标为文件大小,单位为kBytes,纵坐标为传输速度,单位为kBytes/s;

物联网

  图11 测试6

  测试7

  Random read(随机读),文件大小为4k到128k,以record 4k来传输,测试结果如下图所示:

  红色为Btrfs,蓝色为DeviceMapper;

  横坐标为文件大小,单位为kBytes,纵坐标为传输速度,单位为kBytes/s;

物联网

  图12 测试7

  测试8

  Random read(随机读),文件大小为128k到8192k,以record 4k来传输,测试结果如下图所示:

  红色为Btrfs,蓝色为DeviceMapper;

  横坐标为文件大小,单位为kBytes,纵坐标为传输速度,单位为kBytes/s;