Alex 'AdUser' Z
8 years ago
4 changed files with 216 additions and 1 deletions
@ -0,0 +1,18 @@ |
|||||||
|
[global] |
||||||
|
auth client required = cephx |
||||||
|
auth cluster required = cephx |
||||||
|
auth service required = cephx |
||||||
|
auth supported = cephx |
||||||
|
cluster network = 192.168.7.0/24 |
||||||
|
public network = 192.168.7.0/24 |
||||||
|
filestore xattr use omap = true |
||||||
|
fsid = 4c8be4e5-a8c8-498e-ab13-21be5319accb |
||||||
|
keyring = /etc/pve/priv/$cluster.admin.keyring |
||||||
|
osd journal size = 1024 |
||||||
|
osd pool default min size = 1 |
||||||
|
osd pool default size = 2 |
||||||
|
osd pool default pg num = 333 |
||||||
|
osd pool default pgp num = 333 |
||||||
|
osd crush chooseleaf type = 1 |
||||||
|
mon initial members = node2 |
||||||
|
mon host = 192.168.7.5:6789 |
@ -0,0 +1,56 @@ |
|||||||
|
#!/usr/bin/env perl |
||||||
|
|
||||||
|
use strict; |
||||||
|
use warnings; |
||||||
|
|
||||||
|
use File::Find; |
||||||
|
use Fcntl ':mode'; |
||||||
|
|
||||||
|
my $tstat = { file => 0, dir => 0, other => 0 }; |
||||||
|
my $sstat = {}; |
||||||
|
my ($mode, $size, $slot); |
||||||
|
|
||||||
|
sub handler { |
||||||
|
($mode, $size) = (stat $_)[2,7]; |
||||||
|
|
||||||
|
if (S_ISDIR($mode)) { $tstat->{dir}++ } |
||||||
|
elsif (S_ISREG($mode)) { $tstat->{file}++ } |
||||||
|
else { $tstat->{other}++ } |
||||||
|
|
||||||
|
if ($size >= (1024 ** 2)) { |
||||||
|
$sstat->{'>1024k'}++; |
||||||
|
return; |
||||||
|
} |
||||||
|
if ($size >= 1024 * 100) { |
||||||
|
$sstat->{'100k - 1024k'}++; |
||||||
|
return; |
||||||
|
} |
||||||
|
if ($size >= (1024 * 10)) { |
||||||
|
$sstat->{'10k - 100k'}++; |
||||||
|
return; |
||||||
|
} |
||||||
|
if ($size >= 1024) { |
||||||
|
$sstat->{'1k - 10k'}++; |
||||||
|
return; |
||||||
|
} |
||||||
|
if ($size < 1024) { |
||||||
|
$sstat->{'0k - 1k'}++; |
||||||
|
return; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
File::Find::find({wanted => \&handler}, 'ports/'); |
||||||
|
|
||||||
|
print "Stats for file types\n"; |
||||||
|
print "--------------------\n"; |
||||||
|
foreach my $key (sort keys %{ $tstat }) { |
||||||
|
printf " %7d | %s\n", $tstat->{$key}, $key; |
||||||
|
} |
||||||
|
|
||||||
|
print "Stats for file sizes\n"; |
||||||
|
print "--------------------\n"; |
||||||
|
foreach my $key (sort keys %{ $sstat }) { |
||||||
|
printf " %7d | %s\n", $sstat->{$key}, $key; |
||||||
|
} |
||||||
|
|
||||||
|
exit 0; |
@ -0,0 +1,141 @@ |
|||||||
|
--- |
||||||
|
title: Сравнение производительности Sheepdog/Ceph |
||||||
|
tags: software, sheepdog, ceph, репост |
||||||
|
--- |
||||||
|
|
||||||
|
Выкладываю данные по тестированию производительности ceph и sheepdog. |
||||||
|
|
||||||
|
Тестовый стенд: 3 почти одинаковых сервера с двумя дисками по 500Гб. |
||||||
|
С каждого диска в конце откушено по 450Гб под данные и отдано под разные системы. |
||||||
|
В качестве хранилища чанков используется ext4 (sheepdog) и xfs (ceph). |
||||||
|
Тип объекта - реплиируемый, количество копий и там и там выставлено в 2. |
||||||
|
chunk size везде равен 4мб. |
||||||
|
|
||||||
|
--- |
||||||
|
|
||||||
|
[Конфиг](ceph.conf) кластера 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 | |
||||||
|
'---'-------------------------'----------'----------' |
||||||
|
|
||||||
|
Статистика по архивам ([скрипт подсчёта](fs-stat.pl)): |
||||||
|
|
||||||
|
.-------------------------.-----------.-----------. |
||||||
|
| Показатель | 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 - это запросто. |
Loading…
Reference in new issue