Сравнение производительности Sheepdog/Ceph
Выкладываю данные по тестированию производительности ceph и sheepdog.
Тестовый стенд: 3 почти одинаковых сервера с двумя дисками по 500Гб. С каждого диска в конце откушено по 450Гб под данные и отдано под разные системы. В качестве хранилища чанков используется ext4 (sheepdog) и xfs (ceph). Тип объекта - реплиируемый, количество копий и там и там выставлено в 2. chunk size везде равен 4мб.
Конфиг кластера ceph.
Порядок тестирования:
- создаётся блочное устройство в нужной системе
- подключается к виртуалке
- ставится чистая freebsd 10.3
- качается дерево исходников (1й бенчмарк, линейная запись)
- распаковывается (2й бенчмарк, запись множества мелких файлов)
- удаляется (3й бенчмарк, чистая работа с метаданными фс)
- свободное место на разделе заполняется нулями, с целью вызвать полное выделение места под диск (cat /dev/zero > zero.bin; rm zero.bin)
- распаковывается 2й раз (4й бенчмарк, то же самое что и второй, но при полностью выделенном месте)
- качается архив с деревом портов (5й бенчмарк, линейная запись)
- распаковывается (6й бенчмарк)
- удаляется
При смене дисковой системы сама виртуалка не удаляется, только перетыкаются диски.
Результаты (время, H:M:S):
.---.-------------------------.----------.----------.
| # | теста | sheepdog | ceph |
:---+-------------------------+----------+----------:
| 1 | fetch src.txz (320Mb) | 0:00:52 | 0:01:45 |
:---+-------------------------+----------+----------:
| 2 | tar -xJf src.txz | 0:03:50 | 0:41:29 |
:---+-------------------------+----------+----------:
| 3 | rm -rf src/ | 0:00:17 | 0:00:39 |
:---+-------------------------+----------+----------:
| 4 | tar -xJf src.txz | 0:07:26 | 0:51:25 |
:---+-------------------------+----------+----------:
| 5 | fetch ports.txz (220Mb) | 0:00:24 | 0:00:57 |
:---+-------------------------+----------+----------:
| 6 | tar -xJf ports.txz | 0:10:03 | 1:47:17 |
'---'-------------------------'----------'----------'
Статистика по архивам (скрипт подсчёта):
.-------------------------.-----------.-----------.
| Показатель | src.txz | ports.txz |
:-------------------------+-----------+-----------:
| Обычных файлов | 124960 | 295333 |
| Директорий | 7042 | 36725 |
| Прочих типов файлов | 0 | 0 |
:-------------------------+-----------+-----------:
| Размер <1кб | 27335 | 235632 |
| Размер 1-10кб | 75354 | 89000 |
| Размер 10-100кб | 26991 | 6157 |
| Размер 100-1024кб | 2225 | 1135 |
| Размер >=1024кб | 97 | 134 |
'-------------------------'-----------'-----------'
Параметры rbd:
rbd image 'vm-108-disk-1':
size 32768 MB in 8192 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.14082ae8944a
format: 2
features: layering
Состояние ceph-кластера:
# ...после теста 3
cluster fc4c3641-892b-4bcb-94a3-8447e831a904
health HEALTH_OK
monmap e2: 2 mons at {node2=192.168.7.5:6789/0,node3=192.168.7.6:6789/0}, election epoch 4, quorum 0,1 node2,node3
osdmap e29: 3 osds: 3 up, 3 in
pgmap v803: 392 pgs, 4 pools, 1466 MB data, 425 objects
6113 MB used, 1144 GB / 1150 GB avail
392 active+clean
# ...после теста 4
cluster fc4c3641-892b-4bcb-94a3-8447e831a904
health HEALTH_OK
monmap e2: 2 mons at {node2=192.168.7.5:6789/0,node3=192.168.7.6:6789/0}, election epoch 4, quorum 0,1 node2,node3
osdmap e29: 3 osds: 3 up, 3 in
pgmap v5706: 392 pgs, 4 pools, 16984 MB data, 4289 objects
36924 MB used, 1114 GB / 1150 GB avail
392 active+clean
# ...после всех тестов и удаления rbd
cluster fc4c3641-892b-4bcb-94a3-8447e831a904
health HEALTH_OK
monmap e2: 2 mons at {node2=192.168.7.5:6789/0,node3=192.168.7.6:6789/0}, election epoch 4, quorum 0,1 node2,node3
osdmap e29: 3 osds: 3 up, 3 in
pgmap v10514: 392 pgs, 4 pools, 8 bytes data, 1 objects
3209 MB used, 1147 GB / 1150 GB avail
392 active+clean
Состояние sheepdog после всех тестов:
Cluster status: running, auto-recovery enabled
Cluster store: plain with 2 redundancy policy
Cluster vnode mode: node
Cluster created at Wed Feb 1 23:20:29 2017
Epoch Time Version
2017-02-26 14:33:19 11 [192.168.7.4:7000, 192.168.7.5:7000, 192.168.7.6:7000]
Замеры потребления ресурсов, в мб (ps -o rss,vsz,cmd ax | grep cmd).
.-------------------------.-----------.-----------.-----------.
| Показатель | node1 | node2 | node3 |
:-------------------------+-----------+-----------+-----------:
| после 4 теста |
:-------------------------+-----------+-----------+-----------:
| ceph / osd | 139 / 753 | 124 / 748 | 139 / 764 |
| ceph / mon | --- / --- | 151 / 339 | 70 / 245 |
| sheepdog | 10 / 617 | 18 /1825 | 12 / 724 |
:-------------------------+-----------+-----------+-----------:
| после всех тестов |
:-------------------------+-----------+-----------+-----------:
| ceph / osd | 141 / 755 | 124 / 747 | 138 / 763 |
| ceph / mon | --- / --- | 193 / 384 | 86 / 261 |
| sheepdog | 10 / 617 | 18 /1796 | 12 / 706 |
'-------------------------'-----------'-----------'-----------'
Примечание: на sheepdog'е во время теста висели ещё виртуалки (в замороженном состоянии). Кроме того, нетрудно заметить, что тестируемая виртуалка располагалась на второй ноде. На первой ноде монитора ceph'а не было, на второй он был основным, третьей - резервным.
Выводы
Однако, на мелких файлах рвёт как тузик грелку. Используйте на свой страх и риск, решение всё ещё нестабильно. Все данные потерять - это врятли, а вот побить в процессе recovery - это запросто.