Tips & Triks

не ломается у того, кто ничего не делает...

Сравнение производительности файловых систем установленных поверх DRBD

, , ,

При внедрение в инфраструктуру предприятия кластеров высокой готовности часто используется DRDB как более бюджетная замена сетевому файловому хранилищу. Выбор файловой системы которая будет установлена зависит не только от цели и способов использование DRBD, но и от надежности и производительности файловой системы.

Было проведено небольшое исследование на котором протестировалась производительность классической файловой системы EXT3 установленной поверх DRBD и кластерных файловых системы OCFS2 и GFS2 для одновременной работой с диском.

Железо выглядит так:
node1
ASUS P5Q DELUX, C2Duo E8400, RAM 4Gb, HDD 120Gb, HDD 2x80Gb(ST380811AS)
node2
ASUS PSCH-L, P4 3Gz, RAM 2Gb, HDD 2x250(ST3250823AS)

ОС Debian linux 5.0.3

На node1 два диска по 80Gb были объединины в raid1 и разбиты на два равных раздела.
node1:~# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sdc2[0] sdb2[1]
      39078016 blocks [2/2] [UU]

md0 : active raid1 sdc1[0] sdb1[1]
      39069952 blocks [2/2] [UU]

unused devices: <none>

На node2 один раздел диска был объединен в raid1.
node2:~# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb3[0] sda3[1]
      44885504 blocks [2/2] [UU]

unused devices: <none>


I. Сначала просто измерим скорость чтения с помощью hdparm
/dev/sda системный раздел c файловой системой EXT3 без raid
/dev/md0 раздел raid1 c файловой системой EXT3
/dev/drbd0 физический раздел /dev/md1 расположен на raid1 с файловой системой EXT3

hdparm -t
/dev/sda:
Timing buffered disk reads: 178 MB in 3.03 seconds = 58.81 MB/sec
/dev/md0
Timing buffered disk reads: 212 MB in 3.01 seconds = 70.53 MB/sec
/dev/drbd0
Timing buffered disk reads: 184 MB in 3.01 seconds = 61.19 MB/sec

hdparm -T
/dev/sda:
Timing cached reads: 13816 MB in 2.00 seconds = 6915.97 MB/sec
/dev/md0:
Timing cached reads: 12958 MB in 2.00 seconds = 6492.18 MB/sec
/dev/drbd0:
Timing cached reads: 12496 MB in 2.00 seconds = 6259.88 MB/sec


II. Скорость чтения 1Gb с помощью dd

time -p dd if=/dev/dev of=/dev/null bs=2k count=524288
/dev/sda
1073741824 bytes (1.1 GB) copied, 17.4365 s, 61.6 MB/s
/dev/md0
1073741824 bytes (1.1 GB) copied, 14.1531 s, 75.9 MB/s
/dev/drbd0
1073741824 bytes (1.1 GB) copied, 16.8901 s, 63.6 MB/s

III. Теперь используя утилиту bonnie++ протестируем производительность ext3 на raid1 без DRBD.


#mount
/dev/md0 on /mnt/md type ext3 (rw)
#bonnie++ -q -f -x 5 -u 0 -m node1 -s 8G:64K -d /mnt/md/


Version  1.03d      ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
node1        8G:64k           53308  10 31102   4           67349   4 235.2   1
node1        8G:64k           52797   9 27621   3           66397   4 237.8   1
node1        8G:64k           53021   9 27459   3           66688   4 228.7   1
node1        8G:64k           52749   9 27905   3           67016   4 219.7   1
node1        8G:64k           53065   9 27744   3           66700   4 232.8   1
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files:max:min        /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
node1            16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
node1            16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
node1            16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
node1            16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
node1            16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++

IV. Теперь протестируем производительность ext3 на raid1 поверх DRBD.

DRBD + EXT3


#mount
/dev/drbd0 on /mnt/drbd type ext3 (rw)
#bonnie++ -q -f -x 5 -u 0 -m node1 -s 8G:64K -d /mnt/drbd/

Version  1.03d      ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
node1        8G:64k           34442   5 23164   3           58223   4 249.1   1
node1        8G:64k           33880   5 22391   2           58825   4 247.1   1
node1        8G:64k           33997   5 22358   3           59023   4 245.7   1
node1        8G:64k           34216   5 22352   2           58992   4 242.9   1
node1        8G:64k           34234   5 22520   3           58297   4 248.7   1
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files:max:min        /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
node1            16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
node1            16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
node1            16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
node1            16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++
node1            16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++


V. Классическую файловую систему поверх DRBD попробовали теперь попробуем и кластерную,
посмотрим как изменятся результаты. В качестве кластерных были выбраны OCFS2 и GFS2, из-за того
что они обе присутствуют в ядре и без труда ставятся.

DRBD + GFS2

#gfs2_mkfs -t cluster:mygfs2 -p lock_dlm -j 2 /dev/drbd0

