Цель тестов - выбрать самый быстрый на чтение софтовый raid с возможностью восстановления данных в случае выхода из строя одного из 5 дисков. С этих дисков планируется раздавать картинки nginx-ом.
# raidtest test -d /dev/raid3/g3 -n 10 Read 50000 requests from raidtest.data. Number of READ requests: 50000. Number of WRITE requests: 0. Number of bytes to transmit: 3316146176. Number of processes: 10. Bytes per second: 9303561 Requests per second: 140
graid3 с включённым round-robin reading.
# raidtest test -d /dev/raid3/g3 -n 10 Read 50000 requests from raidtest.data. Number of READ requests: 50000. Number of WRITE requests: 0. Number of bytes to transmit: 3316146176. Number of processes: 10. Bytes per second: 11398078 Requests per second: 171
graid5.
# raidtest test -d /dev/raid5/g5 -n 10 Read 50000 requests from raidtest.data. Number of READ requests: 50000. Number of WRITE requests: 0. Number of bytes to transmit: 3284773376. Number of processes: 10. Bytes per second: 19700939 Requests per second: 299
# raidtest test -d /dev/zvol/tank/vol -n 10 -w Read 50000 requests from raidtest.data. Number of READ requests: 0. Number of WRITE requests: 50000. Number of bytes to transmit: 3281546240. Number of processes: 10. Bytes per second: 120195634 Requests per second: 1831 # zpool export tank # zpool import tank # raidtest test -d /dev/zvol/tank/vol -n 10 -r Read 50000 requests from raidtest.data. Number of READ requests: 50000. Number of WRITE requests: 0. Number of bytes to transmit: 3281546240. Number of processes: 10. Bytes per second: 69264127 Requests per second: 1055 # raidtest test -d /dev/zvol/tank/vol -n 10 -r Read 50000 requests from raidtest.data. Number of READ requests: 50000. Number of WRITE requests: 0. Number of bytes to transmit: 3281546240. Number of processes: 10. Bytes per second: 659851727 Requests per second: 10053
раздел одного диска.
# raidtest test -d /dev/ad4s1h -n 10 Read 50000 requests from raidtest.data. Number of READ requests: 50000. Number of WRITE requests: 0. Number of bytes to transmit: 3290731520. Number of processes: 10. Bytes per second: 9067004 Requests per second: 137
dd:
raidz.
# dd if=/dev/zero of=/opt/22 bs=8M count=1000 1000+0 records in 1000+0 records out 8388608000 bytes transferred in 66.627487 secs (125903112 bytes/sec) # dd of=/dev/null if=/opt/22 bs=8M count=1000 1000+0 records in 1000+0 records out 8388608000 bytes transferred in 34.686560 secs (241840297 bytes/sec)
graid3 с включённым round-robin reading.
# dd if=/dev/zero of=/opt2/22 bs=8M count=1000 1000+0 records in 1000+0 records out 8388608000 bytes transferred in 54.425021 secs (154131461 bytes/sec) # dd of=/dev/null if=/opt2/22 bs=8M count=1000 1000+0 records in 1000+0 records out 8388608000 bytes transferred in 64.300645 secs (130459158 bytes/sec)
graid5.
# dd if=/dev/zero of=/opt3/22 bs=8M count=1000 1000+0 records in 1000+0 records out 8388608000 bytes transferred in 138.592430 secs (60527173 bytes/sec) # dd of=/dev/null if=/opt3/22 bs=8M count=1000 1000+0 records in 1000+0 records out 8388608000 bytes transferred in 64.681915 secs (129690162 bytes/sec)
обычный диск.
# dd if=/dev/zero of=/home/22 bs=8M count=1000 1000+0 records in 1000+0 records out 8388608000 bytes transferred in 148.426179 secs (56517038 bytes/sec) # dd of=/dev/null if=/home/22 bs=8M count=1000 1000+0 records in 1000+0 records out 8388608000 bytes transferred in 103.032438 secs (81417155 bytes/sec)
Выводы
graid3 без включённого round-robin reading читает только с четырёх дисков. А диск с данными о чётности не используется и простаивает.
graid5 оказался быстрее graid3 с round-robin reading видимо из-за того, что gcache не всегда получается эффективно работать на случайном чтении и всё равно выходит много чтений мелких блоков по 512 байт. А graid5 читает по 64kb и потому быстрее.
Довольно странные результаты показал raidz. Он оказался быстрее всех, хотя должен был оказаться медленее всех.
Сброс кэша, как рекомендовал Pawel Jakub Dawidek ( http://lists.freebsd.org/pipermail/freebsd-geom/2007-September/002595.html ), dидимо не позволяет полностью избавиться от кэширования и приводит к тому, что скорость чтения с raidz, состоящего из 5 дисков, в 7.7 раз превосходит скорость чтения с одного диска. А при повторном запуске теста эта скорость увеличивается ещё в 10 раз!
а также: Дмитрию Морозовскому за помощь c gcache Максиму Дунину http://mdounin.ru/ за умные мысли Pawel Jakub Dawidek http://www.wheel.pl/ за помощь в тестирование ZFS
и фирме Kraftway, за предоставленный на тестирование сервер.
Думаю, что тут засада не только и не столько в ZFS, сколько в реализации ZFS на FreeBSD. У меня на машинке на одном ZFS'ном томе стоят Солярис и FreeBSD. Так вот, FreeBSD работает ощутимо медленнее, хотя параметры я подбирал настолько тщательно, насколько это вообще возможно (в противном случае FreeBSD падает в панику при операциях на неимоверном количестве инодов, например, при "cvs update" на /usr/ports), а Солярис не tweak'ал совсем (не умею пока . Скажем так, распаковка установленного Соляриса (это 5,5 гигабайта в .tar.gz) на UFS и ZFS идёт примерно одинаковое время. За FreeBSD такого сказать, прямо скажем, нельзя. ;)
Не знаю. Оно с журналом не бьётся просто. Поэтому и чекаться ему не надо.
Ну и основная идея zfs - проверка целостности данных - что
зеркалами не обеспечивается.
ZFS пытается сохранить диски на сыплющихся дисках. Но если диск начинает сыпаться, то это видно в смарте. Поэтому если смарт показывает скорый каюк диска, его следует заменить и восстановить зеркало. Данные на других дисках зеркала будут нормальными и данные не потеряются.
P.S. Основной идеи у ZFS нету. Их несколько. Но по сути это навороченный вариант RAID 3 с несколькими приятными для админов рюшечками.
If you would like to report an abuse of our service, such as a spam message, please . Если Вы хотите пожаловаться на содержимое этой страницы, пожалуйста .