Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 как правильно разбить диски для SQL сервера  [new]
alexey f
Member

Откуда:
Сообщений: 105
Proliant DL380 G8, устанавливаем SQL сервер
погуглил тему, очень много всего понаписано но не могу придти к знаменателю...
есть 8 дисков, несколько вариантов, какой на ваш взгляд лучший???

1. из 8 дисков собрать раид50 и далее логические диски C-D-E
под систему, mdf, ldf
- 2 жеских диска не будут доступны
- возможен отказ двух дисков из разных раид5
- хорошее быстродействие
2 райд-1 для системы (два диска)
mdf райд 5 (три диска)
ldf райд 5 (три диска)
- 3 жеских диска не будут доступны
- возможен отказ по диску в каждом рейде
- быстродействие похуже
3. райд-1 для системы (два диска)
mdf - райд 10 (четыре диска)
ldf - райд1 (два диска)
- 4 жеских диска не будут доступны
- возможен отказ двух дисков из разных раид10
- быстродействие еще хуже

Какой вариант предпочтительне для SQL сервера, есть ли смысл создовать 3 рейда для системы, mdf, ldf либо сделать один рейд и поделить на логические диски???

и еще вопрос
нужно ли включать cache на контроллере?
по умолчанию выключен
5 июн 13, 17:10    [14396044]     Ответить | Цитировать Сообщить модератору
 Re: как правильно разбить диски для SQL сервера  [new]
Сосо Павлиашвилли
Guest
alexey f
ldf райд 5 (три диска) ...


это безобразие

1+0 для ldf
5 июн 13, 17:44    [14396253]     Ответить | Цитировать Сообщить модератору
 Re: как правильно разбить диски для SQL сервера  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31785
alexey f
3. райд-1 для системы (два диска)
mdf - райд 10 (четыре диска)
ldf - райд1 (два диска)

4.mdf и система - райд 10 (6 дисков)
ldf - райд1 (два диска)
5 июн 13, 20:56    [14396921]     Ответить | Цитировать Сообщить модератору
 Re: как правильно разбить диски для SQL сервера  [new]
rahzer
Member

Откуда:
Сообщений: 2297
Загнать все все в один рэйд массив 10 уровня! Теоретически так: данные идут через один рэйд-контроллер (надеюсь он с энергозащищенной памятью), поэтому данные будут идти по одной шине и сбрасываться на диски по мере возможности в совокупности с тем, что чем больше шпинделей в рэйде, тем больше быстродействие (в общем и целом, не будем о частностях). Практически, пару месяцев назад здесь же в форуме, люди это проходили, на одном контроллере разбиение по разным массивам не дало преимущества, супротив того, что запихали все в один рэйд, тогда и профит получили.
Рэйд-массивы 5 и 6 не подходят для БД с интенсивной нагрузкой, 50 и 60 приемлемы, когда очень много дисков, у вас это не так. Делайте рэйд-массив 10, для спокойствия 1 Hot-Spare (9 диск), ну либо держите в кладовке, как угодно, но лучше сразу в горячий резерв (к тому же норм контроллеры превентивно перебрасывают инфу на диск, при ухудшении другого), чтобы меньше времени ребилд занимал)
5 июн 13, 21:09    [14396958]     Ответить | Цитировать Сообщить модератору
 Re: как правильно разбить диски для SQL сервера  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31785
rahzer
Практически, пару месяцев назад здесь же в форуме, люди это проходили, на одном контроллере разбиение по разным массивам не дало преимущества, супротив того, что запихали все в один рэйд, тогда и профит получили.
Когда это было, можно ссылку (именно с сиквелом, а не вообще "для сервера")? Для сиквела вроде обычно получают обратное...
5 июн 13, 21:15    [14396974]     Ответить | Цитировать Сообщить модератору
 Re: как правильно разбить диски для SQL сервера  [new]
rahzer
Member

Откуда:
Сообщений: 2297
автор
Когда это было, можно ссылку (именно с сиквелом, а не вообще "для сервера")? Для сиквела вроде обычно получают обратное...

Поищите здесь, я точно не помню тему: смысл в том, что на подобном количестве дисков делили на разные рэйд-массивы, потом собрали тупо в один 10-массив все диски, и начало норм работать.
Да и в разделе Hardware - это уже обсуждали, что при дисках меньше десятка и при одном общем контроллере, ну нет смысла разбивать ибо прирост от количества шпинделей в одном массиве переигрывает разделение массивов на одном контроллере. В принципе, можно даже привести формулу по теории))))
5 июн 13, 21:26    [14396998]     Ответить | Цитировать Сообщить модератору
 Re: как правильно разбить диски для SQL сервера  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31785
