Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Администрирование *NIX систем > [FreeBSD]software-RAID: gmirror


Автор: skyboy 10.8.2007, 09:35
есть комп. не серверный совсем(smile), обычная "настольная" система(чесно говоря, конфигурацию точно не знаю, известно только, что Pentium IV в области 2-2,5 ГГц, что говорит об уровне остальных комплектующих). При этом на этом компьюетре под управлением FreeBSD крутится система, данные которой терять было бы довольно-таки неприятно. 
Для резервирования(система работает в режиме реального времени - данные обновляются гораздо чаще раза в секунду), как я вижу, надо нечто быстрее и "низкоуровневее" dump'a. Вижу два решения(оба - на основе http://ru.wikipedia.org/wiki/RAID):
1. Hardware-based RAID. Контроллер на RAID1 стоит не очень дорого(как выяснил: от 160 у.е.), но хотелось бы RAID5(который стоит от 400 у.е. - на такие расходы пойти не могут).
2. Software-based RAID: благодаря механизму http://www.freebsd.org/cgi/man.cgi?query=geom можно реализовать RAID, управление которым будет отдано ОС(что нагрузит процессор, естественно). При помощи gmirror RAID0, gstripe - RAID1 и т.д.(собственно говоря, software-based решений http://people.freebsd.org/~rse/mirror/, но меня интересует пока что gmirror)
-----
А теперь вопрос: кто использовал "soft-RAID", насколько страдает производительность? я пока что знакомлюсь с FreeBSD в виртуальной машине, потому не могу судить адекватно. Вообще, стоит такое(программные механизмы зеркалирования) использовать? или лучше копить на контроллер?

Автор: ZeeLax 10.8.2007, 10:10
При таком финансовом раскладе у софтового контроллера огромный плюс - быстрая замена в случае сбоя. Если у вас накроется железный контроллер, на который ещё и были потрачены с трудом накопленные деньги, то, скорее всего вы не приобретете быстро второй такой (и не факт, что легко найдете его вообще, а с другим ваш массив будет кучей железа). Насчёт загрузки сказать не смогу, т.к. использовал RAID только при небольших нагрузках. Да и про вашу нагрузку тоже пока не много ясно. В принципе, процессоры нынче дешевеют, не в пример железным RAID-контроллером, так что, думаю, выбор тут только один.

Автор: skyboy 10.8.2007, 11:22
ок. а как насчет выбора механизма? за http://www.freebsd.org/cgi/man.cgi?query=gmirror&sektion=8&apropos=0&manpath=FreeBSD+6-current хватаюсь, потому что про него хоть что-то прочитал smile
а как http://www.freebsd.org/cgi/man.cgi?query=ata&sektion=4&apropos=0&manpath=FreeBSD+6-current, http://www.freebsd.org/cgi/man.cgi?query=ccd&sektion=4&apropos=0&manpath=FreeBSD+6-current и http://www.freebsd.org/cgi/man.cgi?query=gvinum&sektion=8&apropos=0&manpath=FreeBSD+6-current? как я понимаю, gmirror и gvinum использоуют один и тот же механизм GEOM, а вот как быть с ccd и ata? 
Что быстрее/функциональнее/надежнее? Впрочем, если сообщите достоинства/недостатки - и сам, пожалуй, выберу  smile 
Цитата(ZeeLax @  10.8.2007,  09:10 Найти цитируемый пост)
Да и про вашу нагрузку тоже пока не много ясно.

Второй день на этом месте. Я раньше FreeBSD даже не видел. А тут ... smile

Автор: skyboy 10.8.2007, 17:06
нашел http://www.onlamp.com/pub/a/bsd/2005/11/10/FreeBSD_Basics.html касательно gmirror. "Зеркало" из одного диска создалось. Но при попытке после перезагрузки подключить второй диск(второй диск точно в наличии и работает - это файл-образ в виртуальной машине) к имеющейся системе получил "cannot access provider /dev/ad1". Как я понимаю, система не воспринимает его именно как GEOM-провайдера. Подключаемый диск такого же размера, как и первый, и не размечен. 
Может быть в этом причина? Я не нашел упоминаний, что диск-зеркало должен быть размечен и надеялся, что система сама возьмет на себя разметку в автоматическом режиме. Зря надеялся?

