Конфигурируя свою систему, вы должны специально позаботиться о том, чтобы правильно спроектировать и сконфигурировать подсистему ввода-вывода. Конфигурирование
В данной лекции мы изучим подсистему ввода-вывода. Мы начнем с описания работы устройств жестких дисков и расскажем, почему диски имеют фундаментальные ограничения производительности. Затем мы расскажем о разнообразных решениях при помощи доступных вам систем RAID и о характеристиках их производительности. Кроме того, вы научитесь идентифицировать и решать проблемы с производительностью ввода-вывода. В данной лекции также будет дано множество полезных советов и рекомендаций, относящихся к
Дисковые накопители, называемые также "жесткие диски", являются одними из основных компонент компьютеров. Но, как ни удивительно, механическое устройство дисковых накопителей за последние 20 лет не поменялось радикально. По сравнению с первыми моделями, жесткие диски стали гораздо надежней и быстрей, но их основа осталась такой же. С точки зрения производительности, жесткие диски являются одними из наиболее важных аппаратных компонент, требующих настройки. Строго говоря, на самом деле вы не можете настраивать жесткие диски, но, зная характеристики их производительности и ограничения, вы можете конфигурировать свою систему с учетом данных ограничений, осуществляя, фактически, настройку
В качестве компонент для хранения данных в накопителях на жестких дисках применяются одна или нескольких пластин (disk
Накопители на жестких дисках часто состоят не из одной, а из многих пластин, расположенных одна над другой (рис. 5.2). Данные считываются при помощи магнитных головок. Магнитные головки используются как для чтения, так и для записи данных на диск. Так как пластин несколько, то и головок должно быть несколько. Эти головки крепятся на коромыслах (armature), двигающихся внутрь пакета пластин и обратно из него, подобно тонарму с иглой у граммофона. Все головки и коромысла жестко соединены друг с другом, поэтому все головки в каждый из моментов времени находятся в одинаковых местах каждой из пластин. Из-за такой конструкции диска становится целесообразным одновременное чтение или запись сразу всеми его головками. Таким образом, данные записываются и считываются с диска одновременно всеми головками. Поскольку набор дорожек, охватываемых головками в любой из моментов времени, похож на цилиндр, мы говорим, что данные хранятся в цилиндрах (рис. 5.2).

(рис 5.2) Пластина жесткого диска(рис 5.1) Цилиндры жесткого дискаНакопители на жестких дисках могут иметь только одну пластину, а могут – и более шести пластин. Плотность хранения данных на пластинах и количество пластин определяют максимальную емкость (вместимость) накопителя. Некоторые модели накопителей не отличаются почти ничем, кроме количества пластин. Распространенная модель накопителей имеет емкость 9 Гб и три пластины, а накопители модели, не отличающейся ничем, кроме емкости 18 Гб, имеют шесть пластин.
Теперь, когда у вас имеется представление о конструкции накопителя на жестких дисках, давайте ознакомимся с тем, как он работает. Сначала мы расскажем о характеристиках вращения жестких дисков, а затем вы узнаете, как зависит время поиска дорожки жестких дисков от производительности накопителя.
Многие высокопроизводительные жесткие диски вращаются со скоростью 10000 об/мин. Если для доступа к запрошенным данным потребуется полный оборот диска, то этот оборот диска займет приблизительно 6 мс, т.е. 0,006 секунд. Скорость вращения 10000 об/мин соответствует 166,7 оборотам в секунду, поэтому на один оборот требуется 1/166,7 секунды, т.е. около 6 мс.
Чтобы головки накопителя могли прочитать сектор данных, этот сектор должен находиться под головками. Поскольку диск всегда вращается, головка просто должна подождать, пока сектор не подойдет в позицию под нее. Время, необходимое для поворота диска в нужную позицию, когда нужный сектор подойдет под головку, называется задержкой вращения (rotational latency). Задержка вращения может достигать 6 мс (если необходим полный оборот диска), но в среднем она составляет 3 мс.
Задержка вращения добавляется к времени отклика доступа к диску. Поэтому, когда вы выбираете дисковые накопители для своей системы, с точки зрения производительности, длительность задержки вращения чрезвычайно важна. Как вы только что видели, для дисков со скоростью вращения 10000 об/мин, задержка вращения составляет около 3 мс. Диски предыдущего поколения вращались со скоростью 7200 об/мин, у них оборот совершался за 8,3 мс, а средняя задержка вращения составляет около 4,15 мс. Это увеличение средней задержки вращения кажется небольшим, но оно на 38% больше, чем у диска со скоростью вращения 10000 об/мин. Как вы узнаете далее в данной лекции, длительность времени отклика может значительно увеличить время доступа для ввода-вывода.
При доступе к данным, диск должен не только повернуться в такое положение, чтобы головки могли бы прочесть данные, но и головки должны передвинуться на дорожку, на которой находятся данные. Коромысла двигаются к центру диска и наружу, перемещая головки на цилиндр, содержащий нужные данные. Время, необходимое для перемещения головок к местоположению нужных данных, называется временем поиска дорожки или просто временем поиска (seek time), или временем подвода головки к требуемой дорожке диска (см.рис. 5.3).
(рис 5.3) Задержка вращения и время поискаВремя, необходимое для поиска нужной дорожки, зависит, главным образом, от расстояния, которое должны пройти головки диска. Если накопитель осуществляет доступ к данным, хранящимся в последовательном порядке, головки должны перемещаться лишь на небольшое расстояние, и такое перемещение производится быстро. Если доступ производится к данным, располагающимся по всему диску, длительности поиска дорожек могут оказаться более продолжительными. В любом случае, добиваясь минимального времени поиска, вы улучшаете производительность вашей системы.
Время поиска и задержка вращения добавляются ко времени, необходимому для выполнения операции ввода-вывода и, следовательно, снижают производительность дискового накопителя. Для накопителей со скоростью вращения 10000 об/мин, задержка вращения составляет около 3 мс. Время поиска нужной дорожки зависит от размера и скорости дискового накопителя и варианта осуществляемого поиска.
Время перехода головки на соседнюю дорожку (track-to-track
Среднее время поиска дорожки диска (
Максимальное время поиска для дисков данного типа может достигать 13 мс. Поиск дорожки имеет максимальную длительность при переходе от самой внутренней дорожки пластины к самой внешней дорожке или наоборот. Такая ситуация называется поиск по всему диску (full-disk
В данном разделе вы узнаете, насколько быстро дисковые накопители могут выполнять различные виды операций ввода-вывода. Чтобы оценить скорость выполнения операций ввода-вывода, необходимо знать некоторые сведения о дисковом накопителе. Большинство этих сведений можно найти в технических описаниях дисков, сообщаемых их производителями. В данной лекции в качестве примера будут взяты технические характеристики накопителя с емкостью 9,1 Гб и скоростью вращения 10000 об/мин. Другие технические характеристики этого типичного дискового накопителя перечислены в табл. 5.1.
| Техническая характеристика | Значение | Описание |
|---|---|---|
| Емкость диска | 9.1 Гб | Емкость неформатированного диска |
| Скорость вращения | 10000 об/мин | Скорость, с которой вращается диск |
| Скорость передачи данных | 40 Мб/с | Скорость шины SCSI |
| Среднее время поиска | 5,2 мс (для чтения), 6 мс (для записи) | Средняя продолжительность времени, необходимого для поиска нужной дорожки (при операциях произвольного ввода-вывода) |
| Время перехода головки на соседнюю дорожку | 0,6 мс (для чтения), 0,9 мс (для записи) | Продолжительность времени, необходимого для перехода на соседнюю дорожку (при операциях последовательного ввода-вывода) |
| Время поиска по всему диску | 12 мс (для чтения), 13 мс (для записи) | Продолжительность времени, необходимого для перехода от самого внутреннего сектора диска к самому внешнему сектору, или наоборот |
| Средняя задержка | 2,99 мс | Средняя задержка вращения |
| Средняя длительность работы до отказа | 1 000 000 часов | Средний срок службы дискового накопителя |
А теперь мы расскажем, как при помощи подобных технических характеристик вы сможете оценить производительность накопителя на жестких дисках.
Продолжительность времени, необходимого для выполнения операции ввода-вывода, зависит от следующих факторов:
Поэтому время, необходимое для выполнения операции ввода-вывода представляет собой сумму длительностей исполнения описанных здесь этапов плюс время для обработки дополнительных нагрузок в драйвере устройства и в операционной системе. Помните, что итоговая
При последовательном вводе-выводе происходит доступ к данным, расположенным на диске рядом с предыдущими данными. Так как переход головок к соседней дорожке выполняется гораздо быстрее, чем переход к произвольной дорожке, то при выполнении последовательного ввода-вывода можно достичь гораздо большей производительности. Чтобы вы представили себе возможную скорость выполнения последовательного ввода-вывода, рассмотрим пример.
Как мы уже упоминали, типичному дисковому накопителю для выполнения перехода головок к соседней дорожке потребуется около 0,9 мс. Прибавив это время к величине задержки вращения (2,99 мс), вы можете сделать вывод, что каждая операция ввода-вывода займет приблизительно 3,89 мс. Такая длительность теоретически позволяет выполнять 264 операции последовательного ввода-вывода в секунду, т.к. одна секунда содержит 264 интервала времени по 3,89 мс. Но на производительность последовательного ввода-вывода влияют и другие факторы, такие как ограничение пропускной способности интерфейса SCSI 40 Мб/с и компоненты операционной системы: файловая система и драйвер устройства. Эта дополнительная нагрузка определяет максимальную производительность последовательного ввода-вывода, допустимую для данного дискового накопителя, составляющую около 250 операций в секунду (это число зависит от размера передаваемых данных). Как вы узнаете в лекции 6, если ваш диск передает данные со скоростью, превышающей 85% от его производительности, то будут образовываться очереди, поэтому максимальная рекомендуемая производительность ввода-вывода составит 225 операций в секунду.
При произвольном вводе-выводе головки дискового накопителя должны считывать данные с произвольных участков диска. Из-за этих произвольных перемещений головок происходит снижение производительности. Давайте снова вернемся к нашему примеру дискового накопителя. Пусть теперь головки затрачивают не по 0,8 мс, переходя на соседние дорожки, а перемещаются произвольным образом по всему диску. Для поиска произвольной дорожки потребуется в среднем около 6 мс, что в 7,5 раза длительней перехода к соседней дорожке. Для типичной операции произвольного ввода-вывода понадобится примерно 6 мс (в среднем) на перемещение головок к дорожке с данными и еще 2,99 мс на задержку вращения, что составит в сумме 8,99 мс, т.е. теоретически максимально может производиться 111 операций ввода-вывода в секунду (т.к. в одной секунде содержится 111 интервалов времени по 8,99 мс). Далее, мы уже говорили, что если возможности ввода-вывода для диска задействуются более чем на 85%, то образуются очереди. Поэтому максимальная рекомендуемая производительность ввода-вывода составит 94 операции в секунду. А если согласиться с эмпирическим правилом для учета нагрузки на контроллер, то следует ограничить ввод-вывод для данного дискового накопителя 85 операциями ввода-вывода в секунду.
Когда дисковый накопитель выполняет произвольный ввод-вывод, нормальная задержка (время, необходимое для выполнения одной операции ввода-вывода) составит 8,99 мс. Если обращения к диску станут производиться чаще, чем он сможет их обрабатывать, то начнут образовываться очереди и задержка вырастет (см. рис. 5.4). Как видите, чем ближе количество операций в секунду к рекомендованной максимальной производительности накопителя, тем длительней будет задержка.
(рис 5.4) Количество операций ввода-вывода в секунду как функция задержкиНа самом деле, если вы достигните 100-процентного задействования возможностей диска, то очереди возникнут обязательно, а общая производительность резко снизится. Как вы прочтете в нашей книге позднее, SQL Server, как и любая другая система управления реляционными базами данных, очень сильно зависит от задержек ввода-вывода. Если для выполнения операций ввода-вывода требуется чрезмерно много времени, то производительность SQL Server сильно снизится (деградирует) и могут возникнуть такие проблемы, как блокировка (blocking) и зависание (
Как же можно преодолеть ограничения, связанные с производительностью дисковых накопителей? На самом деле, здесь нет ничего хитрого. Следуйте советам, приведенным ниже, и вы сможете создать подсистему ввода-вывода с оптимальной производительностью:
Как вы понимаете, если просто добавлять в систему новые и новые дисковые накопители, то с нею будет очень сложно работать. Поэтому, вместо того, чтобы добавлять десятки или сотни отдельных дисковых накопителей, многие пользователи предпочитают применять массивы RAID (
Как ясно из самого их названия, массивы RAID содержат в себе два или несколько дисковых накопителей, образуя тем самым массив дисковых накопителей. Операционная система воспринимает весь этот массив как один логический диск. Этот логический диск называют также дисковый том, потому что он является набором дисков, кажущихся одним диском. Для пользователей, для приложения и даже (если применяется аппаратный массив RAID) для Microsoft Windows 2000 массив RAID воспринимается как один диск. Во многих случаях, однако, этот один диск будет иметь гораздо больший объем, чем любой из дисков, имеющихся в продаже. Но благодаря массивам RAID можно создавать не только большие логические диски, но также, во многих из конфигураций RAID (уровнях RAID), обеспечивать также и отказоустойчивость логического диска. Эта отказоустойчивость позволяет диску RAID сохранять работоспособность даже при отказе одного или нескольких из отдельных дисковых накопителей, составляющих массив RAID. В следующих разделах мы покажем, как достигаются такие возможности, и расскажем о характеристиках различных уровней RAID.
Мы уже сказали, что массивы RAID могут быть реализованы программно; фактически, Windows 2000 поставляется вместе с программным обеспечением для RAID. Но в данной лекции мы в основном будем рассказывать об аппаратных реализациях RAID, потому что они обладают дополнительными функциональными возможностями. Мы расскажем об этих возможностях в следующих двух разделах и познакомим вас с функциональными возможностями и характеристиками различных уровней RAID.
Аппаратные контроллеры RAID обеспечивают не только основные функциональные возможности RAID, но и некоторые дополнительные средства. Среди этих дополнительных возможностей аппаратных реализаций RAID чаще всего встречается кэш контроллера. В этом разделе вы узнаете о кэше контроллера, кэшах дисковых накопителей и о разнице между внутренними и внешними массивами RAID. Кроме того, вы узнаете о новой технологии ввода-вывода – сетях хранения данных SAN (
Чтобы улучшить производительность ввода-вывода, многие производители поставляют контроллеры, имеющие кэши. Кэш контроллера – это оперативная память, установленная в контроллере дисковых накопителей. Этот кэш применяется для выполнения двух задач:
Как вы узнаете позднее в данной лекции, производительность записи может оказаться критически важной, особенно, когда вы применяете массивы RAID уровня 5. В большинстве случаев контроллер кэша является большим достоинством. Но есть два момента, о которых мы должны вас предостеречь:
Большинство дисковых накопителей тоже содержит кэш с оперативной памятью. Этот кэш имеет меньший объем, чем кэш контроллера. Он может хранить одновременно немного запросов, благодаря чему дисковый накопитель может самостоятельно выполнить лифтовую сортировку (
Имеется два основных типа систем RAID: внутренние и внешние. Эти термины описывают, где находятся алгоритмы работы массивов RAID. В большинстве систем алгоритмы работы RAID находятся на контроллере, который установлен в стойке корпуса компьютера. Такие системы RAID называются внутренними. А у внешней RAID-системы алгоритмы работы находятся в запоминающем устройстве или в запоминающих устройствах, в которых размещены дисковые накопители. Это различие показано на рис. 5-5. Каждый тип систем имеет свои особенности и характеристики. Однако различия между внутренними и внешними системами RAID не будут играть значительную роль в материале данной лекции. Мы рассказали об этих двух разновидностях контроллеров RAID только для полноты изложения. В следующем разделе вы узнаете о различных уровнях RAID. Эти уровни значительно важнее в классификации контроллеров RAID.
(рис 5.5) Внутренние и внешние системы RAID
Одной из новейших технологий, появившихся на рынке, является SAN (
Технология SAN имеет довольно простую концепцию. Внешняя система RAID соединяет адаптер главной шины (
(рис 5.6) Система SANКогда мы писали нашу книгу, несколько компьютеров не могли пользоваться совместно одним логическим диском в составе SAN. Программное обеспечение SAN производит сегментацию дисковой памяти, сопоставляя каждому из компьютеров свой логический диск. Однако у SAN имеются следующие достоинства:
Вы должны оценить не только ограничения, связанные с дисковым накопителем, но и ограничения
Компании, которым необходимо обеспечивать доступность в течение 99,99% времени и более в сочетании с максимальной производительностью, часто обращаются к поставщикам вроде фирмы
Лифтовая сортировка (elevator sorting) – это метод для обеспечения большей эффективности операций произвольного ввода-вывода. Когда диск получает произвольные запросы ввода-вывода, головки должны перемещаться произвольным образом по дорожкам диска, внутрь и наружу. Из-за этих операций произвольного ввода-вывода возникают задержки, мы уже рассказывали вам об этом. Многие из RAID-контроллеров поддерживают лифтовую сортировку, благодаря которой поиск произвольных дорожек становится более эффективным. Когда на контроллере, поддерживающем лифтовую сортировку, собрались в очереди несколько запросов ввода-вывода, то операции ввода-вывода могут быть отсортированы таким образом, чтобы избавиться от лишних перемещений головок. Движения головок, оптимизированные при помощи лифтовой сортировки, напоминают движения лифта, забирающего попутных пассажиров при перемещении между этажами в нужном направлении.
Представьте, что было бы, если бы лифт обслуживал пассажиров строго в том порядке, в котором они нажимали бы на кнопки. Тогда лифт проезжал бы мимо нужных этажей, вместо того, чтобы остановиться и дать людям войти или выйти. Настоящий лифт работает более эффективно, потому что он делает остановки на нужных этажах. Алгоритмы лифтовой сортировки работают примерно так же. Если в очереди имеется более одной операции ввода-вывода, то контроллер найдет наиболее эффективный путь движения головок, который очистит очередь (рис. 5.7).
(рис 5.7) Лифтовая сортировкаКак видите, благодаря лифтовой сортировке накопитель может более эффективно производить переход головок к нужным дорожкам. Общее время поиска дорожек сокращается (хотя время поиска дорожки для отдельных операций иногда может и увеличиться). Однако для работы лифтовой сортировки вы должны иметь на том контроллере или на дисковом накопителе, для которых она будет производиться, несколько или даже много операций ввода-вывода, ожидающих своего исполнения. Такая ситуация часто возникает при чрезмерной нагрузке на подсистему ввода-вывода. Диск, работающий оптимальным образом, во многих случаях имеет лишь одну или две операции ввода-вывода, ожидающие своего исполнения, что делает сомнительной полезность лифтовой сортировки.
Дисковые накопители являются одними из немногих компонент компьютера, имеющими подвижные детали. Диск вращается с большой скоростью и работает нагретым до высокой температуры. Среди деталей накопителя имеются несколько двигателей и подшипников, которые рано или поздно, но обязательно износятся. Среди технических характеристик дискового накопителя имеется средняя продолжительность наработки на отказ (
Главной особенностью массивов RAID является то, что логический диск формируется из двух или нескольких физических дисковых накопителей и воспринимается Windows 2000 (и
Большинство уровней RAID, о которых мы вам расскажем, применяют расслоение данных (data striping), при помощи которого данные с двух или нескольких дисков объединяются в один большой логический RAID-диск. Это делается так: первый фрагмент данных берется с первого диска, второй кусок данных – со второго диска, и так далее. Эти фрагменты данных называются слои (stripes) или куски (
Название "слой" ("кусок") применяется как к фрагментам данных на каждом из отдельных дисков, так и к набору слоев (кусков) для всей совокупности дисков (рис. 5.8).
Таким образом, термин слой может применяться, когда речь идет о данных на каком-либо одном из дисковых накопителей (в этом случае говорят слой диска). Так говорят и о наборе связанных данных с разных дисков (а в этом случае говорят слой RAID ). Помните об этом, когда будете читать данную лекцию и другие места, где рассказывается о массивах RAID.
(рис 5.8) Слои RAIDУровень RAID – это обозначение типа конфигурации массива RAID, поэтому он определяет характеристики массива RAID, не описываемые алгоритмами, содержащимися во внутренних или внешних логических компонентах. Одной из наиболее важных характеристик, определяемых уровнем RAID, является отказоустойчивость. Отказоустойчивость – это способность системы RAID продолжать работать даже после отказов дисковых накопителей, входящих в ее состав. Отказоустойчивость является основной целью, ради которой создаются контроллеры RAID. Так как ваши данные представляют ценность, то вам следует защищать их от возможных отказов дисков. В данном разделе мы изучим наиболее широко применяемые уровни RAID: как они работают, какая у них отказоустойчивость и насколько быстро происходит ввод-вывод данных. Помимо этих уровней RAID, есть и другие, но они применяются редко и мы не будем их рассматривать. Мы расскажем лишь о наиболее широко применяемых уровнях RAID.
RAID 0 являются самым "фундаментальным" из уровней RAID, он обеспечивает только расслоение дисков. Куски данных создаются на каждом из дисковых накопителей, а размер кусков задается контроллером. Для составления большого логического диска применяется метод кругового распределения кусков данных по отдельным дискам массива RAID 0 (рис. 5.9).
(рис 5.8) RAID 0Хотя RAID 0 и причисляется к массивам RAID, однако данный уровень RAID не обеспечивает избыточности (
Рекомендации по применению RAID 0
Как правило, нельзя рекомендовать применять RAID 0 для хранения файлов данных SQL Server. Так как данные в базе данных очень важны для вашего бизнеса, то их потеря может погубить вашу фирму. Массивы RAID 0 не защищают от отказов дисков, поэтому вам не следует применять их ни для каких критически важных компонент, таких как операционная система, журнал транзакций или файлы базы данных.
RAID 1 являются "фундаментальным" уровнем RAID, обеспечивающим отказоустойчивость. В алгоритме RAID 1, называющемся также "зеркальное отражение", предусмотрено изготовление дублирующей копии вашего диска с данными. Дублирующая копия содержит ту же самую информацию, что имеется и на первоначальном диске (рис. 5.10). При отказе диска в строй вступит диск-дубль, и вы не потеряете данные. Так как на каждом диске (и на первоначальном, и на зеркале) хранятся все данные, то расслоение данных отсутствует. В RAID 1 второй диск применяется для дублирования первого, поэтому общий объем логического тома RAID 1 совпадает с объемом одного дискового накопителя. RAID 1 является дорогостоящим решением: при удвоении количества применяемых дисков вы взамен не получаете никакого увеличения объема дисковой памяти, но зато он обеспечивает высокий уровень отказоустойчивости.
(рис 5.10) RAID 1Для томов RAID 1 операция ввода-вывода не считается завершенной, пока контроллер не запишет данные на оба дисковых накопителя. Пока этого не произойдет, нет и безопасности для данных при отказе одного из дисков. После того, как данные будут записаны на оба дисковых накопителя, восстановление данных станет возможным при отказе любого из дисков. Поэтому, если запись данных на один из дисков займет времени больше, чем запись этих же данных на другой диск, то общая задержка будет равна максимальной из двух задержек для разных дисков.
Запись данных на оба диска также снижает производительность логического дискового накопителя. При подсчете количества операций ввода-вывода, производимых на всех дисках массива, нужно умножать количество записей на 2. Чтение данных производится только с одного из дисков. Скорости работы дисков могут отличаться, потому что головки одного из дисков могут оказаться в другом положении, чем головки другого диска, и из-за этого время поиска нужной дорожки может оказаться более длительным. Положение головок может быть разным из-за функции уровня RAID 1, называющейся параллельный поиск (
Благодаря параллельному поиску, диски, входящие в состав массива RAID 1, могут производить чтение дисков независимо друг от друга. Параллельный поиск возможен потому, что чтение может производиться каждый раз лишь только на одном из дисков. Большинство из производителей контроллеров поддерживают параллельный поиск. Применение параллельного поиска повышает производительность, потому что обработка ввода-вывода распределяется по двум дискам, вместо одного диска. Но, из-за того, что головки движутся независимо, а запись должна быть выполнена обеими головками, общая задержка записи равна большей из двух задержек для каждого из отдельных дисков.
Рекомендации по применению RAID 1
RAID 1 обеспечивает высокую степень отказоустойчивости и высокую производительность. RAID 1 является прекрасным решением для случаев, когда все данные способны уместиться на одном диске. Ниже даны некоторые рекомендации по применению RAID 1:
Из дальнейшего материала в данной лекции вы узнаете, что в случаях, когда для хранения данных требуется более одного диска, можно применять и другие решения, обеспечивающие отказоустойчивость. RAID 1 является прекрасным решением для случаев, когда требуется отказоустойчивость и данные способны уместиться на одном диске.
RAID 5 являются отказоустойчивым уровнем RAID, в котором для защиты данных применяется контроль по четности. Каждый слой данных (stripe) RAID создает информацию для контроля по четности, хранимую на одном из дисков в составе слоя. В сочетании с другими дисками в составе слоя RAID, информация для контроля по четности может быть использована для воссоздания данных с любого из дисков слоя. Поэтому массивы RAID 5
(рис 5.11) RAID 5Достоинством RAID 5 является то, что дисковая память, доступная при применении этого уровня RAID, составляет (n-1)*(объем одного диска) где n равно количеству дисков в массиве. Так, массив RAID 5, составленный из 10 дисков, будет иметь объем, как у 9 дисков, что делает его экономичным и в то же время отказоустойчивым решением.
К сожалению, массивы RAID 5 имеют недостатки, связанные с производительностью. Обработка информации для контроля по четности приводит к дополнительной нагрузке на компьютер. При записи данных в массив RAID 5 требуется чтение как слоя данных с целевого диска, так и слоя с информацией для контроля по четности, затем потребуется перерасчет информации контроля по четности, а затем должна быть произведена запись обоих слоев данных. Таким образом, как видите, запись в массив RAID 5 производит фактически четыре физических операции ввода-вывода.
В массивах RAID 5 для данных каждого из слоев на каждом из дисковых накопителей создается бит контроля по четности. Бит контроля по четности является дополнительным элементом данных, благодаря которому, имея биты из набора данных, по которому он был создан, можно узнать другие биты из набора данных. Бит контроля по четности создается так: все остальные биты суммируются, а затем определяется, какое значение он должен иметь, чтобы получилось четное (или нечетное число). Бит контроля по четности, в сочетании с остальными битами, может применяться, чтобы восстановить значение потерянного бита.
Давайте разберем работу контроля по четности на примере. В нашем примере мы будем считать, что система RAID 5 содержит пять дисковых накопителей.
Каждый дисковый накопитель, по существу, составлен из некоторого количества битов, от начала до конца слоя диска. Бит четности создается в зависимости от значений битов с каждого из дисковых накопителей.
В нашем примере будем считать, что контроль по четности должен обеспечить четность суммы битов, т.е. сумма всех битов должна давать результат 0 (имеется в виду сложение по модулю 2, т.е. результат сложения битов должен быть четным. – Прим. пер.). Если первый бит первого диска равен 0, первый бит второго диска равен 1, первый бит третьего диска равен 1, первый бит четвертого диска равен 1, то бит контроля по четности для этих битов должен быть равен 1, чтобы дополнить эти биты до четного числа (см. табл. 5.2).
| диск 1: бит 1 | диск 2: бит 1 | диск 3: бит 1 | диск 4: бит 1 | диск 5: бит контроля по четности | Сумма битов |
|---|---|---|---|---|---|
| 0 | 1 | 1 | 1 | 1 | 4(четная) |
Контроль по четности следует понимать как действия, применяемые к отдельным битам. Хотя слой диска содержит много битов, контроль по четности для отдельных битов позволит восстановить все данные. Биты контроля по четности, перечисленные в табл. 5.2, создаются на самом деле по отдельным битам, составляющим слои данных. Несмотря на то, что дисковые накопители разбиваются на куски данных (слои), с возможными размерами по 64 Кб и более, но контроль по четности, как мы вам показали, может быть произведен на уровне отдельных битов. На самом деле контроль по четности вычисляется при помощи алгоритмов более сложных, чем тот, который мы сейчас описали.
Давайте теперь предположим, что диск 3 сломался. В этом случае бит контроля по четности вместе с битами других дисков может быть использован для восстановления отсутствующего бита диска 3, потому что их сумма должна дополнять неизвестный бит диска 3 до четного числа.
Как мы уже объяснили в данном разделе, данные контроля по четности, применяемые в массивах RAID 5, составляются из битов, дополняющих до четного числа сумму одинаково отстоящих от начала битов всех дисковых накопителей. Но вам, конечно,понятно, что было бы непрактичным, чтобы контроллер массива считывал бы все данные со всех дисковых накопителей при каждой операции ввода-вывода. Это было бы неэффективно и медленно.
При создании массива RAID 5 происходит первоначальное обнуление данных и создание битов контроля по четности. В результате создается набор дисковых накопителей без данных, но с полным набором битов контроля по четности.
С этого момента, всякий раз при записи данных на дисковый накопитель, должно производиться чтение данных с диска данных и с диска контроля по четности. Новые данные должны сравниваться со старыми данными, и если какой-либо бит данных поменялся, то данные контроля по четности для этого бита тоже должны быть изменены. Эта проверка производится при помощи логической операции "исключающее ИЛИ" ( XOR, exclusive OR ).Поэтому требуется чтение данных только с диска данных и диска контроля по четности, а не со всех дисков массива. Как только описанная операция вычисления изменений данных контроля по четности будет завершена, запись должна быть произведена на оба диска, т.к. операция с данными контроля по четности затрагивает весь слой данных. Таким образом, для выполнения каждой записи в том RAID 5 производятся четыре физических операции ввода-вывода: два чтения (одно – чтение с диска данных, другое – чтение с диска контроля по четности) и две записи (сами данные и данные контроля по четности). Но в массивах RAID 5 данные контроля по четности равномерно распределены по всем дисковым накопителям, поэтому и нагрузка на накопители будет распределена равномерно.
Рекомендации по применению RAID 5
Так как запись в массив RAID 5 требует дополнительных операций ввода-вывода, то этот уровень RAID можно рекомендовать для дисковых томов, используемых преимущественно для чтения. Поскольку данные контроля по четности равномерно распределены по многим дискам массива, то для операций чтения используются все диски. С учетом этих особенностей можно дать следующие рекомендации:
Как видите, RAID 5 является экономичным решением, но вы расплачиваетесь за это производительностью. А насколько велика может быть эта цена, вы узнаете из дальнейшего материала данной лекции.
(рис 5.12) RAID 10
Как и у RAID 1, каждая операция записи
Рекомендации по применению RAID 10
Уровень
Для правильного конфигурирования и настройки вашей системы RAID, вам нужно понимать различия в производительности различных уровней RAID, о которых мы рассказали в предыдущем разделе. Если вы будете понимать, как работает система RAID и какие действия она осуществляет в различных ситуациях, вы лучше сможете настраивать свою подсистему ввода-вывода. В данном разделе мы внимательно сравним различные показатели производительности, с которыми вы познакомились в предыдущем разделе. В наших примерах мы будем считать, что отдельный дисковый накопитель может выполнять 85 операций произвольного ввода-вывода в секунду.
Производительность чтения не сильно зависит от выбранного вами уровня RAID. Когда операция чтения применяется к массиву RAID, то каждый диск вносит свой вклад в производительность по чтению. Так как для высокой производительности основным препятствием являются операции произвольного ввода-вывода, то мы сейчас рассмотрим эту тему. Вы можете максимально повысить производительность последовательного ввода-вывода, выделив их на отдельный том. Давайте посмотрим, как происходит произвольный ввод-вывод для различных уровней RAID:
n*85 операций в секунду, где n – количество дисковых накопителей в массиве. Если операции чтения будут производиться в большем темпе, то производительность SQL Server снизится.n*85 операций в секунду, где n – количество дисковых накопителей. Вы могли бы инициировать запуск операций ввода-вывода с более высоким темпом, но в этом темпе исполняться они не смогут.Как видите, подсчитать производительность чтения массивов RAID совсем просто. Добавляя достаточное количество дисковых накопителей, так чтобы ваши потребности в производительности ввода-вывода соответствовали этим ограничениям, вы сможете оптимизировать производительность вашей системы.
Производительность записи очень сильно зависит от выбранного вами уровня RAID. И снова, поскольку основные трудности возникают из-за операций произвольного ввода-вывода, то мы их сейчас и рассмотрим. Вы можете максимально повысить производительность последовательного ввода-вывода, выделив их на отдельный том или тома. Давайте посмотрим, как происходит запись произвольных данных для различных уровней RAID:
Как видите, вычислить производительность записи массивов RAID довольно сложно. Добавляя достаточное количество дисковых накопителей, так чтобы ваши потребности в производительности ввода-вывода соответствовали этим ограничениям, вы сможете оптимизировать производительность вашей системы. В следующем разделе вы узнаете, как можно подсчитать количество операций ввода-вывода на один диск в различных обстоятельствах.
Чтобы определить объем нагрузки, приходящейся на отдельные дисковые накопители системы, вам придется выполнить некоторые расчеты. Если вы пользуетесь аппаратным контроллером RAID, то количество операций ввода-вывода в секунду, показываемое монитором производительности
RAID 0
В массивах RAID 0 темп операций ввода-вывода на один диск вычисляется как сумма всех операций чтения и записи для массива, деленная на количество дисков в массиве. Для RAID 0 нужна лишь одна простая и понятная формула:
количество операций на диск = (чтения + записи) / количество дисков
RAID 1
Для массивов RAID 1 вычисления будут несколько более сложными. Так как количество записей удваивается, то число операций ввода-вывода на один диск в секунду равно сумме количества операций чтения и удвоенного количества операций записи для массива, деленной на количество дисков в массиве (для RAID 0 – два). Нужно применять такую формулу:
количество операций на диск = (чтения + (2 * записи)) / 2
Запись в массивы RAID 1 происходит медленней, но они обеспечивают лучшую отказоустойчивость.
RAID 5
Массивы RAID 5 обеспечивают отказоустойчивость, но при записи у них получается очень большая нагрузка на диски. Операции чтения в массивах RAID 5 распределены по многим дисковым накопителям массива, но для записи приходится выполнять четыре физических операции ввода-вывода. Чтобы подсчитать количество операций ввода-вывода, приходящихся на один дисковый накопитель, надо сложить количество операций чтения и учетверенное количество операций записи, а затем разделить на количество дисков в массиве. Поэтому формула для RAID 5 будет такой:
количество операций на диск = (чтения + (4 * записи)) / количество дисков
RAID 10
Скорость записи в массивы
количество операций на диск = (чтения + (2 * записи)) / количество дисков
Давайте сравним разные уровни RAID. Тогда вам станет легче понять, какой уровень RAID лучше подходит для вашей системы. Когда вы сравниваете производительность работы разных уровней RAID, одним из наиболее важных факторов, оказывающих влияние на нее, является соотношение чтения и записи. При выполнении операций чтения производительность различных уровней RAID отличается не сильно, различия относятся в основном к производительности операций записи. Также нужно учитывать, нужна ли вашей системе отказоустойчивость. И наконец, вам следует оценить соотношение стоимости системы и ее емкости. Характеристики для различных уровней RAID перечисленны в табл. 5.3.
| Уровень RAID | Производительность | Отказоустойчивость | Оценка стоимости |
|---|---|---|---|
| RAID 0 | Наилучшая | Без отказоустойчивости | Экономичный |
| RAID 1 | Хорошая | Хорошая | Дорогой |
| RAID 5 | Быстрая для чтения, медленная для записи | Нормальная | Самый экономичный из уровней, обеспечивающих отказоустойчивость |
| Хорошая | Хорошая | Дорогой |
Как видите, наилучший вариант зависит от ваших потребностей. Чтобы понять различие между производительностью RAID 5 и
| Соотношение Чтения/Записи | Операции ввода-вывода RAID 5 (Чтения + (4 * Записи)) / Кол-во дисков | Операции ввода-вывода |
|---|---|---|
| 100% чтений 0% записей |
(500+0)/10 50 операций ввода-вывода на диск |
(500+0)/10 50 операций ввода-вывода на диск |
| 90% чтений 10% записей |
(450+200)/10 65 операций ввода-вывода на диск |
(450+100)/10 55 операций ввода-вывода на диск |
| 75% чтений 25% записей |
(375+500)/10 87.5 операций ввода-вывода на диск |
(375+250)/10 62.5 операций ввода-вывода на диск |
| 50% чтений 50% записей |
(250+1000)/10 125 операций ввода-вывода на диск |
(250+500)/10 75 операций ввода-вывода на диск |
| 0% чтений 100% записей |
(0+2000)/10 200 операций ввода-вывода на диск |
(0+1000)/10 100 операций ввода-вывода на диск |
Как видите, когда соотношение чтения к записи составляет 90%:10%, нагрузка на диски для RAID 5 и
SQL Server очень чувствительна к задержкам ввода-вывода, потому что транзакции обрабатываются алгоритмом SQL Server одновременно. При обычной работе база данных SQL Server взаимодействует с десятками и сотнями приложений. Чтобы поддерживать эту одновременную работу, SQL Server имеет сложную систему блокировок (замков) строк, страниц, экстентов и таблиц, с которой вы познакомитесь в нашей книге. При блокировке каких-либо данных или ресурсов SQL Server, другие процессы должны ждать, пока эти данные или ресурсы не будут разблокированы.
Если длительность выполнения операций ввода-вывода слишком велика, то эти ресурсы будут блокированы недопустимо долго, еще сильнее замедляя работу системы. Кроме того, это повышает вероятность
Кроме того, обработка запросов станет очень медленной. Например, если на вашей системе выполняется сканирование больших таблиц, то для выполнения таких задач часто требуется чтение сотен, тысяч и даже миллионов строк в базах данных. Для миллиона операций ввода-вывода даже небольшие изменения производительности становятся очень важными. Выполнение одного миллиона операций по 10 мс займет около 2,8 часа. А если ваша
Как видите, производительность SQL Server может очень сильно пострадать из-за плохого начального проектирования или плохого конфигурирования
Из материала данной лекции ясно, что вы должны правильно спланировать свою систему ввода-вывода, чтобы не допускать ее перегрузки. Перегрузка
Определение требований к вводу-выводу системы, существующей еще только в виде концепции, может оказаться хоть и сложным, но вполне возможным делом. Однако если у вас нет конкретных данных, на основе которых можно определить требования к вводу-выводу, то вы должны смочь собрать достаточно данных, чтобы можно было сделать обоснованное предположение. В любой ситуации, создание
Определить, сколько места на дисках потребуется для ваших данных, достаточно просто. Объем необходимого места равен сумме следующих величин:
Дисковая память, отводимая для данных, должна иметь достаточно места для хранения данных, которые будут добавлены в вашу базу данных. Рост базы данных в значительной степени определяется вашим бизнесом и вашими клиентами. Чтобы оценить рост вашей системы, можно проводить регулярные проверки существующей базы данных и подсчитывать, как изменился объем дисковой памяти, занимаемой базой данных. Темп роста базы данных должен измеряться несколько месяцев, чтобы можно было определить его закономерности. Рост базы данных может оказаться таким, что удивит вас.
Для новой системы, не имеющей истории, при оценке роста, среди прочих критериев, вы можете воспользоваться количеством заказов на продукцию, умноженным на размер строки. Взяв эти показатели для нескольких периодов времени (например, месяцев или лет), вы получите грубую оценку о скорости роста файлов с данными. Это не даст вам информации о росте индексов. Объем дисковой памяти, необходимой для индексов в расчете на одну строку данных, зависит от конструкции индексов и от объема данных. Для сложного индекса требуется больше места в расчете на одну строку данных, чем для простого индекса. И решение о том, сколько времени система должна существовать в условиях роста – два года, пять лет или дольше, – принимаете вы. Вот так производится оценка, с каким объемом дисковой памяти должна быть сконфигурирована ваша
Определившись с объемом данных, объемом индексов, объемом временной базы данных и с темпом роста, вы можете определить, сколько места на дисках вам потребуется. Затем вы должны учесть место, необходимое для обеспечения отказоустойчивости в массивах RAID. Помните, что в массивах RAID 1 и
И когда вы подсчитаете объем дисковой памяти, необходимой в данный момент, и объем дисковой памяти, необходимой для будущего роста, тогда вы сможете перейти к следующему этапу: оценке производительности. Для правильного конфигурирования
Недостаточно просто сконфигурировать систему так, чтобы она отвечала требованиям к объему необходимой дисковой памяти. Как вы уже знаете из материала данной лекции, конфигурация
Наилучшим способом оценки производительности является изучение аналогичных приложений или систем. Эти данные могут стать отправной точкой для оценки будущих требований. Дополнительную информацию об этом вы получите в лекции 6. Предположим, что вы нашли похожую систему. Тогда для определения необходимого количества дисков вы можете воспользоваться данными, собранными при исследовании этой системы, и информацией, которую вы знаете из данной лекции. Не забудьте учесть влияние уровня RAID, применяемого в той
При планировании размещения дисков принимаются решения о том, как данные должны быть размещены на дисках, а затем пишутся сценарии SQL, которые создадут базу данных. Достоинством создания базы данных при помощи сценариев SQL, а не при помощи SQL Server Enterprise Manager является то, что вы можете пользоваться ими многократно и вносить в них изменения.
В сценариях должно быть отражено количество логических томов, которое имеет ваша система, а также количество физических дисков в этих томах. Важно сбалансировать базу данных так, чтобы все дисковые накопители обрабатывали приблизительно равные количества операций ввода-вывода в секунду. Производительность несбалансированной системы будет ограничена возможностями самого медленного из томов. Вы должны позаботиться, чтобы журнал транзакций и файлы данных были распределены по дисковым накопителям так, чтобы обеспечивалась оптимальная производительность.
Планирование размещения журнала транзакций очень простое. Часто наилучшим решением является использование для журнала транзакций только одного файла данных. Если вам придется добавлять к своей базе данных дополнительные файлы журналов транзакций, не забудьте, что их следует размещать на томах RAID 1 или
Самый простой способ сконфигурировать вашу подсистему ввода-вывода для файлов данных – это сконфигурировать каждый том как состоящий из одинакового числа дисковых накопителей одинакового размера. Во многих случаях вам не потребуется разбивать подсистему ввода-вывода на несколько томов. На самом деле, вы можете быть абсолютно довольны, имея один логический том с одним контроллером. Однако для охвата нескольких контроллеров не следует применять средства расслоения Windows 2000, потому что это вызывает очень большую нагрузку.
Если вы применяете несколько контроллеров, то нужно упростить конфигурацию, применяя одинаковое расслоение и одинаковое количество дисков на каждом из контроллеров. Если вы не можете использовать одинаковое количество дисков на каждом из контроллеров, то для правильного заполнения базы данных вы можете воспользоваться пропорциональным заполнением.
Например, если у вас имеется два тома, один – из 20 дисковых накопителей, а другой – из 10 накопителей, то нужно создать группу файлов из двух файлов данных. (О применении файлов и групп файлов см. лекцию 9.) Первый файл данных нужно поместить на 20-дисковый том, и он должен быть в два раза больше файла данных, размещаемого на 10-дисковый томе. При загрузке данных, SQL Server будет загружать в первый файл в два раза больше данных, чем во второй файл. Благодаря этому интенсивность ввода-вывода будет примерно одинаковой для всех дисков.
Как только вы напишите сценарии SQL, создающие базу данных, останется только запустить их и посмотреть на результат. Если вы допустите ошибку и создастся не такая база данных, какую вы хотели, то исправлять это нужно именно сейчас, а не когда будут загружены данные, а пользователи получат доступ к системе. При использовании сценариев SQL вы можете изменять их и запускать по мере необходимости снова и снова. Ниже приведен пример сценария, использующего много файлов в составе группы файлов для распространения базы данных по нескольким контроллерам:
--
-- Сценарий SQL для создания базы данных, состоящей из нескольких файлов
-- d:, e: и f: - для данных, e: и f: имеют в два раза больше дисковых накопителей,
-- чем имеется у d:, поэтому размер базы данных, распределенной для них в
-- два раза больше, чем для d:. l: используется для журнала.
--
CREATE DATABASE demo
ON
PRIMARY ( NAME = demo1,
FILENAME = 'd:\data\demo_dat1.mdf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20),
( NAME = demo2,
FILENAME = 'e:\data\demo_dat2.ndf',
SIZE = 200MB,
MAXSIZE = 200,
FILEGROWTH = 20),
( NAME = demo3,
FILENAME = 'f:\data\demo_dat3.ndf',
SIZE = 200MB,
MAXSIZE = 200,
FILEGROWTH = 20)
LOG ON
( NAME = demolog1,
FILENAME = 'l:\data\demo_log1.ldf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20)
GO
Информация в данной лекции, особенно в данном разделе, поможет вам создать оптимальную подсистему ввода-вывода для вашей системы SQL Server. В следующем разделе даны несколько советов и рекомендаций, которые помогут вам создавать и исправлять
В данном разделе даны советы и рекомендации о том, как лучше всего организовать применение контроллеров RAID в вашей системе. Некоторые из этих советов и рекомендаций вы уже встретили при чтении данной лекции, а некоторые – новые. Будет замечательно, если некоторые из них помогут вам лучше конфигурировать и использовать свой массив RAID. Следуя этим советам и тщательно следя за состоянием системы, вы сможете избежать проблем с производительностью.
Как вы узнали из данной лекции,
Конфигурируя свою систему, вы должны специально позаботиться о том, чтобы правильно спроектировать и сконфигурировать подсистему ввода-вывода. Конфигурирование
В данной лекции мы изучим подсистему ввода-вывода. Мы начнем с описания работы устройств жестких дисков и расскажем, почему диски имеют фундаментальные ограничения производительности. Затем мы расскажем о разнообразных решениях при помощи доступных вам систем RAID и о характеристиках их производительности. Кроме того, вы научитесь идентифицировать и решать проблемы с производительностью ввода-вывода. В данной лекции также будет дано множество полезных советов и рекомендаций, относящихся к
Дисковые накопители, называемые также "жесткие диски", являются одними из основных компонент компьютеров. Но, как ни удивительно, механическое устройство дисковых накопителей за последние 20 лет не поменялось радикально. По сравнению с первыми моделями, жесткие диски стали гораздо надежней и быстрей, но их основа осталась такой же. С точки зрения производительности, жесткие диски являются одними из наиболее важных аппаратных компонент, требующих настройки. Строго говоря, на самом деле вы не можете настраивать жесткие диски, но, зная характеристики их производительности и ограничения, вы можете конфигурировать свою систему с учетом данных ограничений, осуществляя, фактически, настройку
В качестве компонент для хранения данных в накопителях на жестких дисках применяются одна или нескольких пластин (disk
Накопители на жестких дисках часто состоят не из одной, а из многих пластин, расположенных одна над другой (рис. 5.2). Данные считываются при помощи магнитных головок. Магнитные головки используются как для чтения, так и для записи данных на диск. Так как пластин несколько, то и головок должно быть несколько. Эти головки крепятся на коромыслах (armature), двигающихся внутрь пакета пластин и обратно из него, подобно тонарму с иглой у граммофона. Все головки и коромысла жестко соединены друг с другом, поэтому все головки в каждый из моментов времени находятся в одинаковых местах каждой из пластин. Из-за такой конструкции диска становится целесообразным одновременное чтение или запись сразу всеми его головками. Таким образом, данные записываются и считываются с диска одновременно всеми головками. Поскольку набор дорожек, охватываемых головками в любой из моментов времени, похож на цилиндр, мы говорим, что данные хранятся в цилиндрах (рис. 5.2).

(рис 5.2) Пластина жесткого диска(рис 5.1) Цилиндры жесткого дискаНакопители на жестких дисках могут иметь только одну пластину, а могут – и более шести пластин. Плотность хранения данных на пластинах и количество пластин определяют максимальную емкость (вместимость) накопителя. Некоторые модели накопителей не отличаются почти ничем, кроме количества пластин. Распространенная модель накопителей имеет емкость 9 Гб и три пластины, а накопители модели, не отличающейся ничем, кроме емкости 18 Гб, имеют шесть пластин.
Теперь, когда у вас имеется представление о конструкции накопителя на жестких дисках, давайте ознакомимся с тем, как он работает. Сначала мы расскажем о характеристиках вращения жестких дисков, а затем вы узнаете, как зависит время поиска дорожки жестких дисков от производительности накопителя.
Многие высокопроизводительные жесткие диски вращаются со скоростью 10000 об/мин. Если для доступа к запрошенным данным потребуется полный оборот диска, то этот оборот диска займет приблизительно 6 мс, т.е. 0,006 секунд. Скорость вращения 10000 об/мин соответствует 166,7 оборотам в секунду, поэтому на один оборот требуется 1/166,7 секунды, т.е. около 6 мс.
Чтобы головки накопителя могли прочитать сектор данных, этот сектор должен находиться под головками. Поскольку диск всегда вращается, головка просто должна подождать, пока сектор не подойдет в позицию под нее. Время, необходимое для поворота диска в нужную позицию, когда нужный сектор подойдет под головку, называется задержкой вращения (rotational latency). Задержка вращения может достигать 6 мс (если необходим полный оборот диска), но в среднем она составляет 3 мс.
Задержка вращения добавляется к времени отклика доступа к диску. Поэтому, когда вы выбираете дисковые накопители для своей системы, с точки зрения производительности, длительность задержки вращения чрезвычайно важна. Как вы только что видели, для дисков со скоростью вращения 10000 об/мин, задержка вращения составляет около 3 мс. Диски предыдущего поколения вращались со скоростью 7200 об/мин, у них оборот совершался за 8,3 мс, а средняя задержка вращения составляет около 4,15 мс. Это увеличение средней задержки вращения кажется небольшим, но оно на 38% больше, чем у диска со скоростью вращения 10000 об/мин. Как вы узнаете далее в данной лекции, длительность времени отклика может значительно увеличить время доступа для ввода-вывода.
При доступе к данным, диск должен не только повернуться в такое положение, чтобы головки могли бы прочесть данные, но и головки должны передвинуться на дорожку, на которой находятся данные. Коромысла двигаются к центру диска и наружу, перемещая головки на цилиндр, содержащий нужные данные. Время, необходимое для перемещения головок к местоположению нужных данных, называется временем поиска дорожки или просто временем поиска (seek time), или временем подвода головки к требуемой дорожке диска (см.рис. 5.3).
(рис 5.3) Задержка вращения и время поискаВремя, необходимое для поиска нужной дорожки, зависит, главным образом, от расстояния, которое должны пройти головки диска. Если накопитель осуществляет доступ к данным, хранящимся в последовательном порядке, головки должны перемещаться лишь на небольшое расстояние, и такое перемещение производится быстро. Если доступ производится к данным, располагающимся по всему диску, длительности поиска дорожек могут оказаться более продолжительными. В любом случае, добиваясь минимального времени поиска, вы улучшаете производительность вашей системы.
Время поиска и задержка вращения добавляются ко времени, необходимому для выполнения операции ввода-вывода и, следовательно, снижают производительность дискового накопителя. Для накопителей со скоростью вращения 10000 об/мин, задержка вращения составляет около 3 мс. Время поиска нужной дорожки зависит от размера и скорости дискового накопителя и варианта осуществляемого поиска.
Время перехода головки на соседнюю дорожку (track-to-track
Среднее время поиска дорожки диска (
Максимальное время поиска для дисков данного типа может достигать 13 мс. Поиск дорожки имеет максимальную длительность при переходе от самой внутренней дорожки пластины к самой внешней дорожке или наоборот. Такая ситуация называется поиск по всему диску (full-disk
В данном разделе вы узнаете, насколько быстро дисковые накопители могут выполнять различные виды операций ввода-вывода. Чтобы оценить скорость выполнения операций ввода-вывода, необходимо знать некоторые сведения о дисковом накопителе. Большинство этих сведений можно найти в технических описаниях дисков, сообщаемых их производителями. В данной лекции в качестве примера будут взяты технические характеристики накопителя с емкостью 9,1 Гб и скоростью вращения 10000 об/мин. Другие технические характеристики этого типичного дискового накопителя перечислены в табл. 5.1.
| Техническая характеристика | Значение | Описание |
|---|---|---|
| Емкость диска | 9.1 Гб | Емкость неформатированного диска |
| Скорость вращения | 10000 об/мин | Скорость, с которой вращается диск |
| Скорость передачи данных | 40 Мб/с | Скорость шины SCSI |
| Среднее время поиска | 5,2 мс (для чтения), 6 мс (для записи) | Средняя продолжительность времени, необходимого для поиска нужной дорожки (при операциях произвольного ввода-вывода) |
| Время перехода головки на соседнюю дорожку | 0,6 мс (для чтения), 0,9 мс (для записи) | Продолжительность времени, необходимого для перехода на соседнюю дорожку (при операциях последовательного ввода-вывода) |
| Время поиска по всему диску | 12 мс (для чтения), 13 мс (для записи) | Продолжительность времени, необходимого для перехода от самого внутреннего сектора диска к самому внешнему сектору, или наоборот |
| Средняя задержка | 2,99 мс | Средняя задержка вращения |
| Средняя длительность работы до отказа | 1 000 000 часов | Средний срок службы дискового накопителя |
А теперь мы расскажем, как при помощи подобных технических характеристик вы сможете оценить производительность накопителя на жестких дисках.
Продолжительность времени, необходимого для выполнения операции ввода-вывода, зависит от следующих факторов:
Поэтому время, необходимое для выполнения операции ввода-вывода представляет собой сумму длительностей исполнения описанных здесь этапов плюс время для обработки дополнительных нагрузок в драйвере устройства и в операционной системе. Помните, что итоговая
При последовательном вводе-выводе происходит доступ к данным, расположенным на диске рядом с предыдущими данными. Так как переход головок к соседней дорожке выполняется гораздо быстрее, чем переход к произвольной дорожке, то при выполнении последовательного ввода-вывода можно достичь гораздо большей производительности. Чтобы вы представили себе возможную скорость выполнения последовательного ввода-вывода, рассмотрим пример.
Как мы уже упоминали, типичному дисковому накопителю для выполнения перехода головок к соседней дорожке потребуется около 0,9 мс. Прибавив это время к величине задержки вращения (2,99 мс), вы можете сделать вывод, что каждая операция ввода-вывода займет приблизительно 3,89 мс. Такая длительность теоретически позволяет выполнять 264 операции последовательного ввода-вывода в секунду, т.к. одна секунда содержит 264 интервала времени по 3,89 мс. Но на производительность последовательного ввода-вывода влияют и другие факторы, такие как ограничение пропускной способности интерфейса SCSI 40 Мб/с и компоненты операционной системы: файловая система и драйвер устройства. Эта дополнительная нагрузка определяет максимальную производительность последовательного ввода-вывода, допустимую для данного дискового накопителя, составляющую около 250 операций в секунду (это число зависит от размера передаваемых данных). Как вы узнаете в лекции 6, если ваш диск передает данные со скоростью, превышающей 85% от его производительности, то будут образовываться очереди, поэтому максимальная рекомендуемая производительность ввода-вывода составит 225 операций в секунду.
При произвольном вводе-выводе головки дискового накопителя должны считывать данные с произвольных участков диска. Из-за этих произвольных перемещений головок происходит снижение производительности. Давайте снова вернемся к нашему примеру дискового накопителя. Пусть теперь головки затрачивают не по 0,8 мс, переходя на соседние дорожки, а перемещаются произвольным образом по всему диску. Для поиска произвольной дорожки потребуется в среднем около 6 мс, что в 7,5 раза длительней перехода к соседней дорожке. Для типичной операции произвольного ввода-вывода понадобится примерно 6 мс (в среднем) на перемещение головок к дорожке с данными и еще 2,99 мс на задержку вращения, что составит в сумме 8,99 мс, т.е. теоретически максимально может производиться 111 операций ввода-вывода в секунду (т.к. в одной секунде содержится 111 интервалов времени по 8,99 мс). Далее, мы уже говорили, что если возможности ввода-вывода для диска задействуются более чем на 85%, то образуются очереди. Поэтому максимальная рекомендуемая производительность ввода-вывода составит 94 операции в секунду. А если согласиться с эмпирическим правилом для учета нагрузки на контроллер, то следует ограничить ввод-вывод для данного дискового накопителя 85 операциями ввода-вывода в секунду.
Когда дисковый накопитель выполняет произвольный ввод-вывод, нормальная задержка (время, необходимое для выполнения одной операции ввода-вывода) составит 8,99 мс. Если обращения к диску станут производиться чаще, чем он сможет их обрабатывать, то начнут образовываться очереди и задержка вырастет (см. рис. 5.4). Как видите, чем ближе количество операций в секунду к рекомендованной максимальной производительности накопителя, тем длительней будет задержка.
(рис 5.4) Количество операций ввода-вывода в секунду как функция задержкиНа самом деле, если вы достигните 100-процентного задействования возможностей диска, то очереди возникнут обязательно, а общая производительность резко снизится. Как вы прочтете в нашей книге позднее, SQL Server, как и любая другая система управления реляционными базами данных, очень сильно зависит от задержек ввода-вывода. Если для выполнения операций ввода-вывода требуется чрезмерно много времени, то производительность SQL Server сильно снизится (деградирует) и могут возникнуть такие проблемы, как блокировка (blocking) и зависание (
Как же можно преодолеть ограничения, связанные с производительностью дисковых накопителей? На самом деле, здесь нет ничего хитрого. Следуйте советам, приведенным ниже, и вы сможете создать подсистему ввода-вывода с оптимальной производительностью:
Как вы понимаете, если просто добавлять в систему новые и новые дисковые накопители, то с нею будет очень сложно работать. Поэтому, вместо того, чтобы добавлять десятки или сотни отдельных дисковых накопителей, многие пользователи предпочитают применять массивы RAID (
Как ясно из самого их названия, массивы RAID содержат в себе два или несколько дисковых накопителей, образуя тем самым массив дисковых накопителей. Операционная система воспринимает весь этот массив как один логический диск. Этот логический диск называют также дисковый том, потому что он является набором дисков, кажущихся одним диском. Для пользователей, для приложения и даже (если применяется аппаратный массив RAID) для Microsoft Windows 2000 массив RAID воспринимается как один диск. Во многих случаях, однако, этот один диск будет иметь гораздо больший объем, чем любой из дисков, имеющихся в продаже. Но благодаря массивам RAID можно создавать не только большие логические диски, но также, во многих из конфигураций RAID (уровнях RAID), обеспечивать также и отказоустойчивость логического диска. Эта отказоустойчивость позволяет диску RAID сохранять работоспособность даже при отказе одного или нескольких из отдельных дисковых накопителей, составляющих массив RAID. В следующих разделах мы покажем, как достигаются такие возможности, и расскажем о характеристиках различных уровней RAID.
Мы уже сказали, что массивы RAID могут быть реализованы программно; фактически, Windows 2000 поставляется вместе с программным обеспечением для RAID. Но в данной лекции мы в основном будем рассказывать об аппаратных реализациях RAID, потому что они обладают дополнительными функциональными возможностями. Мы расскажем об этих возможностях в следующих двух разделах и познакомим вас с функциональными возможностями и характеристиками различных уровней RAID.
Аппаратные контроллеры RAID обеспечивают не только основные функциональные возможности RAID, но и некоторые дополнительные средства. Среди этих дополнительных возможностей аппаратных реализаций RAID чаще всего встречается кэш контроллера. В этом разделе вы узнаете о кэше контроллера, кэшах дисковых накопителей и о разнице между внутренними и внешними массивами RAID. Кроме того, вы узнаете о новой технологии ввода-вывода – сетях хранения данных SAN (
Чтобы улучшить производительность ввода-вывода, многие производители поставляют контроллеры, имеющие кэши. Кэш контроллера – это оперативная память, установленная в контроллере дисковых накопителей. Этот кэш применяется для выполнения двух задач:
Как вы узнаете позднее в данной лекции, производительность записи может оказаться критически важной, особенно, когда вы применяете массивы RAID уровня 5. В большинстве случаев контроллер кэша является большим достоинством. Но есть два момента, о которых мы должны вас предостеречь:
Большинство дисковых накопителей тоже содержит кэш с оперативной памятью. Этот кэш имеет меньший объем, чем кэш контроллера. Он может хранить одновременно немного запросов, благодаря чему дисковый накопитель может самостоятельно выполнить лифтовую сортировку (
Имеется два основных типа систем RAID: внутренние и внешние. Эти термины описывают, где находятся алгоритмы работы массивов RAID. В большинстве систем алгоритмы работы RAID находятся на контроллере, который установлен в стойке корпуса компьютера. Такие системы RAID называются внутренними. А у внешней RAID-системы алгоритмы работы находятся в запоминающем устройстве или в запоминающих устройствах, в которых размещены дисковые накопители. Это различие показано на рис. 5-5. Каждый тип систем имеет свои особенности и характеристики. Однако различия между внутренними и внешними системами RAID не будут играть значительную роль в материале данной лекции. Мы рассказали об этих двух разновидностях контроллеров RAID только для полноты изложения. В следующем разделе вы узнаете о различных уровнях RAID. Эти уровни значительно важнее в классификации контроллеров RAID.
(рис 5.5) Внутренние и внешние системы RAID
Одной из новейших технологий, появившихся на рынке, является SAN (
Технология SAN имеет довольно простую концепцию. Внешняя система RAID соединяет адаптер главной шины (
(рис 5.6) Система SANКогда мы писали нашу книгу, несколько компьютеров не могли пользоваться совместно одним логическим диском в составе SAN. Программное обеспечение SAN производит сегментацию дисковой памяти, сопоставляя каждому из компьютеров свой логический диск. Однако у SAN имеются следующие достоинства:
Вы должны оценить не только ограничения, связанные с дисковым накопителем, но и ограничения
Компании, которым необходимо обеспечивать доступность в течение 99,99% времени и более в сочетании с максимальной производительностью, часто обращаются к поставщикам вроде фирмы
Лифтовая сортировка (elevator sorting) – это метод для обеспечения большей эффективности операций произвольного ввода-вывода. Когда диск получает произвольные запросы ввода-вывода, головки должны перемещаться произвольным образом по дорожкам диска, внутрь и наружу. Из-за этих операций произвольного ввода-вывода возникают задержки, мы уже рассказывали вам об этом. Многие из RAID-контроллеров поддерживают лифтовую сортировку, благодаря которой поиск произвольных дорожек становится более эффективным. Когда на контроллере, поддерживающем лифтовую сортировку, собрались в очереди несколько запросов ввода-вывода, то операции ввода-вывода могут быть отсортированы таким образом, чтобы избавиться от лишних перемещений головок. Движения головок, оптимизированные при помощи лифтовой сортировки, напоминают движения лифта, забирающего попутных пассажиров при перемещении между этажами в нужном направлении.
Представьте, что было бы, если бы лифт обслуживал пассажиров строго в том порядке, в котором они нажимали бы на кнопки. Тогда лифт проезжал бы мимо нужных этажей, вместо того, чтобы остановиться и дать людям войти или выйти. Настоящий лифт работает более эффективно, потому что он делает остановки на нужных этажах. Алгоритмы лифтовой сортировки работают примерно так же. Если в очереди имеется более одной операции ввода-вывода, то контроллер найдет наиболее эффективный путь движения головок, который очистит очередь (рис. 5.7).
(рис 5.7) Лифтовая сортировкаКак видите, благодаря лифтовой сортировке накопитель может более эффективно производить переход головок к нужным дорожкам. Общее время поиска дорожек сокращается (хотя время поиска дорожки для отдельных операций иногда может и увеличиться). Однако для работы лифтовой сортировки вы должны иметь на том контроллере или на дисковом накопителе, для которых она будет производиться, несколько или даже много операций ввода-вывода, ожидающих своего исполнения. Такая ситуация часто возникает при чрезмерной нагрузке на подсистему ввода-вывода. Диск, работающий оптимальным образом, во многих случаях имеет лишь одну или две операции ввода-вывода, ожидающие своего исполнения, что делает сомнительной полезность лифтовой сортировки.
Дисковые накопители являются одними из немногих компонент компьютера, имеющими подвижные детали. Диск вращается с большой скоростью и работает нагретым до высокой температуры. Среди деталей накопителя имеются несколько двигателей и подшипников, которые рано или поздно, но обязательно износятся. Среди технических характеристик дискового накопителя имеется средняя продолжительность наработки на отказ (
Главной особенностью массивов RAID является то, что логический диск формируется из двух или нескольких физических дисковых накопителей и воспринимается Windows 2000 (и
Большинство уровней RAID, о которых мы вам расскажем, применяют расслоение данных (data striping), при помощи которого данные с двух или нескольких дисков объединяются в один большой логический RAID-диск. Это делается так: первый фрагмент данных берется с первого диска, второй кусок данных – со второго диска, и так далее. Эти фрагменты данных называются слои (stripes) или куски (
Название "слой" ("кусок") применяется как к фрагментам данных на каждом из отдельных дисков, так и к набору слоев (кусков) для всей совокупности дисков (рис. 5.8).
Таким образом, термин слой может применяться, когда речь идет о данных на каком-либо одном из дисковых накопителей (в этом случае говорят слой диска). Так говорят и о наборе связанных данных с разных дисков (а в этом случае говорят слой RAID ). Помните об этом, когда будете читать данную лекцию и другие места, где рассказывается о массивах RAID.
(рис 5.8) Слои RAIDУровень RAID – это обозначение типа конфигурации массива RAID, поэтому он определяет характеристики массива RAID, не описываемые алгоритмами, содержащимися во внутренних или внешних логических компонентах. Одной из наиболее важных характеристик, определяемых уровнем RAID, является отказоустойчивость. Отказоустойчивость – это способность системы RAID продолжать работать даже после отказов дисковых накопителей, входящих в ее состав. Отказоустойчивость является основной целью, ради которой создаются контроллеры RAID. Так как ваши данные представляют ценность, то вам следует защищать их от возможных отказов дисков. В данном разделе мы изучим наиболее широко применяемые уровни RAID: как они работают, какая у них отказоустойчивость и насколько быстро происходит ввод-вывод данных. Помимо этих уровней RAID, есть и другие, но они применяются редко и мы не будем их рассматривать. Мы расскажем лишь о наиболее широко применяемых уровнях RAID.
RAID 0 являются самым "фундаментальным" из уровней RAID, он обеспечивает только расслоение дисков. Куски данных создаются на каждом из дисковых накопителей, а размер кусков задается контроллером. Для составления большого логического диска применяется метод кругового распределения кусков данных по отдельным дискам массива RAID 0 (рис. 5.9).
(рис 5.8) RAID 0Хотя RAID 0 и причисляется к массивам RAID, однако данный уровень RAID не обеспечивает избыточности (
Рекомендации по применению RAID 0
Как правило, нельзя рекомендовать применять RAID 0 для хранения файлов данных SQL Server. Так как данные в базе данных очень важны для вашего бизнеса, то их потеря может погубить вашу фирму. Массивы RAID 0 не защищают от отказов дисков, поэтому вам не следует применять их ни для каких критически важных компонент, таких как операционная система, журнал транзакций или файлы базы данных.
RAID 1 являются "фундаментальным" уровнем RAID, обеспечивающим отказоустойчивость. В алгоритме RAID 1, называющемся также "зеркальное отражение", предусмотрено изготовление дублирующей копии вашего диска с данными. Дублирующая копия содержит ту же самую информацию, что имеется и на первоначальном диске (рис. 5.10). При отказе диска в строй вступит диск-дубль, и вы не потеряете данные. Так как на каждом диске (и на первоначальном, и на зеркале) хранятся все данные, то расслоение данных отсутствует. В RAID 1 второй диск применяется для дублирования первого, поэтому общий объем логического тома RAID 1 совпадает с объемом одного дискового накопителя. RAID 1 является дорогостоящим решением: при удвоении количества применяемых дисков вы взамен не получаете никакого увеличения объема дисковой памяти, но зато он обеспечивает высокий уровень отказоустойчивости.
(рис 5.10) RAID 1Для томов RAID 1 операция ввода-вывода не считается завершенной, пока контроллер не запишет данные на оба дисковых накопителя. Пока этого не произойдет, нет и безопасности для данных при отказе одного из дисков. После того, как данные будут записаны на оба дисковых накопителя, восстановление данных станет возможным при отказе любого из дисков. Поэтому, если запись данных на один из дисков займет времени больше, чем запись этих же данных на другой диск, то общая задержка будет равна максимальной из двух задержек для разных дисков.
Запись данных на оба диска также снижает производительность логического дискового накопителя. При подсчете количества операций ввода-вывода, производимых на всех дисках массива, нужно умножать количество записей на 2. Чтение данных производится только с одного из дисков. Скорости работы дисков могут отличаться, потому что головки одного из дисков могут оказаться в другом положении, чем головки другого диска, и из-за этого время поиска нужной дорожки может оказаться более длительным. Положение головок может быть разным из-за функции уровня RAID 1, называющейся параллельный поиск (
Благодаря параллельному поиску, диски, входящие в состав массива RAID 1, могут производить чтение дисков независимо друг от друга. Параллельный поиск возможен потому, что чтение может производиться каждый раз лишь только на одном из дисков. Большинство из производителей контроллеров поддерживают параллельный поиск. Применение параллельного поиска повышает производительность, потому что обработка ввода-вывода распределяется по двум дискам, вместо одного диска. Но, из-за того, что головки движутся независимо, а запись должна быть выполнена обеими головками, общая задержка записи равна большей из двух задержек для каждого из отдельных дисков.
Рекомендации по применению RAID 1
RAID 1 обеспечивает высокую степень отказоустойчивости и высокую производительность. RAID 1 является прекрасным решением для случаев, когда все данные способны уместиться на одном диске. Ниже даны некоторые рекомендации по применению RAID 1:
Из дальнейшего материала в данной лекции вы узнаете, что в случаях, когда для хранения данных требуется более одного диска, можно применять и другие решения, обеспечивающие отказоустойчивость. RAID 1 является прекрасным решением для случаев, когда требуется отказоустойчивость и данные способны уместиться на одном диске.
RAID 5 являются отказоустойчивым уровнем RAID, в котором для защиты данных применяется контроль по четности. Каждый слой данных (stripe) RAID создает информацию для контроля по четности, хранимую на одном из дисков в составе слоя. В сочетании с другими дисками в составе слоя RAID, информация для контроля по четности может быть использована для воссоздания данных с любого из дисков слоя. Поэтому массивы RAID 5
(рис 5.11) RAID 5Достоинством RAID 5 является то, что дисковая память, доступная при применении этого уровня RAID, составляет (n-1)*(объем одного диска) где n равно количеству дисков в массиве. Так, массив RAID 5, составленный из 10 дисков, будет иметь объем, как у 9 дисков, что делает его экономичным и в то же время отказоустойчивым решением.
К сожалению, массивы RAID 5 имеют недостатки, связанные с производительностью. Обработка информации для контроля по четности приводит к дополнительной нагрузке на компьютер. При записи данных в массив RAID 5 требуется чтение как слоя данных с целевого диска, так и слоя с информацией для контроля по четности, затем потребуется перерасчет информации контроля по четности, а затем должна быть произведена запись обоих слоев данных. Таким образом, как видите, запись в массив RAID 5 производит фактически четыре физических операции ввода-вывода.
В массивах RAID 5 для данных каждого из слоев на каждом из дисковых накопителей создается бит контроля по четности. Бит контроля по четности является дополнительным элементом данных, благодаря которому, имея биты из набора данных, по которому он был создан, можно узнать другие биты из набора данных. Бит контроля по четности создается так: все остальные биты суммируются, а затем определяется, какое значение он должен иметь, чтобы получилось четное (или нечетное число). Бит контроля по четности, в сочетании с остальными битами, может применяться, чтобы восстановить значение потерянного бита.
Давайте разберем работу контроля по четности на примере. В нашем примере мы будем считать, что система RAID 5 содержит пять дисковых накопителей.
Каждый дисковый накопитель, по существу, составлен из некоторого количества битов, от начала до конца слоя диска. Бит четности создается в зависимости от значений битов с каждого из дисковых накопителей.
В нашем примере будем считать, что контроль по четности должен обеспечить четность суммы битов, т.е. сумма всех битов должна давать результат 0 (имеется в виду сложение по модулю 2, т.е. результат сложения битов должен быть четным. – Прим. пер.). Если первый бит первого диска равен 0, первый бит второго диска равен 1, первый бит третьего диска равен 1, первый бит четвертого диска равен 1, то бит контроля по четности для этих битов должен быть равен 1, чтобы дополнить эти биты до четного числа (см. табл. 5.2).
| диск 1: бит 1 | диск 2: бит 1 | диск 3: бит 1 | диск 4: бит 1 | диск 5: бит контроля по четности | Сумма битов |
|---|---|---|---|---|---|
| 0 | 1 | 1 | 1 | 1 | 4(четная) |
Контроль по четности следует понимать как действия, применяемые к отдельным битам. Хотя слой диска содержит много битов, контроль по четности для отдельных битов позволит восстановить все данные. Биты контроля по четности, перечисленные в табл. 5.2, создаются на самом деле по отдельным битам, составляющим слои данных. Несмотря на то, что дисковые накопители разбиваются на куски данных (слои), с возможными размерами по 64 Кб и более, но контроль по четности, как мы вам показали, может быть произведен на уровне отдельных битов. На самом деле контроль по четности вычисляется при помощи алгоритмов более сложных, чем тот, который мы сейчас описали.
Давайте теперь предположим, что диск 3 сломался. В этом случае бит контроля по четности вместе с битами других дисков может быть использован для восстановления отсутствующего бита диска 3, потому что их сумма должна дополнять неизвестный бит диска 3 до четного числа.
Как мы уже объяснили в данном разделе, данные контроля по четности, применяемые в массивах RAID 5, составляются из битов, дополняющих до четного числа сумму одинаково отстоящих от начала битов всех дисковых накопителей. Но вам, конечно,понятно, что было бы непрактичным, чтобы контроллер массива считывал бы все данные со всех дисковых накопителей при каждой операции ввода-вывода. Это было бы неэффективно и медленно.
При создании массива RAID 5 происходит первоначальное обнуление данных и создание битов контроля по четности. В результате создается набор дисковых накопителей без данных, но с полным набором битов контроля по четности.
С этого момента, всякий раз при записи данных на дисковый накопитель, должно производиться чтение данных с диска данных и с диска контроля по четности. Новые данные должны сравниваться со старыми данными, и если какой-либо бит данных поменялся, то данные контроля по четности для этого бита тоже должны быть изменены. Эта проверка производится при помощи логической операции "исключающее ИЛИ" ( XOR, exclusive OR ).Поэтому требуется чтение данных только с диска данных и диска контроля по четности, а не со всех дисков массива. Как только описанная операция вычисления изменений данных контроля по четности будет завершена, запись должна быть произведена на оба диска, т.к. операция с данными контроля по четности затрагивает весь слой данных. Таким образом, для выполнения каждой записи в том RAID 5 производятся четыре физических операции ввода-вывода: два чтения (одно – чтение с диска данных, другое – чтение с диска контроля по четности) и две записи (сами данные и данные контроля по четности). Но в массивах RAID 5 данные контроля по четности равномерно распределены по всем дисковым накопителям, поэтому и нагрузка на накопители будет распределена равномерно.
Рекомендации по применению RAID 5
Так как запись в массив RAID 5 требует дополнительных операций ввода-вывода, то этот уровень RAID можно рекомендовать для дисковых томов, используемых преимущественно для чтения. Поскольку данные контроля по четности равномерно распределены по многим дискам массива, то для операций чтения используются все диски. С учетом этих особенностей можно дать следующие рекомендации:
Как видите, RAID 5 является экономичным решением, но вы расплачиваетесь за это производительностью. А насколько велика может быть эта цена, вы узнаете из дальнейшего материала данной лекции.
(рис 5.12) RAID 10
Как и у RAID 1, каждая операция записи
Рекомендации по применению RAID 10
Уровень
Для правильного конфигурирования и настройки вашей системы RAID, вам нужно понимать различия в производительности различных уровней RAID, о которых мы рассказали в предыдущем разделе. Если вы будете понимать, как работает система RAID и какие действия она осуществляет в различных ситуациях, вы лучше сможете настраивать свою подсистему ввода-вывода. В данном разделе мы внимательно сравним различные показатели производительности, с которыми вы познакомились в предыдущем разделе. В наших примерах мы будем считать, что отдельный дисковый накопитель может выполнять 85 операций произвольного ввода-вывода в секунду.
Производительность чтения не сильно зависит от выбранного вами уровня RAID. Когда операция чтения применяется к массиву RAID, то каждый диск вносит свой вклад в производительность по чтению. Так как для высокой производительности основным препятствием являются операции произвольного ввода-вывода, то мы сейчас рассмотрим эту тему. Вы можете максимально повысить производительность последовательного ввода-вывода, выделив их на отдельный том. Давайте посмотрим, как происходит произвольный ввод-вывод для различных уровней RAID:
n*85 операций в секунду, где n – количество дисковых накопителей в массиве. Если операции чтения будут производиться в большем темпе, то производительность SQL Server снизится.n*85 операций в секунду, где n – количество дисковых накопителей. Вы могли бы инициировать запуск операций ввода-вывода с более высоким темпом, но в этом темпе исполняться они не смогут.Как видите, подсчитать производительность чтения массивов RAID совсем просто. Добавляя достаточное количество дисковых накопителей, так чтобы ваши потребности в производительности ввода-вывода соответствовали этим ограничениям, вы сможете оптимизировать производительность вашей системы.
Производительность записи очень сильно зависит от выбранного вами уровня RAID. И снова, поскольку основные трудности возникают из-за операций произвольного ввода-вывода, то мы их сейчас и рассмотрим. Вы можете максимально повысить производительность последовательного ввода-вывода, выделив их на отдельный том или тома. Давайте посмотрим, как происходит запись произвольных данных для различных уровней RAID:
Как видите, вычислить производительность записи массивов RAID довольно сложно. Добавляя достаточное количество дисковых накопителей, так чтобы ваши потребности в производительности ввода-вывода соответствовали этим ограничениям, вы сможете оптимизировать производительность вашей системы. В следующем разделе вы узнаете, как можно подсчитать количество операций ввода-вывода на один диск в различных обстоятельствах.
Чтобы определить объем нагрузки, приходящейся на отдельные дисковые накопители системы, вам придется выполнить некоторые расчеты. Если вы пользуетесь аппаратным контроллером RAID, то количество операций ввода-вывода в секунду, показываемое монитором производительности
RAID 0
В массивах RAID 0 темп операций ввода-вывода на один диск вычисляется как сумма всех операций чтения и записи для массива, деленная на количество дисков в массиве. Для RAID 0 нужна лишь одна простая и понятная формула:
количество операций на диск = (чтения + записи) / количество дисков
RAID 1
Для массивов RAID 1 вычисления будут несколько более сложными. Так как количество записей удваивается, то число операций ввода-вывода на один диск в секунду равно сумме количества операций чтения и удвоенного количества операций записи для массива, деленной на количество дисков в массиве (для RAID 0 – два). Нужно применять такую формулу:
количество операций на диск = (чтения + (2 * записи)) / 2
Запись в массивы RAID 1 происходит медленней, но они обеспечивают лучшую отказоустойчивость.
RAID 5
Массивы RAID 5 обеспечивают отказоустойчивость, но при записи у них получается очень большая нагрузка на диски. Операции чтения в массивах RAID 5 распределены по многим дисковым накопителям массива, но для записи приходится выполнять четыре физических операции ввода-вывода. Чтобы подсчитать количество операций ввода-вывода, приходящихся на один дисковый накопитель, надо сложить количество операций чтения и учетверенное количество операций записи, а затем разделить на количество дисков в массиве. Поэтому формула для RAID 5 будет такой:
количество операций на диск = (чтения + (4 * записи)) / количество дисков
RAID 10
Скорость записи в массивы
количество операций на диск = (чтения + (2 * записи)) / количество дисков
Давайте сравним разные уровни RAID. Тогда вам станет легче понять, какой уровень RAID лучше подходит для вашей системы. Когда вы сравниваете производительность работы разных уровней RAID, одним из наиболее важных факторов, оказывающих влияние на нее, является соотношение чтения и записи. При выполнении операций чтения производительность различных уровней RAID отличается не сильно, различия относятся в основном к производительности операций записи. Также нужно учитывать, нужна ли вашей системе отказоустойчивость. И наконец, вам следует оценить соотношение стоимости системы и ее емкости. Характеристики для различных уровней RAID перечисленны в табл. 5.3.
| Уровень RAID | Производительность | Отказоустойчивость | Оценка стоимости |
|---|---|---|---|
| RAID 0 | Наилучшая | Без отказоустойчивости | Экономичный |
| RAID 1 | Хорошая | Хорошая | Дорогой |
| RAID 5 | Быстрая для чтения, медленная для записи | Нормальная | Самый экономичный из уровней, обеспечивающих отказоустойчивость |
| Хорошая | Хорошая | Дорогой |
Как видите, наилучший вариант зависит от ваших потребностей. Чтобы понять различие между производительностью RAID 5 и
| Соотношение Чтения/Записи | Операции ввода-вывода RAID 5 (Чтения + (4 * Записи)) / Кол-во дисков | Операции ввода-вывода |
|---|---|---|
| 100% чтений 0% записей |
(500+0)/10 50 операций ввода-вывода на диск |
(500+0)/10 50 операций ввода-вывода на диск |
| 90% чтений 10% записей |
(450+200)/10 65 операций ввода-вывода на диск |
(450+100)/10 55 операций ввода-вывода на диск |
| 75% чтений 25% записей |
(375+500)/10 87.5 операций ввода-вывода на диск |
(375+250)/10 62.5 операций ввода-вывода на диск |
| 50% чтений 50% записей |
(250+1000)/10 125 операций ввода-вывода на диск |
(250+500)/10 75 операций ввода-вывода на диск |
| 0% чтений 100% записей |
(0+2000)/10 200 операций ввода-вывода на диск |
(0+1000)/10 100 операций ввода-вывода на диск |
Как видите, когда соотношение чтения к записи составляет 90%:10%, нагрузка на диски для RAID 5 и
SQL Server очень чувствительна к задержкам ввода-вывода, потому что транзакции обрабатываются алгоритмом SQL Server одновременно. При обычной работе база данных SQL Server взаимодействует с десятками и сотнями приложений. Чтобы поддерживать эту одновременную работу, SQL Server имеет сложную систему блокировок (замков) строк, страниц, экстентов и таблиц, с которой вы познакомитесь в нашей книге. При блокировке каких-либо данных или ресурсов SQL Server, другие процессы должны ждать, пока эти данные или ресурсы не будут разблокированы.
Если длительность выполнения операций ввода-вывода слишком велика, то эти ресурсы будут блокированы недопустимо долго, еще сильнее замедляя работу системы. Кроме того, это повышает вероятность
Кроме того, обработка запросов станет очень медленной. Например, если на вашей системе выполняется сканирование больших таблиц, то для выполнения таких задач часто требуется чтение сотен, тысяч и даже миллионов строк в базах данных. Для миллиона операций ввода-вывода даже небольшие изменения производительности становятся очень важными. Выполнение одного миллиона операций по 10 мс займет около 2,8 часа. А если ваша
Как видите, производительность SQL Server может очень сильно пострадать из-за плохого начального проектирования или плохого конфигурирования
Из материала данной лекции ясно, что вы должны правильно спланировать свою систему ввода-вывода, чтобы не допускать ее перегрузки. Перегрузка
Определение требований к вводу-выводу системы, существующей еще только в виде концепции, может оказаться хоть и сложным, но вполне возможным делом. Однако если у вас нет конкретных данных, на основе которых можно определить требования к вводу-выводу, то вы должны смочь собрать достаточно данных, чтобы можно было сделать обоснованное предположение. В любой ситуации, создание
Определить, сколько места на дисках потребуется для ваших данных, достаточно просто. Объем необходимого места равен сумме следующих величин:
Дисковая память, отводимая для данных, должна иметь достаточно места для хранения данных, которые будут добавлены в вашу базу данных. Рост базы данных в значительной степени определяется вашим бизнесом и вашими клиентами. Чтобы оценить рост вашей системы, можно проводить регулярные проверки существующей базы данных и подсчитывать, как изменился объем дисковой памяти, занимаемой базой данных. Темп роста базы данных должен измеряться несколько месяцев, чтобы можно было определить его закономерности. Рост базы данных может оказаться таким, что удивит вас.
Для новой системы, не имеющей истории, при оценке роста, среди прочих критериев, вы можете воспользоваться количеством заказов на продукцию, умноженным на размер строки. Взяв эти показатели для нескольких периодов времени (например, месяцев или лет), вы получите грубую оценку о скорости роста файлов с данными. Это не даст вам информации о росте индексов. Объем дисковой памяти, необходимой для индексов в расчете на одну строку данных, зависит от конструкции индексов и от объема данных. Для сложного индекса требуется больше места в расчете на одну строку данных, чем для простого индекса. И решение о том, сколько времени система должна существовать в условиях роста – два года, пять лет или дольше, – принимаете вы. Вот так производится оценка, с каким объемом дисковой памяти должна быть сконфигурирована ваша
Определившись с объемом данных, объемом индексов, объемом временной базы данных и с темпом роста, вы можете определить, сколько места на дисках вам потребуется. Затем вы должны учесть место, необходимое для обеспечения отказоустойчивости в массивах RAID. Помните, что в массивах RAID 1 и
И когда вы подсчитаете объем дисковой памяти, необходимой в данный момент, и объем дисковой памяти, необходимой для будущего роста, тогда вы сможете перейти к следующему этапу: оценке производительности. Для правильного конфигурирования
Недостаточно просто сконфигурировать систему так, чтобы она отвечала требованиям к объему необходимой дисковой памяти. Как вы уже знаете из материала данной лекции, конфигурация
Наилучшим способом оценки производительности является изучение аналогичных приложений или систем. Эти данные могут стать отправной точкой для оценки будущих требований. Дополнительную информацию об этом вы получите в лекции 6. Предположим, что вы нашли похожую систему. Тогда для определения необходимого количества дисков вы можете воспользоваться данными, собранными при исследовании этой системы, и информацией, которую вы знаете из данной лекции. Не забудьте учесть влияние уровня RAID, применяемого в той
При планировании размещения дисков принимаются решения о том, как данные должны быть размещены на дисках, а затем пишутся сценарии SQL, которые создадут базу данных. Достоинством создания базы данных при помощи сценариев SQL, а не при помощи SQL Server Enterprise Manager является то, что вы можете пользоваться ими многократно и вносить в них изменения.
В сценариях должно быть отражено количество логических томов, которое имеет ваша система, а также количество физических дисков в этих томах. Важно сбалансировать базу данных так, чтобы все дисковые накопители обрабатывали приблизительно равные количества операций ввода-вывода в секунду. Производительность несбалансированной системы будет ограничена возможностями самого медленного из томов. Вы должны позаботиться, чтобы журнал транзакций и файлы данных были распределены по дисковым накопителям так, чтобы обеспечивалась оптимальная производительность.
Планирование размещения журнала транзакций очень простое. Часто наилучшим решением является использование для журнала транзакций только одного файла данных. Если вам придется добавлять к своей базе данных дополнительные файлы журналов транзакций, не забудьте, что их следует размещать на томах RAID 1 или
Самый простой способ сконфигурировать вашу подсистему ввода-вывода для файлов данных – это сконфигурировать каждый том как состоящий из одинакового числа дисковых накопителей одинакового размера. Во многих случаях вам не потребуется разбивать подсистему ввода-вывода на несколько томов. На самом деле, вы можете быть абсолютно довольны, имея один логический том с одним контроллером. Однако для охвата нескольких контроллеров не следует применять средства расслоения Windows 2000, потому что это вызывает очень большую нагрузку.
Если вы применяете несколько контроллеров, то нужно упростить конфигурацию, применяя одинаковое расслоение и одинаковое количество дисков на каждом из контроллеров. Если вы не можете использовать одинаковое количество дисков на каждом из контроллеров, то для правильного заполнения базы данных вы можете воспользоваться пропорциональным заполнением.
Например, если у вас имеется два тома, один – из 20 дисковых накопителей, а другой – из 10 накопителей, то нужно создать группу файлов из двух файлов данных. (О применении файлов и групп файлов см. лекцию 9.) Первый файл данных нужно поместить на 20-дисковый том, и он должен быть в два раза больше файла данных, размещаемого на 10-дисковый томе. При загрузке данных, SQL Server будет загружать в первый файл в два раза больше данных, чем во второй файл. Благодаря этому интенсивность ввода-вывода будет примерно одинаковой для всех дисков.
Как только вы напишите сценарии SQL, создающие базу данных, останется только запустить их и посмотреть на результат. Если вы допустите ошибку и создастся не такая база данных, какую вы хотели, то исправлять это нужно именно сейчас, а не когда будут загружены данные, а пользователи получат доступ к системе. При использовании сценариев SQL вы можете изменять их и запускать по мере необходимости снова и снова. Ниже приведен пример сценария, использующего много файлов в составе группы файлов для распространения базы данных по нескольким контроллерам:
--
-- Сценарий SQL для создания базы данных, состоящей из нескольких файлов
-- d:, e: и f: - для данных, e: и f: имеют в два раза больше дисковых накопителей,
-- чем имеется у d:, поэтому размер базы данных, распределенной для них в
-- два раза больше, чем для d:. l: используется для журнала.
--
CREATE DATABASE demo
ON
PRIMARY ( NAME = demo1,
FILENAME = 'd:\data\demo_dat1.mdf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20),
( NAME = demo2,
FILENAME = 'e:\data\demo_dat2.ndf',
SIZE = 200MB,
MAXSIZE = 200,
FILEGROWTH = 20),
( NAME = demo3,
FILENAME = 'f:\data\demo_dat3.ndf',
SIZE = 200MB,
MAXSIZE = 200,
FILEGROWTH = 20)
LOG ON
( NAME = demolog1,
FILENAME = 'l:\data\demo_log1.ldf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20)
GO
Информация в данной лекции, особенно в данном разделе, поможет вам создать оптимальную подсистему ввода-вывода для вашей системы SQL Server. В следующем разделе даны несколько советов и рекомендаций, которые помогут вам создавать и исправлять
В данном разделе даны советы и рекомендации о том, как лучше всего организовать применение контроллеров RAID в вашей системе. Некоторые из этих советов и рекомендаций вы уже встретили при чтении данной лекции, а некоторые – новые. Будет замечательно, если некоторые из них помогут вам лучше конфигурировать и использовать свой массив RAID. Следуя этим советам и тщательно следя за состоянием системы, вы сможете избежать проблем с производительностью.
Как вы узнали из данной лекции,
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.