alexeyvg
rahzer
Практически, пару месяцев назад здесь же в форуме, люди это проходили, на одном контроллере разбиение по разным массивам не дало преимущества, супротив того, что запихали все в один рэйд, тогда и профит получили.
Когда это было, можно ссылку (именно с сиквелом, а не вообще "для сервера")? Для сиквела вроде обычно получают обратное...
Поискал в форуме, вроде кроме вас никто такой вывод не делал :-)

Обычно даже для больших СХД типа EMC строго рекомендуется нагрузку от данных и логов делить на разные шпиндели (и часто рекомендуют собирать диск из ленов на 2 зеркала как страйп в виндах). Хотя понятно, всё зависит от специфики, допустим, для хранилищ это может быть и не так, и лучшим решением будет один большой 5-й рейд, но для обычной OLTP системы это правильно.
5 июн 13, 21:29    [14397012]     Ответить | Цитировать Сообщить модератору
 Re: как правильно разбить диски для SQL сервера  [new]
rahzer
Member

Откуда:
Сообщений: 2297
автор
нужно ли включать cache на контроллере?

DL 380 и без энергозащищенной памяти??? Убедитесь, что кэш защищен аккумулятором или технология FlashCache, в противном случае, все данные в кэше пропадут при критической ошибке ОС\пропаже питания и т.п. В то время, как СУБД и ОС будут считать их записанными на диске, когда их там нет!
5 июн 13, 21:29    [14397014]     Ответить | Цитировать Сообщить модератору
 Re: как правильно разбить диски для SQL сервера  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31785
rahzer
смысл в том, что на подобном количестве дисков делили на разные рэйд-массивы, потом собрали тупо в один 10-массив все диски, и начало норм работать.
Ну, мало ли кто как накосячил...
Один раз не аргумент :-)
rahzer
Да и в разделе Hardware - это уже обсуждали, что при дисках меньше десятка и при одном общем контроллере, ну нет смысла разбивать ибо прирост от количества шпинделей в одном массиве переигрывает разделение массивов на одном контроллере.
Да, я уверен, что 99% сисадминов (специалистов по хардвару) скажет именно так, но им обычно сиквел без разницы, неродной. Тесты показывают, что всё нормально, и ладно.
rahzer
В принципе, можно даже привести формулу по теории))))
По формуле из теории самый бескомпромиссно-быстрый вариант из отказоустойчивых - это 5-й рейд.
5 июн 13, 21:32    [14397023]     Ответить | Цитировать Сообщить модератору
 Re: как правильно разбить диски для SQL сервера  [new]
rahzer
Member

Откуда:
Сообщений: 2297
автор
Поискал в форуме, вроде кроме вас никто такой вывод не делал :-)

Да было это, точно, вот не помню, как тема называлась, но это обсуждалось тут точно, правда х.з под какой тематикой, тут ведь флуд тоже бывает.
В хардваре тоже обсуждали..Khod тогда больше всех ратовал вроде.
автор
Обычно даже для больших СХД типа EMC строго рекомендуется нагрузку от данных и логов делить на разные шпиндели (и часто рекомендуют собирать диск из ленов на 2 зеркала как страйп в виндах). Хотя понятно, всё зависит от специфики, допустим, для хранилищ это может быть и не так, и лучшим решением будет один большой 5-й рейд

да у меня под рукой бест практисы от ЕМС, не могу найти такого..А указание, что более 35% записи на базу и отказа от рэйд 5 (а тем более 6), там присутствует)
Сейчас еще покушаю, и по иопсам посчитаю разницу рэйд 1+рэйд10, против единого рэйд 10 на все 8 дисков
5 июн 13, 21:36    [14397040]     Ответить | Цитировать Сообщить модератору
 Re: как правильно разбить диски для SQL сервера  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31785
rahzer
В хардваре тоже обсуждали..Khod тогда больше всех ратовал вроде.
А, ну если Khod ратовал :-)

Storage Top 10 Best Practices - это из опыта группы CAT (поддержка особо интересных и больших проектов с MSSQL)
http://technet.microsoft.com/en-us/library/cc966534.aspx

