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