Автор: Glip 11.8.2007, 13:31
вот еще статья
http://dreamcatcher.ru/index.php?option=com_content&task=view&id=21&Itemid=6
тоже есть желание попробовать, но все руки не доходят

Автор: skyboy 11.8.2007, 14:29
Glip, спасибо. В принципе,этим руководством и пользовался(только на буржуйском smile), вот только посеял идею, а пожал - проблему с подключением. Кстати, не совсем понятно, почему сначала прикрепляется один диск, а уже после перезагрузки добавляется зеркало. Попробовал(правда, из-под LiveCD Frenzy) создать "одним махом". Создалось. Когда сделал gmirror load, то и загрузилось и в /dev появилось /dev/mirror/gm0. И newfs отрабатывает(кстати, может, я зря newfs применил к зеркалу?), а вот mount сообщается: unknown file or filesystem type(вроде, так smile). 
Предпосылки:
  • Платформа - http://fabrice.bellard.free.fr/qemu/
  • OS - http://frenzy.org.ua
  • Диски - два образа, созданные виртуальной системой. Абсолютно неразмечены и девственно чисты
Делаю так(выполняю команды в командной строке по одной):
Код

# Создаю файловую систему
newfs /dev/ad0
newfs /dev/ad1 # на втором диске, который будет зеркалом, надо создавать файловую систему?
# создаю таблицу разделов(по крайней мере, я думаю, что я создаю таблицу разделов; поправьте, если это не так :))
gpt create /dev/ad0
gpt create /dev/ad1
# создаю зеркало(проходит без проблем, так как никто никуда ничего в это время не пишет, в отличие от варианта работы во время установки)
gmirror label -v -b round-robin gm0 /dev/ad0 /dev/ad1
# загружаю зеркало
gmirror load gm0 # здесь мне сообщают, что device gm0: provider/mirror gm0 launched.

после всего означенного в /dev/ появляется /mirror/gm0
Код

mount /dev/mirror/gm0
 
выдает:
Цитата

"Unknown special file or file system"

Попытка 
Код

newfs /dev/mirror/gm0

ничего не дает. Точнее, форматирование проходит успешно, но монтирование так и выдает "unknown ...". Что я пропустил/перепутал?

Автор: skyboy 20.8.2007, 12:31
нашел ещё один механим: http://www.freebsd.org/cgi/man.cgi?query=atacontrol&sektion=8. учитывая, что на целевой машине напрочь отсуствует SATA-контроллер и, соотвественно, SATA-диски(жаль; сильно я рассчитывал на SATA) решил поинтересоваться "горячим" отключением и наткнулся на "atacontrol detach"/"atacontrol attach". А потом подметил "atacontrol create mirror". Сейчас идет ребилд, так что, как мне кажется, эксперимент удался smile
итак. пошагово. в качестве инсутркций больше остального использовал статьи на http://www.opennet.ru: 
[url=http://www.opennet.ru/tips/info/896.shtml]Создание atacontrol RAID1 под FreeBSD на живой системе
[/url]
http://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi?az=show_thread&om=12290&forum=vsluhforumID3&omm=7.
на всякий случай приведу "вытяжкой" собственные действия, которые мало в чем отличаются от описанных в статье.
# ad0 - на ata0 содержит установленную систему
# ad3 на ata1 пуст и девственно чист
Код

atacontrol create mirror ad0 ad3
 - объявляю новый RAID-1 массив
Код

atacontrol detach ata1
 - не совсем понял зачем; инициируя отключение одного диска вызываем переход массива в "тревожный" режим
Код

atacontrol attach ata1
 - подключаем обратно канал с пустым диском; однако, физическое подключение ещё не значит, что диск "вернется" в RAID ar0
# редактируем /etc/fstab, чтоб все, что раньше указывало на "живой" диск(в моем случае - ad0) стало указывать на mirror(у меня - ar0)
Код

reboot
 - перезагружаемся
# во время загрузки смотрим, чтоб RAID запустился без проблем
Код

atacontrol addspare aro ad3
 подключаем к имеющемуся массиву пустой диск
Внимание! На этом этапе я получил ругань "(IOCATARAIDADDSPARE): Device busy". Так и не понял, с чем это должно быть связано(у меня FreeBSD 6.2, так что, возможно, http://kerneltrap.org/node/454 виноват). Проблема решилась после
Код
#atacontrol detach ata1
#atacontrol attach ata1

Далее:
Код

atacontrol rebuild ata1
 - после этого происходит фоновая синхронизация, статус которой можно посмотреть при помощи 
Код

atacontrol status ar0

Вот такие пироги. Надеюсь, процесс на реальном компьютере окажется не сложнее, чем на виртуальной машине smile

Автор: bilbobagginz 20.8.2007, 15:10
насчет железный контроллер версус программный:
железный намного более надежный. лично сам не слышал о случае, что полетел сам контроллер.
программный RAID дешевле, и иногда, на современном железе - достаточно надежный.
думаю все-же  лучше иметь комбинированную систему:
mirror + RAID5.
т.е. каждую пару дисков - в RAID0, и каждый RAID в РАИД5.

это будет побыстрее.

удачи.




Автор: skyboy 20.8.2007, 15:45
Цитата(bilbobagginz @  20.8.2007,  14:10 Найти цитируемый пост)
mirror + RAID5

если RAID-5 - это ты про контроллер, то могу только развести руками: 400 баксов самый простой из тех, что нашел smile
А 30-баксовые RAID1+0 слишком просты и ненадежны, как на меня.
Кроме того, придется докупать НЖМД и два кармана, и, что самое главное, уже на это не знаю, как уговорить начальство. Так что аппаратный контроллер курит в стороне smile))