оттуда
Isolate log from data at the physical disk level
Always place log files on RAID 1+0 (or RAID 1) disks.
5 июн 13, 21:44    [14397070]     Ответить | Цитировать Сообщить модератору
 Re: как правильно разбить диски для SQL сервера  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31785
rahzer
Сейчас еще покушаю, и по иопсам посчитаю разницу рэйд 1+рэйд10, против единого рэйд 10 на все 8 дисков
Вот хардварщики всегда так и считают :-)

С сиквелом так неправильно считать, нужно рассматривать хотя бы 2 потока, последовательный из маленьких блоков и последовательно-рандомный из блоков побольше, причём быстродействие сиквела зависит от первого потока, второй не влияет.

Обычно хардварщики такой фигнёй не заморачиваются, меряют одну нагурзку. Ну и результат ожидаем.
5 июн 13, 21:51    [14397091]     Ответить | Цитировать Сообщить модератору
 Re: как правильно разбить диски для SQL сервера  [new]
rahzer
Member

Откуда:
Сообщений: 2297
автор
А, ну если Khod ратовал :-)

да тогда кто-то задел и понеслось...
автор
С сиквелом так неправильно считать, нужно рассматривать хотя бы 2 потока, последовательный из маленьких блоков и последовательно-рандомный из блоков побольше, причём быстродействие сиквела зависит от первого потока, второй не влияет.

ты понимаешь, какая хрень, я не говорю про фэйк-рэйды, я говорю про норм контроллеры с объемом кэша 512МБ и больше (1,2ГБ, если схд то там и 16 и более), они тупо пишут в оперативку контроллера, контроллер уже, в зависимости от быстродействия и загруженности дисков сбрасывает их на диски, чтобы забить кэш, надо постараться (понятно, что от загрузки зависит..) Поэтому как ты пишешь в оперативку контроллера, а там как около 10ГБ\с пропускной способности, вообще по барабану, она тупо превосходит запись на жесткие диски, вопрос как часто писать и сброс инфы на диски (а здесь чем больше шпинделей, тем лучше)
5 июн 13, 22:05    [14397123]     Ответить | Цитировать Сообщить модератору
 Re: как правильно разбить диски для SQL сервера  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31785
rahzer
посчитаю разницу рэйд 1+рэйд10, против единого рэйд 10 на все 8 дисков
А вообще говоря, тут ещё важны требования к нагрузке и характер нагрузки.
Так что вариант с одним рэйд 10 может быть не так уж и плох, тем более его легче администрировать, а снижение производительности будет только при массовых мелких транзакциях в сочетании с большой фоновой нагрузкой типа бакапа.

Главное, не использовать любой из вариантов alexey f, они точно нехорошие.
5 июн 13, 22:08    [14397132]     Ответить | Цитировать Сообщить модератору
 Re: как правильно разбить диски для SQL сервера  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31785
rahzer
я не говорю про фэйк-рэйды, я говорю про норм контроллеры с объемом кэша 512МБ и больше (1,2ГБ, если схд то там и 16 и более), они тупо пишут в оперативку контроллера, контроллер уже, в зависимости от быстродействия и загруженности дисков сбрасывает их на диски, чтобы забить кэш, надо постараться (понятно, что от загрузки зависит..) Поэтому как ты пишешь в оперативку контроллера, а там как около 10ГБ\с пропускной способности, вообще по барабану, она тупо превосходит запись на жесткие диски, вопрос как часто писать и сброс инфы на диски (а здесь чем больше шпинделей, тем лучше)
Но предел пропускной способности будет определяться не кешем, а пропускной способностью дисков. Пиковая производительность предполагает, что есть длительный и постоянный поток данных, его же всё таки надо успевать сбрасывать.

Для транзакций по 8 кб записи в лог получаем, что отдельное зеркало будет выдерживать 20 000 транзакций в секунду. Один 10 рейд в кеш то сохранит, но он же будет шевелить головами дисков, будет прерывать этот поток...
5 июн 13, 22:13    [14397146]     Ответить | Цитировать Сообщить модератору
 Re: как правильно разбить диски для SQL сервера  [new]
rahzer
Member

Откуда:
Сообщений: 2297
автор
Но предел пропускной способности будет определяться не кешем, а пропускной способностью дисков. Пиковая производительность предполагает, что есть длительный и постоянный поток данных, его же всё таки надо успевать сбрасывать.

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

