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;