Добавлено через 5 минут и 32 секунды
Цитата(bilbobagginz @  20.8.2007,  14:10 Найти цитируемый пост)
удачи.

спасибо smile гляжу, удача мне пригодится.
провел эксперимент: после синхронизации отключил один из дисков зеркала(мастер: ata0-Master). Так как работаю в виртуальной машине, то "просто отключить" не могу. Сделал 
Код

atacontrol detach ata0

естественно, мне было сообщено, что RAID разваливается. Но система работать продолжила(как и ожидалось). Это есть гуд. Проблема возникла, когда я захотел подключить диск обратно. 
Код

atacontrol attach ata0

прошел без сучка, без задоринки. Диск обнаружен. Естественно, сам он в RAID не вернется. Делаю руками:
Код

atacontrol addspare ar0 ad0

и получаю
Цитата

(IOCATARAIDADDSPARE): Device busy

Ну, думаю, мы тоже не пальцем деланы. Пробую финт ушами(выше уже указывал на такой прием):
Код

atacontrol detach ata0
atacontrol attach ata0

Но на этот раз финт не помогает :( Получаю все то же "device busy"

Автор: skyboy 20.8.2007, 16:01
с gmirror тоже разобрался - я просто через одно место диск размечал. начиная хотя бы с того, что gpt не надо было делать.
вобщем, собрал массив с использованием gmirror. одна проблема(точнее, две): rebuild дисков система проводила намного дольше(25 минут против 13 для atacontrol) и, что намного важнее, не в фоне(atacontrol работала в фоне и о процессе работы надо было интересоваться "вручную": "atacontrol status ar0"). Т.е. я не мог подключиться к другим виртуальным консолям и к текущей доступа не имел. Правда, не знаю, как вели себя уже запущенные процессы...
Сыммитировал отключение второго диска. При подключении gmirror сразу же кинулся его rebuild'ить, что само по себе не плохо, но вкупе с блокировкой работы и длительностью процесса угнетает. А если я банально не тот диск вставил? Проверить и заменить мне не дают... Нехорошо...

Добавлено через 14 минут и 31 секунду
Судя по всему, после синхронизации массив вполне исправно работает. в отличие от atacontrol'ного подхода :( 
но синхронизация практически одинаковых дисков(сразу после detach сделал attach) происходила ненамного быстрее восстановления "с нуля"(диск на 10 Гб). И это все с блокировкой консоли. Грусно....

Автор: bilbobagginz 22.8.2007, 14:17
Цитата

Кроме того, придется докупать НЖМД и два кармана, и, что самое главное, уже на это не знаю, как уговорить начальство. 

вопрос вообще в том нужно ли вам столько ГБ в этой конфигурации,
ответ - сколько пользователей грузят файловый сервер, сколько нужно ГБ.

если достаточно много, то RAID0+1 просто не выдержит.
а на RAID5 можно нагнать 200-300 MB/s, что не есть плохо.

удачи.


Автор: skyboy 23.8.2007, 09:04
пока пользователь один - программа-монитор, если нужно будет сделать дополнительные подключения, пожалуй, лучше поставлю отдельный сервер приложений(с кешированием и управлением скоростью smile) - нельзя допустить, что сервер БД перезагружался или мог быть заDoSен smile Так что мне нужна не столько производительность, сколько надежность. Но я учту совет  smile 
Единственное замечание: я думал, что RAID-1(даже программный) распараллеливает запросы между двумя устройствами и получается прирост быстродействия... Впрочем, я не замерял.

Автор: bilbobagginz 23.8.2007, 10:19
Цитата

Единственное замечание: я думал, что RAID-1(даже программный) распараллеливает запросы между двумя устройствами и получается прирост быстродействия... Впрочем, я не замерял.

ДА, но не больше чем в 2 раза ( т.е. если диск 50-60 -> 100-110 МБ получишь, но с трудом )


Автор: skyboy 23.8.2007, 11:02
Цитата(bilbobagginz @  23.8.2007,  09:19 Найти цитируемый пост)
ДА, но не больше чем в 2 раза

хехе. мне много не надо, но если говорить гипотетически, то максимальный прирост в скорости соотвествует количеству носителей. у аппаратных контроллеров это ограничено количеством портов, а вот программные решения менее ограниченные. Правда, не пробовал, но думаю, что gmirror-зеркало можно и на N(etwork)FS поднять и будет хоть 300 зеркал smile))) Даже за вычетом накладных расходов все должно просто летать smile Но это так, гипотетически. Заниматься таким я не собираюсь...

