|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Cherepanov Leonid 2:5020/400 02 Jun 2005 23:31:02 To : All Subject : vinum RAID5. Снова --------------------------------------------------------------------------------
День добрый. Сразу прошу прощения за огромное послание.
Получил в руки побаловаться кучку винчестеров.
И масса вопросов возникла.
По железу.
Читал я читал, но так и не понял ситуацию с SATA-II
Вроде бы как все прелести NCQ зашиты в железе (т.е. надо только SATA-II
HDD & SATA-II controller), но дрова специальные под ОСи идут. Под
эхотаг, правда, нет. И в hardware ничего не сказано. И определяется это
хозяйство в системе как SATA 1.0 Т.е. нет мне плюсов от новой технологии?
Hу и вторая вещь. Кучу дисков, конечно, надо класть в раид. С дисками у
нас сейчас принято через geom работать. Есть 3 полезные утилитки
gstripe, gmirror & graid3 . Чем занимаются - понятно из названий :)
Подгружают свои модули, на лету умеют ребилдить зеркало и 3-й раид. Hо
вроде как RAID3 рекомендуют для малопотоковых (по количеству) длинных
операций (типа редактирования видео на рабочей станции). А это на
файл-сервер совсем не похоже. Т.е. надо всё-таки RAID5. А graid5 нет :)
Hу хорошо, делаем через gvinum. Он сейчас в сугубо спартанском
состоянии. Половину команд не реализовали, только самое необходимое. Hу
да ладно, главное, что работает :) Hо вот стал я скорость измерять - и
очень странные и печальные получил результаты.
Как там что надо по уму делать, к сожалению, не знаю (подскажите,
погоняю по правильной методе). Измерял простой дд-дой.
Машина Р4, памяти 1 гиг. Вот результаты (оставил и команды для работы с
раидами, вдруг кому пригодится?..)
Диски просто как есть
# dd if=/dev/zero of=/mnt/test bs=1M count=2k
2147483648 bytes transferred in 35.026275 secs (61310649 bytes/sec)
# dd of=/dev/zero if=/mnt/test bs=1M count=2k
2147483648 bytes transferred in 34.360461 secs (62498686 bytes/sec)
Так вроде даже нормально.
Берём страйп
# gstripe label -s 65536 data /dev/ad12s1 /dev/ad14s1
# newfs /dev/stripe/data
# mount /dev/stripe/data /mnt
# dd if=/dev/zero of=/mnt/test bs=1M count=3K
3221225472 bytes transferred in 33.296539 secs (96743552 bytes/sec)
# dd of=/dev/zero if=/mnt/test bs=1M count=3K
3221225472 bytes transferred in 46.423276 secs (69388155 bytes/sec)
Т.е. читаем почти в полтора раза медленнее, чем пишем! КАК?!
Если брать зеркало
# gmirror label data /dev/ad12s1 /dev/ad14s1
# newfs /dev/mirror/data
# mount /dev/mirror/data /mnt
# dd if=/dev/zero of=/mnt/test bs=1M count=3K
3221225472 bytes transferred in 63.202142 secs (50967030 bytes/sec)
# dd of=/dev/zero if=/mnt/test bs=1M count=3K
3221225472 bytes transferred in 60.727050 secs (53044327 bytes/sec)
Т.е. читаем и пишем примерно одинаково! И читаем медленнее, чем с одного
диска.
RAID10
gmirror label mirr0 ad10 ad12
gmirror label mirr1 ad14 ad16
gstripe label stripe /dev/mirror/mirr0 /dev/mirror/mirr1
(Лёгкое отступление. Можно, в принципе, делать наоборот: сначала диски
страйпить, а потом зеркалировать страйпы. Hо при выходе одного
физического диска развалится его страйп, и вся работа будет вестись со
вторым страйпом. Т.е. при выходе из строя 1 диска данные не теряются, но
работа ведётся не на оставшихся 3-х, а на 2-х дисках)
# dd if=/dev/zero of=/raid10/test bs=1M count=2k
2147483648 bytes transferred in 62.494281 secs (34362883 bytes/sec)
# dd of=/dev/zero if=/raid10/test bs=1M count=2k
2147483648 bytes transferred in 33.836740 secs (63466033 bytes/sec)
Hу вот, запись ещё хуже стала...
RAID3
graid3 label raid3 ad12 ad14 ad10
# dd if=/dev/zero of=/raid3/test bs=1M count=2k
2147483648 bytes transferred in 31.571675 secs (68019314 bytes/sec)
# dd of=/dev/zero if=/raid3/test bs=1M count=2k
1889533952 bytes transferred in 26.056687 secs (72516277 bytes/sec)
Красиво, ничего не скажешь! Вот как раз однопотоковая длинная "сессия"
И наконец
RAID5
gvinum create /etc/vinum.conf
vinum.conf:
drive d1 device /dev/ad10
drive d2 device /dev/ad12
drive d3 device /dev/ad14
drive d4 device /dev/ad16
volume data
plex org raid5 345k
sd length 0 drive d1
sd length 0 drive d2
sd length 0 drive d3
sd length 0 drive d4
# dd if=/dev/zero of=/data/test bs=1M count=2k
2147483648 bytes transferred in 152.575936 secs (14074852 bytes/sec)
# dd of=/dev/zero if=/data/test bs=1M count=2k
потерял, пардон :( Около 45М/с было
Т.е. RAID5 получился хуже всех!
Hо и это ещё не всё.
Пока винты шуршали, я поглядывал "systat -vm 1" на загрузку винтов. И во
всех, практически, случаях мог оценить заранее цифирки дд. Скажем, для
зеркала показывает около 50М/с на диск. Hу так я и знаю, что столько и
получу (и получал). Со страйпом показывает около 50 на диск, так я и
знаю, что итого получу 100 (и получаю). И с RAID3 такая же ситуация. А
вот с RAID5 не так. systat показывает около 14М/с на диск (каждый из
4-х), и итоговый трансфер около 14 (а не 3*14). Я такого не понимаю. И
ведь действительно медленно пишет, реально секунд много проходит :)
Изменение блока в широких пределах не влияет сильно на картину (345К у
меня получился одним из лучших). Более того, раид на 7-ми дисках даёт ту
же производительность (что по чтению, что по записи).
Hу вот. Только руками развести и могу. Кто-нибудь может что-то толковое
сказать? :)
Заранее весьма признателен.
--- ifmail v.2.15dev5.3
* Origin: A well-installed InterNetNews site (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/7782123b5668.html, оценка из 5, голосов 10
|