Тут ситуация опять же хитрая..Все зависит от того, какой объем кэша(?), защищен ли он(?), а раз он отключен на запись, то большие сомнения, что защищен, контроллеры достаточно умные, какие диски(?)
В некоторых случаях можно управлять контроллером, определенные границы, когда можно сбрасывать кэш и т.п., но это уже уровень схд, в серверах, частенько это закрыто, там уже от фирменной прошивки идет, контроллер сам опрашивает диски, чем заняты, сколько у контроллера еще места, промежуточный это результат или нет, насколько близко головка находится к нудному участку и т.п. Нюансов очень много.
Зря народ говорит я самосбор возьму, производители по вышеперечисленным параметрам (и многим другим) стараются минимизировать потери.
5 июн 13, 22:28    [14397200]     Ответить | Цитировать Сообщить модератору
 Re: как правильно разбить диски для SQL сервера  [new]
stavgreengo
Member

Откуда:
Сообщений: 710
я бы под ldf ваще один диск отдал и отдельно для бэкапов диск сделал, но лог туда бэкапил бы почаще. Холивар ВПЕРЁД !!! )))))
5 июн 13, 22:55    [14397290]     Ответить | Цитировать Сообщить модератору
 Re: как правильно разбить диски для SQL сервера  [new]
rahzer
Member

Откуда:
Сообщений: 2297
автор
я бы под ldf ваще один диск отдал и отдельно для бэкапов диск сделал, но лог туда бэкапил бы почаще.

Бэкапы никто не отменял..Человеческий фактор или вирус, рэйд цел, а данных нет, кто виноват?))) Потоковая запись на 10 рэйд будет быстрее, сомневаетесь?)
автор
Один 10 рейд в кеш то сохранит, но он же будет шевелить головами дисков, будет прерывать этот поток...

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

Если считать чисто по теории, то разницы по иопсам нет, по потоковому чтению или записи, разница в большием кол-ве шпинделей. но по иопсам - это идеальная ситуация, как в физике (принебрежем трением, силой тяжести и прочей хренью), чтобы точно посчитать, нужна нагрузка по разным массивам, хотя бы проценты чтения-записи, пока что сферический конь в вакууме.
5 июн 13, 23:17    [14397347]     Ответить | Цитировать Сообщить модератору
 Re: как правильно разбить диски для SQL сервера  [new]
ф. киркоров
Guest
до сцены я абминистрировал сервера

субд юзает ldf для записи redo, как минимум по коммиту туда осуществляется последовательная запись. в oltp может стать узким местом. потому надо параллелить запись и в зависимости от требований бизнеса не потерять эту важную инфу потому 1+0.

файлы данных субд юзает для сброса данных. при этом старается делать это как можно реже и накапливать изменения в оперативке. для "горячих" кусков таблиц raid 1 или 0+1. для read-only кусков таблиц или крайне редко меняющихся raid 5.
5 июн 13, 23:50    [14397419]     Ответить | Цитировать Сообщить модератору
 Re: как правильно разбить диски для SQL сервера  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Если положить на 1 диск логи от десятка баз данных, то о какой последовательной записи может вообще идти речь? Запись в лог не кешируется в оперативной памяти, поэтому каждый коммит летит прямиком на диск. Сотни мелких транзакций одновременно от нескольких БД и диск под логи может стать узким местом. Так что я за то чтобы сделать один массив из 8 дисков.
6 июн 13, 04:48    [14397608]     Ответить | Цитировать Сообщить модератору
 Re: как правильно разбить диски для SQL сервера  [new]
alexey f
Member

Откуда:
Сообщений: 105
в итоге как я понял из написанного raid10 из 8 дисков лучше чем raid50?
тогда почему в настройках сервера при указании максимальной производительности конфигурируется именно raid50 а не raid10???
автор
Делайте рэйд-массив 10, для спокойствия 1 Hot-Spare

и сколько же у меня останется места из 8 дисков по 300Гб, райд10 да еще и Hot-Spare ???
автор
Так что я за то чтобы сделать один массив из 8 дисков.

так какой raid 50 или 10 ?
почему raid50 хуже так и не понял? по быстродействию лучше 10, по количеству свободного места на дисках тоже
6 июн 13, 07:59    [14397726]     Ответить | Цитировать Сообщить модератору
 Re: как правильно разбить диски для SQL сервера  [new]
rahzer
Member

Откуда:
Сообщений: 2297
автор
Запись в лог не кешируется в оперативной памяти