Автор: bilbobagginz 23.8.2007, 21:21
Цитата

Заниматься таким я не собираюсь...

вообще-то это самый стандартный способ расшаривания дисков под *NIX.
и у него как раз с масштабированием плохо. 300 не пойдет smile
вот AFS может. и CODA тоже.



Автор: Andrey_Lord 10.9.2007, 21:06
порочная практика некрофилить десктопный комп для важной информации....
вы как думаете какой срок жизни у ваших винтов ? 
а насчет ССD gmirror gvinum  и т.д. мне хватило раза когда у меня развалился массив.
теперь тольок аппаратные 3ware  если сата или что-то посеръезнее если САС.

Автор: skyboy 11.9.2007, 10:18
Цитата(Andrey_Lord @  10.9.2007,  20:06 Найти цитируемый пост)
порочная практика некрофилить десктопный комп для важной информации....

порочной могу назвать только практику "полагаюсь на авось". а важность информации - понятие не абсолютное, а относительное. Относительно суммы денег, которые придется потратить на резервирование. Вот, например, переписка с заказчиком - вещь, безусловно, нужная. Но тратить 500 у.е. на RAID5 контроллер я бы не стал. А Вы? А вот заархивировать и(даже!) записать на диск стоимостью 40 центов - вполне могу. Так что не стОит делать такие категоричные заявления без знания ситуации. Тем более - без адекватных по стоимости и слоэности предложений smile 

Автор: bilbobagginz 11.9.2007, 11:14
Цитата

которые придется потратить на резервирование.

тут нужно добавить еще и сколько денег потеряется если информация утеряется.....

Автор: xZ0RGx 12.10.2010, 15:30
В общем случае железный RAID конечно надежнее. Но он и денег стоит. Причем хорошей практикой считается покупать сразу два контроллера. Один в сервер, а один на полку. Чтобы потом можно было быстро заменить и восстановить данные, а не бегать сутки по магазинам с глазами на выкате. В идеале конечно лучше с батарейкой, чтобы уже совсем спокойно спать, но с батарейкой дешевых уже не бывает. PCI-E несколько дороже, чем PCI-X, а PCI-X у вас нет наверное.

http://www.fcenter.ru/eshop.shtml?cat/act=p:es:0:86:a:a:a:0:a:1:30:r:1::

Использовать обычный компьютер действительно плохо. Надежность всей системы равняется надежности самого ненадежного её элемента. На древней машине может и юг на матери сдохнуть например, блок питания может накрыться как делать нечего и т.п. В такую машину нет смысла ставить дорогое железо тогда. Я бы либо купил дешевый контроллер, либо сделал бы software RAID. Хотя на самом деле я пошел бы к директору сказал бы, что нельзя так работать. smile

atacontrol мне кажется самый такой... express метод создания зеркала. Причем, как мне кажется он более низкоуровневый. Может я и не прав кончено. smile

UPD: А, ну кстати еще весьма неплох fakeRAID при помощи ZFS.




Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)