Сравнение производительности файловых систем установленных поверх DRBD
Tuesday, February 9, 2010 12:22:44 PM
При внедрение в инфраструктуру предприятия кластеров высокой готовности часто используется DRDB как более бюджетная замена сетевому файловому хранилищу. Выбор файловой системы которая будет установлена зависит не только от цели и способов использование DRBD, но и от надежности и производительности файловой системы.
Было проведено небольшое исследование на котором протестировалась производительность классической файловой системы EXT3 установленной поверх DRBD и кластерных файловых системы OCFS2 и GFS2 для одновременной работой с диском.
Было проведено небольшое исследование на котором протестировалась производительность классической файловой системы 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.