Вы про какой рэйд-контроллер говорите сейчас? Если взять не софтовые решения, а аппаратные, то на рэйд-контроллере есть своя оперативная память, в современных серверах от 512МБ и больше. Если память контроллера защищена аккумулятором или флэш-памятью, то сразу же после получения данных, контроллер отдает команду, что готов к следующему действию, на диски контроллер сразу не сбрасывает (смысла нет, память защищена), а данные могут снова запроситься\измениться и т.п., к тому же диски могут быть заняты другими операциями чтения\записи, поэтому контроллер их держит у себя, как только понимает, что диски свободны или данные не будут меняться, он их сбрасывает на диски. Но операционка и СУБД этого уже не знает, ей достаточно подтверждения контроллера, а когда он там уже сбрасывает или откуда считывает, этого ОС и СУБД не знают и не занимаются этим процессом.
В случае, если же рэйд-контроллер не имеет энергозащищенной памяти, то тогда да, он сбрасывает сразу же на диски, и пока от самого контроллера диска не придет сигнал о том, что данные записаны, он ничего не отсылает ОС и СУБД, естественно, что в таком случае процесс существенно медленный, снижается общая производительность системы и очень сильно зависит от быстродействия дисков (оборотов, количества шпинделей, а также типа рэйд массива)
Потому утверждение о том, что:
автор
поэтому каждый коммит летит прямиком на диск

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

Так как, данные пишутся в кэш, который достаточно емкий и быстрый (считайте, что работаете с RAM памятью), а там уже контроллер их упорядочивает, и пишет на диски последовательно (ну или согласно своим каким то алгоритмам оптимизации), поэтому это слегка нивелируется, но тем не менее диски могут стать узким место, если кэш будет быстро забиваться, когда диски не будут успевать переваривать сбрасываемую инфу, ну а при чтении понятно, что тут тупо от быстродействия дисков зависит и их количества.
автор
в итоге как я понял из написанного raid10 из 8 дисков лучше чем raid50?

Да, но ты можешь собрать сначала один, потом другой и оба протестить иометром или склио, можно и другое что-нибудь. Посмотри, какое будет быстродействие при 50 массиве, но в даунгрейде, когда один диск выйдет)
автор
и сколько же у меня останется места из 8 дисков по 300Гб, райд10 да еще и Hot-Spare ???

Hot-spare я предлагал 9-м диском, т.к. если брать один из 8 имеющихся, то будет нечетное количество дисков а из них (7) массивы четные (10,50,60) не получить, поэтому еще минус диск.
Объем то же сам посчитаешь, (8*300)\2=1200ГБ сырой емкости.
автор
почему raid50 хуже так и не понял?

Да хотя бы потому, что каждый раз при записи и перезаписи будут рассчитываться контрольные суммы по дискам, а у тебя 2 массива 5-уровня, и каждый будет просчитывать, понятно, что xor-процессоры быстры, но тем не менее потери при записи есть и будут, по чтению будет чуть лучше или на уровне 10-рэйда, там есть нюансы.
Про даунгрейд я уже писал, посмотри что будет, когда 5-й массив в ребилде, производительность очень низкая.
Ну по месту тут да, но тут уже сам выбирай - либо быстро ехать меньше места, либо помедленнее, но больше места)
6 июн 13, 10:13    [14398191]     Ответить | Цитировать Сообщить модератору
 Re: как правильно разбить диски для SQL сервера  [new]
дима биланнЬ
Guest
"...Если положить на 1 диск логи от
десятка баз данных, то о какой
последовательной записи может
вообще идти речь..."

так не ложите. я вам такого кошмара не предлагал. одна бд один свой 1+0 под лог. в этом случае запись в лог последовательна. не верите, гуглите.
6 июн 13, 11:12    [14398617]     Ответить | Цитировать Сообщить модератору
 Re: как правильно разбить диски для SQL сервера  [new]
alexey f
Member

Откуда:
Сообщений: 105
решил пока что поставить raid10 из 8 hdd.
я вот только не совсем понимаю в чем отличие от raid1
также будут рабочих 4 винта, а 4 запасные
6 июн 13, 11:18    [14398661]     Ответить | Цитировать Сообщить модератору
 Re: как правильно разбить диски для SQL сервера  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31785
alexey f
решил пока что поставить raid10 из 8 hdd.
я вот только не совсем понимаю в чем отличие от raid1
raid10 - это raid0, сделанный из нескольких raid1, или наоборот, raid1, сделанный из нескольких raid0
raid10 ещё иногда называют raid 1+0 или raid 0+1
6 июн 13, 11:33    [14398752]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить