Назад | Перейти на главную страницу

RAID0 (как аппаратный, так и md) медленнее LVM?

Я провожу сравнительный анализ узлов, пока мы строим распределенную файловую систему. Поскольку файлы будут распространяться и реплицироваться на многих узлах, мы используем raid0 на самих узлах. Однако я получаю некоторые странные показатели производительности, и мне любопытно, может ли сообщество StackOverflow помочь выяснить, почему. Я использую fio в качестве инструмента для тестирования; обратите внимание, что версия 1.38 у меня не работала, и мне нужно было использовать версию 1.59 или 1.60.

Вот мой файл конфигурации fio:

[global]
directory=/mnt/gluster
lockfile=readwrite
ioengine=libaio
iodepth=8
rw=randrw
nrfiles=200
openfiles=30
runtime=900

[file]
filesize=16-8k/8M-512M
size=1GiB

Для raid0 с использованием программного рейда я получил следующие результаты (переход к основам):

  read : io=285240KB, bw=324535 B/s, iops=79 , runt=900011msec
  write: io=283532KB, bw=322592 B/s, iops=78 , runt=900011msec

На raid1 с использованием программного рейда я получил следующие результаты:

  read : io=683808KB, bw=778021 B/s, iops=189 , runt=900000msec
  write: io=488184KB, bw=628122 B/s, iops=153 , runt=795864msec

Производительность одного диска по-прежнему превосходит производительность raid0:

  read : io=546848KB, bw=622179 B/s, iops=151 , runt=900018msec
  write: io=486736KB, bw=591126 B/s, iops=144 , runt=843166msec

LVM, распределенный по четырем дискам с размером 4 КБ:

  read : io=727036KB, bw=827198 B/s, iops=201 , runt=900007msec
  write: io=489424KB, bw=604693 B/s, iops=147 , runt=828800msec

Аппаратный RAID0 (HighPoint RocketRaid 2470)

  read : io=326884KB, bw=371918 B/s, iops=90 , runt=900008msec
  write: io=328824KB, bw=374125 B/s, iops=91 , runt=900008msec

Обратите внимание, что первые четыре результата выше работают только на контроллерах SATA материнской платы. Однако я воспроизвел результаты с программным RAID после перехода на карту RocketRaid. Это диски SATA емкостью 1 ТБ. Запуск многопоточных тестов дал примерно такие же результаты. Есть ли причина, по которой RAID0 будет работать так медленно? Я думал, что он обеспечит производительность при произвольном вводе-выводе, превосходящую производительность одного диска или RAID1.


Последующие действия: основываясь на некоторых предложениях Джо из Scalable Informatics (хороший парень, купите его вещи!), Я изменил свой тест, чтобы использовать более глубокую очередь и более случайный размер блока.

[global]
directory=/mnt/glusterfs
lockfile=readwrite
ioengine=libaio
iodepth=32
rw=randrw
numjobs=8

[file]
filesize=16-8k/8M-512M
blocksize_range=64k-1M
size=1GiB
nrfiles=50
openfiles=8
runtime=900

И в итоге карта HighPoint RocketRaid 2740 - отстой.

Производительность при подключении к карте RocketRaid была ниже по всем направлениям.

Я собираюсь оставить этот вопрос открытым - мы получим новый набор RAID-карт в течение следующей недели или двух для тестирования, и я все еще ищу советы по оптимизации, чтобы получить больше, чем производительность одного диска. , на который, похоже, не было дано полного ответа.

Вы можете столкнуться с проблемой с размером полосы, когда записываемые или читаемые данные относятся к одному диску - см. программное обеспечение RAID как для подробностей. Вы можете проверить, так ли это, посмотрев на вывод iostat.

Если вы хотите проверить производительность линейного доступа, попробуйте использовать «hdparm -t» или dd для тестирования - это должно показать показатели производительности, которые примерно вдвое превышают производительность одного диска.

Я думал, что он обеспечит производительность при произвольном вводе-выводе, превосходящую производительность одного диска или RAID1.

Нет, если блоки, которые вы ищите случайным образом, больше, чем размер полосы, то скорость должна быть примерно равна скорости одного диска. Что до сих пор не объясняет ваших результатов, которые хуже, чем один диск.

Из википедия.

Для операций чтения и записи, размер которых превышает размер полосы, например, при копировании файлов или воспроизведении видео, диски будут искать одну и ту же позицию на каждом диске, поэтому время поиска для массива будет таким же, как и для одного диска. Для операций чтения и записи, размер которых меньше размера полосы, например, для доступа к базе данных, диски смогут выполнять поиск независимо.