Device:                    /dev/drbd0
Blocksize:                 4096
Device Size                37.27 GB (9769196 blocks)
Filesystem Size:           37.27 GB (9769194 blocks)
Journals:                  2
Resource Groups:           150
Locking Protocol:          "lock_dlm"
Lock Table:                "cluster:mygfs2"


node2:/mnt/drbd# cman_tool nodes
Node  Sts   Inc   Joined               Name
   1   M     36   2010-02-05 08:26:31  node1
   2   M     32   2010-02-05 08:26:31  node2
cma

node2:/mnt/drbd# cman_tool status
Version: 6.1.0
Config Version: 1
Cluster Name: cluster
Cluster Id: 13364
Cluster Member: Yes
Cluster Generation: 36
Membership state: Cluster-Member
Nodes: 2
Expected votes: 1
Total votes: 2
Node votes: 1
Quorum: 1
Active subsystems: 7
Flags: 2node Dirty
Ports Bound: 0
Node name: node2
Node ID: 2
Multicast addresses: 239.192.52.104
Node addresses: 172.16.0.2


Простые тесты

node1#hdparm -t /dev/drbd0
/dev/drbd0:
Timing buffered disk reads: 184 MB in 3.02 seconds = 61.03 MB/sec
node1#hdparm -T /dev/drbd0
/dev/drbd0:
Timing cached reads: 13078 MB in 2.00 seconds = 6552.30 MB/sec

node1#time -p dd if=/dev/drbd0 of=/dev/null bs=2k count=524288
1073741824 bytes (1.1 GB) copied, 17.0031 s, 63.1 MB/s

Тестируем с помощью bonnie++


#bonnie++ -q -f -x 5 -u 0 -m node1 -s 8G:64K -d /mnt/drbd/


[CODE]Version  1.03d      ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
node1        8G:64k           26417   6 13356   2           48824   3 189.2   1
node1        8G:64k           12677   2 10886   2           42393   3 184.2   1
node1        8G:64k           13556   3 11941   2           49553   4 149.7   1
node1        8G:64k           26736   6 19332   4           56666   4 193.9   1
node1        8G:64k           25903   6 18377   4           52048   4 189.5   1
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files:max:min        /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
node1            16   748   6 +++++ +++ 32035  78   717  10 +++++ +++  3679   9
node1            16   859   7 +++++ +++  3585   9   716   9 +++++ +++ 22519  55
node1            16  1795  14 +++++ +++ 24486  59  1716  26 +++++ +++ 24266  63
node1            16  1867  15 +++++ +++ 22261  50  1566  24 +++++ +++ 11010  27
node1            16  1818  15 16456  10 26749  65  1342  21 +++++ +++ 29059  71



DRBD + OCFS2

hdparm -t /dev/drbd0
/dev/drbd0:
Timing buffered disk reads: 168 MB in 3.01 seconds = 55.82 MB/sec
hdparm -T /dev/drbd0
/dev/drbd0:
Timing cached reads: 12626 MB in 2.00 seconds = 6325.61 MB/sec


time -p dd if=/dev/drbd0 of=/dev/null bs=2k count=524288
1073741824 bytes (1.1 GB) copied, 17.8617 s, 60.1 MB/s

Отчет bonnie++ о тестирование ocfs поверх drbd
Version  1.03d      ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
node1        8G:64k           15290   2 14433   2           52328   3 265.8   1
node1        8G:64k           13313   1 14326   2           50984   3 256.3   1
node1        8G:64k           14583   1 14193   2           50012   3 252.5   1
node1        8G:64k           14493   1 13960   2           48318   3 242.3   1
node1        8G:64k           13351   1 14008   2           49008   3 249.9   1
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files:max:min        /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
node1            16   570  21 +++++ +++  3894  10   528  19 +++++ +++  5639  43
node1            16   492  18 +++++ +++  3968  10  1106  37 +++++ +++  3237  24
node1            16   603  22 +++++ +++  3965  11   652  23 +++++ +++  3326  24
node1            16   602  23 +++++ +++  3961  11   786  26 +++++ +++  4362  32
node1            16   605  22 +++++ +++  3995  11   656  23 +++++ +++  3350  23


VI. Выводы. Если одновременный доступ на запись нескольких клиентов не требуется
то поверх DRBD лучше все же использовать EXT3. Если все таки использовать кластерную фс
то выбор не слишком очевиден. Субъективно OCFS2 мне показалось тормознее при копирование
на него файлов как локально так и по сети, особенно локальное, скорость копирование была
рывками, как будто некий буфер наполнялся и пока он не скидывался, копирование прекращалось.
Так же обе кластерные файловые системы не подходят для использования на них OpenVZ контейнеров
из-за невозможности работы по верх их vzquote.

Памятка add new host to kerberos domainJabber + GSSAPI + LDAP

Write a comment

New comments have been disabled for this post.

June 2012
M T W T F S S
May 2012July 2012
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30