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。
测试环境
宿主机配置如下:
![物联网](/d/file/news/Internet_of_things/technical/2017-07/975f9962eb502a182693a7ff15a73868.png)
测试1
Read(读测试),文件大小为4k到128k,以record 4k来传输,测试结果如下图所示:
红色为Btrfs,蓝色为DeviceMapper;
横坐标为文件大小,单位为kBytes,纵坐标为传输速度,单位为kBytes/s;
![物联网](/d/file/news/Internet_of_things/technical/2017-07/ed909642c214d42e33b47ba160c0eae9.png)
图6 测试1
测试2
Read(读测试),文件大小为128k到8192k,以record 4k来传输,测试结果如下图所示:
红色为Btrfs,蓝色为DeviceMapper;
横坐标为文件大小,单位为kBytes,纵坐标为传输速度,单位为kBytes/s;
![物联网](/d/file/news/Internet_of_things/technical/2017-07/85620122495eb0e4538beb83d8920a67.png)
图7 测试2
测试3
Read(读测试),文件大小为256k到16384k,以record 256k来传输,测试结果如下图所示:
红色为Btrfs,蓝色为DeviceMapper;
横坐标为文件大小,单位为kBytes,纵坐标为传输速度,单位为kBytes/s;
![物联网](/d/file/news/Internet_of_things/technical/2017-07/d1c2e2f7e447e7a7106837d7645c9588.png)
图8 测试3
测试4
Reread(对刚读过的文件重读),文件大小为4k到128k,以record 4k来传输,测试结果如下图所示:
红色为Btrfs,蓝色为DeviceMapper;
横坐标为文件大小,单位为kBytes,纵坐标为传输速度,单位为kBytes/s;
![物联网](/d/file/news/Internet_of_things/technical/2017-07/879dd0b27769a7992665ff2450d1caef.png)
图9 测试4
测试5
Reread(对刚读过的文件重读),文件大小为128k到8192k,以record 4k来传输,测试结果如下图所示:
红色为Btrfs,蓝色为DeviceMapper;
横坐标为文件大小,单位为kBytes,纵坐标为传输速度,单位为kBytes/s;
![物联网](/d/file/news/Internet_of_things/technical/2017-07/8720883f4e46e37f9c5e22036a99f731.png)
图10 测试5
测试6
Reread(对刚读过的文件重读),文件大小为256k到16384k,以record 256k来传输,测试结果如下图所示:
红色为Btrfs,蓝色为DeviceMapper;
横坐标为文件大小,单位为kBytes,纵坐标为传输速度,单位为kBytes/s;
![物联网](/d/file/news/Internet_of_things/technical/2017-07/2c6c7abee571b3451b0a24d5b32d965e.png)
图11 测试6
测试7
Random read(随机读),文件大小为4k到128k,以record 4k来传输,测试结果如下图所示:
红色为Btrfs,蓝色为DeviceMapper;
横坐标为文件大小,单位为kBytes,纵坐标为传输速度,单位为kBytes/s;
![物联网](/d/file/news/Internet_of_things/technical/2017-07/75f9d51d9fc1cae8ea64990ba561b275.jpg)
图12 测试7
测试8
Random read(随机读),文件大小为128k到8192k,以record 4k来传输,测试结果如下图所示:
红色为Btrfs,蓝色为DeviceMapper;
横坐标为文件大小,单位为kBytes,纵坐标为传输速度,单位为kBytes/s;