Основы систем хранения данных::Журнал СА 3.2003
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Наука и технологии
Подписка
Где купить
Авторам
Рекламодателям
Архив номеров
Контакты
   

  Опросы
  Статьи

Рынок труда  

Системные администраторы по-прежнему востребованы и незаменимы

Системные администраторы, практически, есть везде. Порой их не видно и не слышно,

 Читать далее...

Учебные центры  

Карьерные мечты нужно воплощать! А мы поможем

Школа Bell Integrator открывает свои двери для всех, кто хочет освоить перспективную

 Читать далее...

Гость номера  

Дмитрий Галов: «Нельзя сказать, что люди становятся доверчивее, скорее эволюционирует ландшафт киберугроз»

Использование мобильных устройств растет. А вместе с ними быстро растет количество мобильных

 Читать далее...

Прошу слова  

Твердая рука в бархатной перчатке: принципы soft skills

Лауреат Нобелевской премии, специалист по рынку труда, профессор Лондонской школы экономики Кристофер

 Читать далее...

Как хорошо вы это знаете  

Портал Инкоманд. Для чего он? Для кого? Какие проблемы решает?

Компания «ЕМДЕВ» – создатель интернет-портала, предлагает всем желающим протестировать себя на

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 10017
Комментарии: 0
Потоковая обработка данных

 Читать далее...

19.03.2018г.
Просмотров: 8228
Комментарии: 0
Релевантный поиск с использованием Elasticsearch и Solr

 Читать далее...

19.03.2018г.
Просмотров: 8329
Комментарии: 0
Конкурентное программирование на SCALA

 Читать далее...

19.03.2018г.
Просмотров: 5287
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 5962
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

Друзья сайта  

 Основы систем хранения данных

Архив номеров / 2003 / Выпуск №3 (4) / Основы систем хранения данных

Рубрика: Администрирование /  Оборудование

АЛЕКСЕЙ СЕРЕБРЯКОВ

Основы систем хранения данных

Часть 1

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

Мы начнем с обсуждения базовых понятий, поэтому предварительное знакомство читателя с дисковыми системами и самими жесткими дисками не обязательно, но крайне желательно, так же как и владение минимально необходимой терминологией.

По ходу изложения мы обсудим критерии производительности дисков, протоколы IDE и SCSI, и почему отдельные IDE-диски обычно более производительны, чем аналогичные по характеристикам диски SCSI. Какие характеристики дисков, публикуемые в спецификациях производителя важны, а к каким надо относиться с долей скептицизма. Мы вплотную разберемся с характеристиками шин и интерфейсов дисков, начиная с ATA-1 (устаревшего, но все еще интересного в историческом аспекте) до новейшего Serial ATA, SCSI и ее реинкарнациями, и закончим FC-AL (Fibre Channel – Arbitrated Loop) и FC-SW (Fibre Channel Switched), а также новейшей (но пока не испытанной на практике) iSCSI. Заглянем во внутренности RAID-массивов и RAID-контроллеров, раз и навсегда уясним разницу между RAID-01 и RAID-10 (очень часто эти термины используются взаимозаменяемо и, как следствие, некорректно), попытаемся понять, какой из уровней RAID для какого типа приложений является наиболее оптимальным.

Мы рассмотрим и логическую часть систем хранения данных: файловые системы разных операционных систем, их преимущества и недостатки, а также программные менеджеры томов (software volume managers, иногда я буду вынужден использовать кальку с английских терминов просто по причине отсутствия нужных в русском языке). Ну и конечно, я зачастую буду использовать примеры из реальной жизни, начиная от систем начального уровня и заканчивая high-end платформами. Тут я вынужден заметить, что все в этой статье «по умолчанию» относится к дискам SCSI и UNIX-подобным операционным системам. SCSI – потому что диски ATA неприменимы даже в системах класса «ниже среднего» (почему именно – читаете ниже), а UNIX – просто потому, что я знаком с ним гораздо лучше, чем с платформой Wintel.

Но начнем с терминологии. На данном этапе, пока мы обсуждаем физические характеристики жестких дисков, я буду использовать следующие термины:

  • жесткий диск (чаще просто «диск») – в отношении физического устройства целиком (что, в общем-то, очевидно);
  • контроллер диска (drive controller) – в отношении схем электрики и электроники (процессор, память, схемы управления и электропитания), установленной непосредственно на жестком диске;
  • шина (bus) – в отношении схем передачи данных от одного устройства другому. При этом я обязательно буду уточнять, о какой именно шине речь: будь то системная шина или дисковая, шина памяти или какая-то другая;
  • контроллер шины (bus controller) – любое устройство, предназначенное для соединения системной шины ввода/вывода компьютера и устройств хранения. Русскоязычный термин «контроллер шины» не совсем корректен, поэтому в тексте я буду также использовать термины «контроллер» и «адаптер», потому что иногда один подходит лучше другого. В общем случае понимать под этим термином следует любой SCSI, Fibre Channel или Fireware адаптер, как в виде платы расширения для слотов PCI, так и интегрированный на материнской плате;
  • ATA – любое устройство, использующее IDE-протокол. Данные устройства, более известные как (E)IDE-диски («поблагодарим» Western Digital за внесение путаницы в терминологию), не имеют контроллера шины как такового. Та часть ATA-шины, имеющая привычного вида ATA-разъемы и находящаяся на материнской плате, является не более чем электрическим интерфейсом и минимальными схемами буферизации, позволяющими ATA-устройству взаимодействовать с системной шиной без особых проблем. Но подробней об этом дальше;
  • SCSI (Small Computer Simple Interface) – любое устройство, использующее один из множества SCSI-протоколов, начиная от SCSI-2 и заканчивая iSCSI.

Все вышеперечисленное относится к физическим устройствам, к терминологии логических устройств мы обратимся позже. В процессе обсуждения я позволю себе небольшие отступления для разъяснения новых терминов.

Итак, для начала давайте рассмотрим физические составляющие обычного жесткого диска. Это комплексное устройство, продукт человеческой изобретательности и сумма высоких технологий, механики и электроники, в котором ни одна часть по отдельности не является определяющей скорость или надежность диска в целом как устройства.

Но по порядку, точнее, по составляющим:

  • корпус диска;
  • электродвигатель и подшипники;
  • магнитные пластины;
  • магнитные головки и их привод;
  • контроллер диска;
  • схемы электропитания.

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

Тут следует отвлечься и уточнить, что скорость вращения пластин является одним из основных показателей общей производительности диска. Чем выше скорость вращения шпинделя двигателя, тем будут лучше средние показатели скорости чтения-записи данных для диска в целом. Но в то же время чем выше скорость вращения, тем выше вибрация и тепловыделение. Кроме того, с ростом скорости вращения аэродинамические завихрения по внешнему краю пластин начинают создавать дополнительные проблемы. Только из-за этих объективных инженерных трудностей все еще нет дисков со скоростью вращения пластин, скажем, 50000 об/мин.

Магнитные пластины, наряду с подшипниками двигателя и магнитными головками, являются еще одним продуктом высоких технологий. Обычно они изготовляются из алюминиевого сплава (хотя используются и другие материалы, например, серия дисков IBM DTLA со стеклянными пластинами) и покрываются магнитным слоем. Число пластин в диске может изменяться от одной до четырех-пяти, в зависимости от его емкости.

Поверхность пластин сверхровная, так как качество поверхности пластин определяет такие характеристики диска, как число ошибок на единицу поверхности и величину зазора между пластинами и магнитными головками при работе диска, которые, в свою очередь, определяют такой важный параметр, как плотность записи. Под плотностью записи понимают количество бит данных, которые могут быть размещены на 1 квадратном дюйме поверхности пластины. («Успешно» – ключевое слово, неуспешно записанные данные нам неинтересны). В общем случае чем выше плотность записи, тем выше емкость диска и, возможно, выше внутренняя пропускная способность диска.

Магнитные головки вместе с их приводом выглядят как обеденная вилка, где сами головки крепятся к «зубьям» вилки (в случае двух и более магнитных пластин на «средних» зубьях размещаются по две головки – сверху и снизу для соседних поверхностей), а привод головок крепится к «ручке». Число головок и скорость их перемещения (правильный термин – позиционирования) обязательно указывается производителем в документации на диск и является еще одним фактором, прямо влияющим на его общую производительность.

Скорость позиционирования головок определяется как «время доступа» (access time). В реальной жизни наибольший интерес представляют: время доступа на соседнюю дорожку, время доступа с первой дорожки на последнюю и среднее время доступа.

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

В начале движения идет фаза разгона головок, а в конце пути следует фаза торможения. Естественно, что использование такой технологии позволяет существенно уменьшить время доступа, особенно при частых перемещениях головок на большие расстояния.

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

Контроллер диска – плата, монтируемая на самом диске. Включает микропроцессор и его программное обеспечение, блоки кэш-памяти, интерфейс шины и контуры электропитания.

Микропроцессор контролирует все операции диска: от параметров механических частей диска (скорость вращения двигателя, перемещение головок) до обработки данных.

Кэш-память используется для промежуточного хранения данных, перед тем как они будут записаны на диск или переданы в оперативную память компьютера. Непосредственно сам объем кэш-памяти не оказывает заметного влияния на общую производительность диска, однако качество алгоритмов использования кэш-памяти уже может оказаться существенным.

Есть множество методов управления кэш-памятью, и более «умный» диск с меньшим объемом кэша, но более продвинутым адаптивным алгоритмом кэширования, окажется быстрей диска с большим объемом кэша, используемого как простой буфер ввода-вывода.

Интерфейс шины определяется типом используемого протокола шины. Далее мы в деталях рассмотрим наиболее распространенные – IDE, SCSI и Fibre Channel. На текущий момент у каждого из производителей дисков обычно существуют некие базовые модели дисков, с практически одинаковыми характеристиками механической части, но с разным типом интерфейса и, соответственно, разным набором логики.

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

Никогда не подключайте диски через переходники, такие как разветвитель электропитания на радиаторе CPU. Это обязательно приведет к скачкам напряжения и, как следствие, сокращению срока службы диска.

Поскольку мы начали говорить о том, что «не любят» диски, вот еще несколько важных мелочей. Никогда не монтируйте диски «вверх ногами», то есть электроникой вверх. По возможности избегайте монтажа дисков вертикально разъемами вверх или вниз. Все эти положения ведут к повышенным нагрузкам на подшипники двигателя и привод головок, нарушают охлаждение и, в конечном итоге, снижают срок службы диска. Диски не любят перегрева (как, впрочем, и все другие комплектующие). Если вы монтируете несколько дисков один над другим, убедитесь, что зазор между ними, по крайней мере, существует. Установите еще несколько вентиляторов охлаждения.

Диски не любят механических нагрузок и вибрации. При монтаже убедитесь, что все четыре винта крепления дисков затянуты равномерно и достаточно плотно. Ослабление винтов приведет к увеличению вибрации диска и сокращению срока его службы.

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

На этом мы закончим обсуждение физических составляющих жестких дисков и перейдем к знакомству с их логической частью.

Для того чтобы диск можно было использовать, операционная система должна иметь какой-либо способ адресации запросов на ввод/вывод к диску. Существует несколько таких способов, зависящих от типа диска. Теоретически любой жесткий диск можно описать при помощи нескольких параметров, вместе называемых «геометрией диска».

Каждый диск имеет свою «геометрию». Например, геометрия IDE-диска, определяемая как число его цилиндров, головок и секторов, так как она представлена в BIOS компьютера. Важно понимать, что те числа цилиндров головок и секторов, которые вы видите в BIOS компьютера, ни в коей мере не являются реальными значениями. Для упрощения относитесь к ним, как к неким абстрактным значениям, используемым по историческим причинам для борьбы с проблемами дисковой адресации в операционных системах производства Microsoft.

В случае SCSI-дисков все проще – для любой операционной системы они выглядят (при помощи контроллера шины) как непрерывная цепочка блоков данных размером 512 байт. Вот тут и лежит фундаментальная разница между IDE- и SCSI-устройствами. Как я уже говорил, IDE-диски не используют контроллер шины. Вместо этого они имеют интегрированный контроллер диска (отсюда и термин IDE – Integrated Drive Electronic), который общается напрямую с IDE-драйвером операционной системы через минимальную электронику на материнской плате компьютера, также известную, как IDE-разъем. Таким образом, операционная система запрашивает блоки у SCSI-контроллера и физические (хотя и не реальные) сектора у IDE-дисков. Но мы отвлеклись.

Цилиндр – это вертикальная группа дорожек, совпадающих по своему физическому положению на поверхности пластин. В свою очередь, дорожкой называется концентрическая полоса поверхности пластины. Дорожки создаются при низкоуровневом форматировании диска, и их число может изменяться в зависимости от типа и модели диска.

Сектора также создаются на этапе низкоуровнего форматирования (кстати, все современные диски поставляются уже отформатированными на низком уровне, а пользователь не имеет возможности изменить этот формат), и представляют собой часть поверхности дорожки, на которую может быть записано 528 байт информации – 512 байт данных и 16 байт служебной информации, такой как ECC сектора. Обычно на каждой дорожке выделяется несколько запасных секторов, которые используются для замены сбойных секторов только этой дорожки. Это позволяет избежать необходимости перемещения всей дорожки в область резерва в случае появления сбойных секторов.

Легко заметить, что число секторов на дорожку не является фиксированным и изменяется от дорожки к дорожке. Для типичного диска число секторов на внешней, самой длинной (нулевой) дорожке может в два раза превышать число секторов на внутренней, самой короткой дорожке. Но изменение это не может быть плавным: разница в длине между двумя соседними дорожками просто недостаточна для того, чтобы вместить еще один сектор. Поэтому был введен термин «зона», известный как «группа цилиндров». Под зоной понимают группу соседних цилиндров с одинаковым числом секторов, равных числу секторов на самом коротком, т.е. самом внутреннем цилиндре. Число зон на диске может изменяться от 10 и выше. Как и в случае с секторами, в каждой зоне выделяется запасной цилиндр, что в случае появления сбойной дорожки (дорожки, где закончились резервные секторы для замены сбойных) позволяет избежать перемещения всей дорожки в конец диска, как это было раньше. Вот и все о логической структуре диска.

Теперь, когда мы познакомились с устройством жестких дисков, давайте резюмируем основные факторы, влияющие на производительность дисков, и какое влияние на них мы как пользователи можем оказать.

Во-первых, это физические параметры, скорость перемещения головок и скорость вращения шпинделя диска. Оба параметра рассмотрены выше, и непосредственно изменить их мы не в силах.

Во-вторых, качество логики диска, которое мы также не в силах изменить.

Для описания логической суммы этих двух факторов существует еще одна очень важная характеристика диска – внутренняя скорость передачи (Internal Transfer Rate, ITR). Это максимальная скорость, с которой данные могут быть прочитаны с поверхности диска и помещены в кэш-память для последующей передачи в память компьютера. Это же относится к записи, но в случае записи также вычисляется и записывается ECC сектора. Так как объем данных на дорожке изменяется от зоны к зоне, в спецификации на диск ITR обычно указывается как максимальное/минимальное значение для диска.

По моему мнению, ITR является одной из важнейших характеристик диска, публикуемой в его технической документации. ITR характеризует максимально возможную производительность самого диска, в отрыве от всех остальных потенциальных «узких мест». Например, если максимальный ITR некого диска равен 80 Мб/с, т.е. меньше 10 Мб/с, то подключение такого диска через шину UltraATA-100 не даст никакого увеличения производительности и, в общем-то, бессмысленно.

А теперь давайте рассмотрим, как происходит типичная операция с диском, и как на нее влияют вышеизложенные факторы.

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

Получив запрос от приложения, опрерационная система, в свою очередь, передает этот запрос файловой системе, и уже файловая система инициирует вызов драйвера соответствующего контроллера шины. Затем программное обеспечение (firmware) контроллера шины, получив запрос от драйвера, передаст этот запрос контроллеру диска. В случае IDE-дисков последняя стадия отсутствует, и ATA-драйвер операционной системы общается непосредственно с контроллером диска. В любом случае в итоге всех этих операций контроллер диска получает команду найти блок данных с некоторым адресом, а затем прочитать и передать некоторое количество следующих за ним блоков. Адрес начального блока и необходимое количество блоков контролируется файловой системой, будь то реальные физические блоки, как в случае с SCSI-дисками, или виртуальный адрес, как в случае с ATA.

Кстати, под файловой системой надо понимать программное обеспечение, предоставляющее данные для операционной системы (обычно файловая система является частью операционной системы). Каждый раздел (partition) диска должен иметь файловую систему, для того чтобы операционная система смогла его использовать. Исключение составляют так называемые «сырые разделы» (raw partitions), традиционно используемые базами данных или как разделы для свопинга в UNIX. Именно файловая система обеспечивает контроль целостности данных на уровне операционной системы и контролирует перемещение данных с/на устройства хранения. Но к файловым системам мы еще вернемся и обсудим их в деталях позже.

А теперь назад к операции чтения данных. Предположим, что в нашем случае размер записи (блока) файловой системы равен 2 Кб (настраиваемый параметр, обычно может быть изменен при создании файловой системы), и пользовательское приложение запрашивает чтение только одного блока данных. В этом случае файловая система получит и затем отправит драйверу контроллера шины запрос на чтение 2 Кб данных. На уровне драйвера контроллера шины этот запрос будет странслирован в одну операцию чтения непрерывной последовательности (первый блок, затем несколько следующих за ним) из 4 блоков по 512 байт. Так как в нашем примере размер блока файловой системы равен 2 Кб, любая операция чтения/записи на самом деле будет работать с 4 последовательными дисковыми блоками. В нашем примере эти 4 дисковых блока являются минимальной величиной операции ввода/вывода.

Суммарное время на получение нужных нам (точнее, нашему приложению) 2 Кб данных может быть разбито на несколько этапов.

  • Время, проводимое запросом в очереди на обслуживание.
  • Время на служебные команды.
  • Время доступа.
  • Время передачи.
  • Время на получение данных файловой системой.

Очередь команд может существовать как в драйвере контроллера, так и в самом контроллере. Время, проводимое запросом в очереди на обслуживание, зависит от текущей нагрузки на подсистему ввода/вывода, и может изменяться от практически нулевого до сотен миллисекунд. Размер очереди команд зависит от драйвера контроллера и также может изменяться.

Служебные команды включают в себя необходимый обмен служебной информацией (в основном опрос статуса дисков и передача им нужных команд) между контроллером шины и контроллером диска. Объем данной информации сравнительно невелик, а обмен командами и ответами осуществляется на полной скорости шины. В общем случае этим временем можно пренебречь.

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

А вот задержка вращения требует дополнительных пояснений. Временем задержки вращения (rotational latency) называется время, которое требуется пластинам на вращение до такого положения, когда начало нужного нам сектора окажется непосредственно под головкой. Логично предположить, что в среднем время задержки вращения составит половину от времени одного оборота диска, что не так уж мало даже на скоростных дисках. Кроме этого, также может возникнуть ситуация, когда начало нужного сектора находится под головками, но по какой-либо причине (переполнены кэш-буфера диска в случае операции чтения, или данные еще полностью не получены от конроллера шины в случае операции записи) не могут быть прочитаны и переданы контроллеру диска. Такие ситуации называются «пропущенным оборотом» (missed rotation) и в общем-то избежать их невозможно. Время доступа изменяется в зависимости от типа диска, расположения нужных данных на диске, но в любом случае относительно велико – десятки миллисекунд.

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

И наконец, последняя стадия – полученные контроллером данные передаются в оперативную память компьютера (точнее, буфер файловой системы), о чем драйвер контроллера шины и сигнализирует файловой системе. Файловая система, в свою очередь, сигнализирует приложению пользователя о завершении запроса. В случае использования raw partitions данная стадия отсутствует, и данные от драйвера передаются непосредственно в буфер приложения пользователя.

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

Учитывайте это, создавая файловые системы, особенно файловые системы на RAID-томах. Размер блока файловой системы обязательно должен быть кратен блоку (чанку) RAID-тома. Хороший пример – 16 и 64 Кб соответственно. Об этом подробнее дальше.

Итак, мы теперь представляем типичную операцию чтения данных с диска, и потенциально узкие места дисковых систем. Теперь давайте разберемся с критериями производительности диска. В предыдущей части статьи я использовал термин «общая производительность», давайте разберем его на конкретные части.

Принято говорить о двух основных (и противоположных друг другу) критериях производительности диска – максимальном числе операций ввода/вывода в секунду (Input/Output Per Second, IOPS), измеряемом в единицах в секунду, и максимальной скорости передачи данных (Data Transfer Rate, DTR), измеряемой в Мб/с.

IOPS характеризует максимальное число операций чтения/записи блоков данных небольшого размера (обычно 2 или 4 Kb), которые может выполнить жесткий диск в единицу времени. В основном этот показатель используется при обсуждении производительности приложений баз данных, где чтение или запись небольших объемов информации из непоследовательных блоков является типичной нагрузкой.

В свою очередь, DTR обычно используется для описания максимальной скорости передачи значительного числа последовательных блоков данных. Типичный пример – редактирование цифрового видео, где большинство I/O запросов означают чтение или запись большого числа последовательных блоков данных.

Важно понимать, что IOPS и DTR противоположны друг другу. Невозможно одновременно получить большое значение IOPS и большой DTR, и вот почему: IOPS – это, по сути дела, скорость, на которой диск может принимать и обрабатывать команды, позиционировать головки, т.е. затраты времени на обработку одного запроса, описанного выше. При этом объем передаваемых данных крайне невелик, и, как следствие, невелики затраты времени на передачу данных.

Давайте попытаемся определить максимально возможное число IOPS для некоторого диска, исходя исключительно из законов физики и базовых характеристик диска, взятых из его технического описания. Возьмем для примера диск среднего класса со скоростью вращения 7200 об/мин и средним временем доступа 9.9 миллисекунды. Время доступа, как обсуждалось выше, состоит из времени позиционирования и стабилизации (9.9 в нашем случае), плюс время задержки вращения. Предположим, что средняя задержка вращения в долговременном плане равна половине оборота диска. Тогда время одного оборота такого диска составит 7200/60 = 120 об/с, соответственно 1/120 = 0.00833 секунды на один оборот, соответственно 4.16 миллисекунды на половину оборота. Среднее время обработки одного запроса составит 9.9 + 4.16 = 14.05 миллисекунды. Теоретически максимально возможное число таких операций составит 1000/14 = 71 IOPS в секунду. Если учесть проигнорированные нами операции, а также дополнительные нагрузки на диск ( тепловая калибровка и пропущенные вращения, например), это число надо уменьшить примерно на 6%. Таким образом, максимальное число IOPS-операций, которое может обеспечить такой диск, составит 66.7.

При этом надо учесть, что достичь такого IOPS можно только в случае, когда объем данных, передаваемых при каждой операции ввода/вывода, минимален. Если размер одного блока данных равен 2 Kb, то суммарный объем переданных данных (он же DTR) составит всего 66.7 * 2 = 133.4 Kb в секунду! Кроме того, есть только один способ увеличить IOPS: использовать RAID-массив с большим числом дисков, работающих в параллель, т.е страйп.

Что касается DTR, то в случае передачи большого числа последовательных блоков диск получает всего одну команду, содержащую адрес первого блока и необходимое количество блоков. Передача данных происходит практически на полной скорости и ограничена только ITR диска (конечно, при условии, что шина передачи не является узким местом), а число IOPS в данном случае крайне невелико.

Следовательно, DTR зависит от скорости вращения диска, плотности записи, скорости, с которой контроллер диска может обрабатывать и передавать данные, и физическом расположении данных на диске (как уже упоминалось, внешние цилиндры быстрей). Отчасти DTR может зависеть от объема и «ума» кэш-памяти диска, особенно в случае операций записи. Шина данных может ограничить DTR, но только в случае использования массива из нескольких дисков.

Все используемые в настоящее время шины, будь то ATA или SCSI, имеют приличный запас производительности, который не может быть исчерпан никаким одиночным диском.

Увеличить DTR также можно, используя дисковый массив, но если вам действительно нужен крайне высокий DTR, а число имеющихся в распоряжении дисков недостаточно, есть еще один вариант. Вы можете косвенно повлиять на «средний» ITR одного диска, используя только его внешние дорожки. Создайте RAID-страйп из внешних разделов дисков, и прирост DTR гарантирован. При этом даже не пытайтесь использовать оставшиеся незанятыми внутренние части дисков – любая IO-операция c ними приведет к тому, что головки будут вынуждены передвигаться гораздо больше обычного и общая производительность получившейся системы катастрофически упадет.

Эти два показателя – IOPS и DTR являются точкой отсчета при построении дисковых систем. Все остальное зависит только от потребностей вашего приложения. Учитывая, что невозможно получить систему, имеющую высокий DTR и большое число IOPS одновременно, прежде чем предпринимать какие-то шаги, вы должны досконально изучить имеющееся приложение, его основные потребности на ввод-вывод данных, и уже потом приступать к созданию чего-либо. Общие рекомендации дать трудно, но в среднем можно считать, что приложений баз данных, электронной почты, web и proxy важно обеспечить высокий IOPS, а высокий DTR – для приложений хранения данных, резервного копирования и систем, где критичной является пропускная способность системы хранения.

Итак, именно два вышеупомянутых критерия производительности дисковых систем, IOPS и DTR, мы и будем использовать во второй части статьи, где поговорим о наиболее распространенных на текущий момент технологиях шин дисков.

Часть 2

Теперь давайте передвинемся от обсуждения дисков к обсуждению шин данных – технологий, позволяющих общаться компьютеру и дискам.

В этой части статьи мы поговорим о двух наиболее распространенных интерфейсах дисков – ATA (Advanced Technology Attachment) и SCSI – (Small Computer Systems Interface). Давайте снова начнем с терминологии.

Любой дисковый интерфейс использует свой протокол. Под протоколом надо понимать набор правил, следуя которым, устройства могут беспрепятственно взаимодействовать друг с другом.

Протоколы ATA и SCSI можно рассматривать, как состоящие из двух уровней. Нижний – физический – уровень определяет электрические и физические характаристики интерфейса, такие как число проводников, схему кодирования сигналов и прочее. Верхний – логический – уровень определяет непосредственно команды обмена данными. Вследствие такой двухуровневой архитектуры появляется возможность изменять один из уровней, и эти изменения никак не повлияют на второй. Что немаловажно в мире быстро изменяющихся технологий.

Физический уровень включает в себя:

  • число проводников шины и их использование. Часть проводников используется для передачи данных, а часть для передачи команд управления;
  • частоту шины;
  • величину напряжения на проводниках;
  • электрическое сопротивление шины;
  • минимальную и максимальную длину проводников.

В свою очередь, логический уровень включает:

  • максимально возможное число устройств на шине;
  • способ контроля целостности передаваемых данных;
  • метод передачи данных;
  • метод передачи команд управления.

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

Теперь более подробно об ATA- и SCSI-протоколах.

Начнем с ATA. ATA как стандарт был создан в 80-х годах прошлого века. Изначально ATA использовал 16-битную параллельную шину, но на текущий момент уже полностью определен и начинает использоваться Serial ATA – ATA-протокол для последовательной шины. Замечу, что в настоящее время широко распространен второй (некорректный) термин для обозначения ATA-протокола – (E)IDE. Как я уже говорил выше, термин EDIE был придуман компанией Western Digital и означает только размещение контроллера диска на самом диске (до ATA контроллер диска существовал как отдельный внешний блок или отдельная плата). Western Digital была одной из первых в созданиии и продвижении на рынок ATA-дисков, поэтому ее термин прилип ко всем устройствам ATA. В настоящее время с появлением новых стандартов, таких как ATA-3, ATA-5, ситуация c терминологией начинает исправляться.

Существует несколько стандартов на ATA-шину.

Стандарт ATA-1 на физическом уровне определял в качестве интерфейса кабель из 40 проводников, с максимальной длиной 45 см. Предусматривал поддержку двух устройств на шине – master и slave. Была предусмотрена поддержка только жестких дисков. Методы сигнализации и частота на шине определялись дисками, а не контроллером шины. Как я уже говорил, в ATA-стандарте контроллер шины не предусмотрен – драйвер операционной системы общается с дисками напрямую. В ATA-1 были определены режимы PIO (Programmed I/O) 0, 1 и 2 с пиковой пропускной способностью 3.3, 5.2 и 8.3 Мб/с соответственно. Заметьте, что пропускная способность ATA-шины в режиме PIO-2 также являлась теоретическим пределом для используемой в то время шины ISA. Кроме того, отсутствовал какой бы то ни было контроль целостности передаваемых данных.

Со временем, когда пропускной способности шины ISA стало катострофически не хватать, получили более широкое распространение шины VESA и PCI. Что интересно, отчасти необходимость в более производительной системной шине была вызвана появлением на рынке Microsoft Windows. После появления настолько производительных шин (PCI – 32 бита, 33 МГц) жесткие диски снова стали узким местом в системе. Как следствие, был предложен новый стандарт – ATA-2.

В ATA-2 были определены режимы PIO 3 и 4, а также режим DMA (Direct Memory Access, известный как busmastering) с пиковыми пропускными способностями 11.1 и 16.6 Мб/с соответственно. На самом деле пропускная способность шины была несколько ниже, но это непринципиально, так как сами жесткие диски не могли выдать больше 8-10 Мб/с. Важной особенностью ATA-2 стало определение режима LBA (Logical Block Addresing) для дисков размером больше 504 Мб. С этого времени этот режим стал использоваться для преодоления лимитов, накладываемых схемой адресации ATA-устройств и тем, как эту аресацию использовали операционные системы от Microsoft. До появления LBA пользователи были вынуждены устанавливать специальный драйвер, что влекло за собой дополнительные проблемы.

Вскоре после появления ATA-2 была разработана его улучшенная версия, впоследствии получившая имя ATA-3. Основным новшеством в ATA-3 стало появление SMART-технологии (Self Monitoring Analisys and Report Technology), позволяющей диску самостоятельно отслеживать свое состояние и сообщать о потенциальных проблемах. На первом этапе отслеживалось не так много параметров, в основном температура и количество сбойных и переназначенных (remapped) секторов. Производительность ATA-3 осталась такой же, как и у ATA-2.

ATA-4 был определен в конце 90-х годов. В этом стандарте впервые появился режим UltraATA-33. При использовании этого режима пиковая скорость передачи данных по шине могла достигать 33 Мб/с. Также появился новый тип ATA кабеля с 80 проводниками, где 40 новых проводников являются «землей» и используются для контроля ошибок на шине. Но основным новшеством в ATA-4 стало использование CRC для контроля целостности передаваемых по шине данных. Вычисление CRC производится для каждого переданного пакета данных, как самим диском, так и ATA-драйвером операционной системы. В конце передачи каждого пакета данных драйвер передает вычисленный им CRC контроллеру диска. И уже контроллер диска сравнивает собственный и полученный от драйвера CRC, а в случае ошибки сообщает об этом драйверу, после чего драйвер повторяет команду, вызвавшую ошибку. Кроме этого, в ATA-4 была анонсирована поддежка перекрывающегося ввода/вывода (overlapped IO), а также очереди команд. К сожалению, я не знаю, была ли реализована поддержка этих функций в какой-либо операционной системе на тот момент времени.

ATA-5 появился сравнительно недавно и снова увеличил производительность АТА-шины в два раза. Новый режим UltraATA-66 позволяет достичь пропускной способности 66 Мб/с. Кроме того, возможности SMART в ATA-5 дисках были расширены, и как часть SMART была реализована автоматическая проверка целостности данных на дисках. Ранее такая проверка целостности данных была реализована только в SCSI-дисках.

ATA-5 диски считывают данные и ECC из каждого физического сектора, и в случае ошибки перемещают данные из проблемного сектора в резервный. Естественно, это делается в свободное от «основной работы» время.

В рамках работ по созданию ATA-5 также разрабатывалась (и только сейчас разработка заканчивается) новая последовательная ATA-шина, получившая название SerialATA. Эта новая последовательная шина имеет несколько преимуществ, из которых два основных – это уменьшенные физические размеры разъемов и снятие лимита в 45 см на длину ATA-кабеля. Рано или поздно эта шина станет основной в настольных системах, но на текущий момент она все еще не получила существенного распространения.

Ну и для полноты картины необходимо упомянуть о ATAPI-протоколе, используемом для подключения к ATA-шине устройств, дисками не являющихся, т.е. CDROM, DVD и стримеров. Так как стуктура команд этих устройств абсолютно несовместима со структурой команд дисков, был введен протокол более высокого уровня, использующий в качестве транспорта протокол ATA и названный ATAPI (ATA Packet Interface). Для этого наряду с драйвером ATA используется еще один драйвер, инкапсулирующий команды и данные в пакеты ATA. Такие инкапсулированные пакеты выглядят как обычные пакеты данных для жесткого диска на той же ATA-шине. ATAPI позволил стандартизовать интерфейсы дисковых устройств и упростить работу с ними, что, в свою очередь, привело к еще более широкому распространению ATA как шины передачи данных.

Напоследок несколько советов и слов о наиболее распространенных проблемах с ATA:

  • Не пытайтесь использовать UltraATA-режимы и обычные 40-проводниковые АТА-кабели. Работать не будет.
  • Не устанавливайте на одном шлейфе UltraATA- и ATA-устройства. Работать будет, но режим работы шины будет соответствовать режиму работы наиболее медленного устройства.
  • ATA-драйвера большинства операционных систем позволяют вручную установить режим работы шины. Если вы испольуете Windows, просто установите драйвера, поставляемые в комплекте с материнской платой. Если вы используете Linux, прочитайте документацию на утилиту hdparm. В любом случае возможен некоторый прирост производительности.
  • Если вам необходимо за относительно небольшие деньги получить сравнительно приличную производительность дисковой подсистемы, обратите внимание на ATA RAID контроллеры. Сейчас эти устройства стабильны, недороги и поддерживаются большинством операционных систем.

Стандарт ATA задумывался как максимально простая и дешевая технология подключения дисковых устройств в настольных системах. Именно поэтому типичный одиночный ATA-диск обычно обходит аналогичный диск SCSI по всем параметрам. Причина этого проста – ATA-диски являются гораздо более простыми устройствами, чем диски SCSI и, соответственно, гораздо менее «умными». Кроме того, в ATA-протоколе отсутствует комплексная система команд SCSI, необходимая для менеджмента до 15 устройств на одной шине, и связанные с такой системой дополнительные накладные расходы. К тому же ATA-диск, а не контроллер шины управляет ATA-шиной, и пересылает данные в выделенном режиме, он не разделяет шину с другими устройствами.

Но у ATA есть и серьезные недостатки. Так как управление каждым ATA-устройством осуществляется непосредственно операционной системой, скорость передачи данных сильно зависит от частоты процессора компьютера. И даже на относительно быстрых системах передача заметного обьема данных по АТА-шине «сьест» вплоть до 60 % процессорного времени. В случае же использования SCSI-устройств основная часть работы по передаче данных выполняется контроллером шины и нагрузка на процессор минимальна.

Вторым большим недостатком ATA является небольшое число дисков, которые могут быть установлены в одной системе. Так как к одной ATA-шине могут быть подключены только 2 устройства, максимальное число дисков ATA редко превышает 4 в одной системе. И ограничение на длину ATA-кабеля играет в этом не последнюю роль. Именно поэтому я заметил в начале статьи, что ATA-диски идеально подходят для настольных систем, но абсолютно неприменимы в системах среднего класса и выше.

Возможно, с распространением SerialATA расстановка сил несколько изменится, но сейчас еще рано об этом говорить.

Тем не менее если у вас возникла необходимость получить сколько-нибудь приличное число IOPS или высокий DTR, у вас есть только один вариант – использовать протокол SCSI в одной из его инкарнаций.

В 1981 году Shugart Assosiates (позже переименованная в Seagate Technologies) и NCR Technologies совместно разработали и выдвинули на рассмотрение новый дисковый интерфейс. После некоторых изменений интерфейс был одобрен и в 1986 году принят в качестве стандартного, сейчас известного как SCSI-1.

После достаточно большого перерыва, в 1994 году ANSI принял новый стандарт – SCSI-2. На самом деле SCSI-2 – шина с пропускной способностью 10 и 20 Mб/с появилась на рынке заметно раньше, что является типичной картиной для быстроразвивающихся технологий. Очень скоро, в 1996 году появился первый стандарт SCSI-3 с поддержкой Ultra-устройств и пропускной способностью 20 и 40 Mб/с. Вслед за ним в 1998 году появилось новое расширение стандарта SCSI-3 – Ultra2 с пропускной способностью 80 Mб/с. Одной из особенностей Ultra2 стало использование LVD (Low Voltage Differential) протокола для увеличения максимально допустимой физической длины SCSI-шины. Однако в 2000 году появляется новый стандарт Ultra160 SCSI с пропускной способностью 160 Mб/с, который на настоящий момент и является основным. И уже в 2002 году появились первые устройства, поддерживающие Ultra320 SCSI, новый протокол, основной конкурент Fibre Channel систем хранения.

Итак, SCSI-протокол. Как и технология ATA, SCSI-протокол определяет как физический, так и логический уровень. Физический уровень, где определяется число устройств на шине, длина проводников, уровни сигнала и прочие физические характеристики, наиболее подвержен изменениям. Фактически, обсуждая SCSI-стандарты, можно говорить только об изменениях физического уровня. При этом логический уровень, определяющий команды управления SCSI-устройствами и шиной, остался практически неизменным, вплоть до того, что логический уровень SCSI-протокола также используется в FC-устройствах. Поэтому основное внимание мы обратим именно на физические характеристики SCSI-шины.

SCSI-шина. Снова немного терминологии.

SCSI-устройство, оно же – любое устройство, подключенное к SCSI-шине. Обсуждая физическую SCSI-шину, обычно говорят о 2-х типах устройств – targets и initiators.

Initiator, он же контроллер шины, он же SCSI-адаптер. Устройство, управляющее SCSI-шиной и соединяющее ее с системной шиной.

Target, он же просто SCSI-устройство. Любое устройство (диск, стример, CD-ROM), подключенное к SCSI-шине.

Собственно, поэтому и используют такие «относительные» термины как target и initiator. Иногда это удобно, так как в некоторых инсталляциях могут быть использованы два SCSI-адаптера, подключенные к одной SCSI-шине (так называемый dual-initiator). При этом взаимно друг к другу они являюся iniator и target. Я использую наиболее подходящие к конкретной ситуации термины.

Контроллер шины является главным во всей этой связке, и управляет работой всей шины в целом и каждого SCSI-устройства по отдельности, передавая им команды управления. SCSI targets в обычном состоянии «отсоединены» от SCSI-шины, и могут подключаться к ней только после разрешения контроллера шины. Они подключаются к шине только для получения команд и передачи данных, в остальное время targets работают автономно. Контроллер шины управляет устройствами посредством девяти выделенных сигнальных линий.

Существует два физических типа параллельной SCSI-шины – 8-битная Narrow и 16-битная Wide. В данном случае число бит определяет число проводников, предназначенных для передачи данных по шине.

Максимальное число устройств, подключеных к шине, зависит от типа используемого SCSI-протокола. В настоящее время это 7 targets для Narrow SCSI, 15 для Wide SCSI и 127 для FC. На текущий момент используются 3 типа параллельной SCSI-шины – single-ended (SE), differential (HVD) и низковольтная differential (LVD). Все они несовместимы между собой, так как каждый тип определяет свои уровни сигнала и назначение проводников.

SE SCSI является старейшей и наименее надежной. В данном типе шины логическая 1 определяется низким уровнем сигнала на проводнике (0-0.5 В), а логический 0 определяется высоким уровнем сигнала (2.5-5 В). При таких низких уровнях сигнала максимальная длина шины не может превышать 1.5 м. для Ultra SCSI-2 и 3 м. для Fast SCSI-2.

Для преодоления этих лимитов был разработан differential SCSI, сейчас называемый HVD. В HVD используются «плюс/минус» пары сигнальных линий с напряжением от 0 до 12 В для каждой линии данных, и логическая 1 определяется, когда сигнал на «плюс» проводнике выше, чем на «минус»; и логический 0, когда сигнал на «плюс» проводнике ниже, чем на «минус». Согласно стандарту, максимальная длина HVD SCSI шины не должна превышать 25 м.

LVD, пришедший на смену HVD, также использует +/- пары сигнальных линий, но с напряжением 5 В, а не 12. В резульате LVD оказался более дешевым и получил большее распространение, хотя и ценой снижения максимальной длины шины.

Важно понимать, что все перечисленные типы устройств несовместимы между собой. Хотя LVD-устройства, поключенные к SE-шине, будут работать, но только с деградацией их производительности до SCSI-2. И наоборот: единственное подключенное к LVD-шине SE-устройство приведет к переключению всей шины в SCSI-2 режим.

Также важно знать, что LVD- и HVD-устройства абсолютно несовместимы, хотя и имеют одинаковые интерфейсы. И хотя на большинстве LVD-устройств существует защита от подключения их к HVD-шине, будьте внимательны. Подключение LVD-устройства к HVD-шине (и наоборот) может привести к полному выходу из строя всех подключенных к шине устройств, включая SCSI-контроллер.

Для контроля целостности любой SCSI-шины используется ее терминация с обеих строн. Осуществляется терминация при помощи терминаторов – резистивной нагрузки, стабилизирующей работу шины. Существуют два типа терминации – активный и пассивный. Замечу, что использование разных типов терминаторов на разных сторонах шины неминуемо приведет к проблемам.

Пассивная термининация в настоящее время используется только для SE-шины. Активная терминация может быть использована для любого типа шины, и может осуществляться как самим устройством, так и внешним терминатором (LVD-устройства не имеют встроенного терминирования, необходимо использовать внешние активные терминаторы).

И немного о SCSI-коннекторах. В настоящее время используются коннекторы 50-pin SCSI-2, 68-pin SCSI-3 и 80-pin SCA. На старых устройствах также можно встретить 50-pin разьемы Centronics-50, DB50 (3 ряда контактов). SCA-коннекторы обычно используются для hot-plug дисков, и кроме 68 проводников включают проводники электропитания и проводники назначения SCSI ID для устройства. Хотя при необходимости диск, имеющий SCA-интерфейс, может быть подключен к 68-pin SCSI-шине через переходник.

Вот и все о физическом устройстве SCSI-шины.

Часть 3

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

В этой части мы рассмотрим используемые в реальной жизни технологии, начиная с самых простых и заканчивая комплексными RAID-системами. Но, как обычно, немного терминологии для начала.

RAID (Redundant Array of Independed Disks) – технология, позволяющая получить быструю, лекгую в управлениии надежную систему хранения.

Чанк (chunk) – минимальный размер записи для RAID-тома. Иногда его также называют шириной страйпа. Рассматривайте его как размер логического блока для дисков в массиве. Обычно размер чанка может быть выбран при создании массива и составляет от 16 до 128 Кб. Но подробней об этом ниже.

Страйп (stripe) – ряд или «колонка» чанков по одному с каждого диска. Также этот термин может быть использован для обозначения RAID-0 массива.

Cтрайпинг (striping) – тот или иной метод логического обьединения чанков для формирования страйпа.

Зеркалирование (mirroring) – технология, обеспечивающая копирование данных с одного носителя на другой в реальном времени. Простейший способ получить систему хранения с резервированием всех данных.

Аппаратный RAID – устройство RAID, созданное и поддеживаемое на аппаратном уровне. При этом для операционной системы такое устройство выглядит как один физический жесткий диск – отдельные диски, составляющие данное устройство, системе невидны. Наиболее удобное, надежное и дорогое решение. Что важно, такой массив может быть организован, как полностью независимое внешнее устройство, со своим корпусом, блоками питания, предоставляющее компьютеру только тот или иной интерфейс физического уровня (SCSI или Fibre Channel, например).

Програмный RAID – RAID-устройство, созданное программным обеспечением операционной системы. Основными недостаткоми по сравнению с аппаратным является «видимость» каждого диска для операционной системы (и конечно для вас, как системного администратора), а также более низкая производительность практически на всех уровнях RAID. Однако данная технология является достаточно популярной и реализована практически во всех операционных системах. Достаточно для начала, подробней поговорим ниже.

Давайте теперь рассмотрим возможные схемы устройства систем хранения. Тема неоднократно обсуждалась, но вкратце повторим, тем более что число возможных вариантов невелико. Все они имеют свои преимущества и свои недостатки, и единственная тонкость состоит в выборе правильного – того, который обеспечит вам нужную производительность и надежность, и который можете себе позволить.

Первая, и наиболее распространенная схема – ПКД (JBOD – Just a Bunch Of Disks) – Просто Куча Дисков (шутка). Собственно, это куча и есть – несколько дисков, используемых каждый «сам по себе». На каждом диске создаются разделы, на каждом разделе создается файловая система. Наиболее дешевый, и наименее надежный способ хранения. Идеален для рабочих станций и небольших серверов, конечно, при условии регулярного резервного копирования.

RAID-массивы. В общем случае любой RAID-массив можно рассматривать как совокупность методов зеркалирования и того или иного вида страйпинга. Как я уже упоминал выше, может быть реализован как аппаратными, так и программными средствами.

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

Сама концепция RAID была предложена в 1988 году в университете Берклей. Концепция предлагала относительно дешевый метод создания дисковых систем большой емкости и надежности, используя стандартные компоненты. Был предложен один метод увеличения емкости системы и 5 методов обеспечения повышенной надежности. Эти методы получили имена RAID 0, 1, 2, 3, 4 и 5 и до сих пор используются в практически неизменном виде.

Основой всех уровней (за исключением RAID-1) является страйпинг. В результате страйпинга логические блоки RAID-тома равномерно распределяются, чередуясь по всем физическим дискам массива. Премуществами такого подхода являются увеличение емкости системы, а также увеличение производительности и надежности в случае с RAID уровней 3, 4 и 5.

Повышенная надежность (защита данных) обеспечивается за счет поддержания в реальном времени копии всех данных на дополнительном (или нескольких дополнительных) дисках в случае RAID-1, и за счет контроля четности в случае RAID уровней 3, 4 и 5.

Заметьте, что в случае RAID-1 не происходит увеличения емкости всей системы, а существует только прирост производительности на операциях чтения данных. Хотя такая конструкция и представляет определенный интерес, давайте более детально рассмотрим страйпинг с контролем четности.

Предположим, что в нашем распоряжении имеется дисковый массив из 5 дисков. В случае если этот массив сконфигурирован как RAID уровней 3, 4 или 5, суммарная емкость четырех дисков будет использована непосредственно для данных, а емкость одного диска будет использована для хранения данных четности. Каждый страйп в таком массиве будет состоять из пяти чанков, четыре из которых будут содержать полезные данные, а пятый чанк будет содержать данные четности.

Данные четности представляют собой результат операции «исключающее или» (XOR), производящейся побитно для каждой «колонки» бит в страйпе.

В случае отказа одного из дисков в таком массиве, данные чанков отказавшего диска могут быть восстановлены с использованием данных функционирующих дисков и данных четности. При этом, даже при отсутствии одного из дисков, дисковая система продолжит работу, хотя и значительно медленней, в так называемом «деградировавшем режиме» (degraded mode).

Важно понимать, что сама технолоия RAID не контролирует целостность данных. Чанки четности не считываются в процессе нормальной работы, а контроль целостности данных возложен на рассмотренные выше механизмы защиты дисков и шин данных (ECC секторов диска и контроль четности на шине).

После замены отказавшего диска, его данные будут постепенно восстановлены, и массив вернется к нормальной работе. Процесс такого восстановления называется «реконструированием» (reconstruction) массива и может быть инициирован, как автоматически после замены отказавшего диска, так и вручную.

Одним из неочевидных свойств любого RAID-массива являтся его пониженная, по сравнению с отдельным диском, средняя продолжительность бесперебойной работы (MTBF, Mean Time Betwen Failures). Действительно, если MTBF одиночного диска составляет 1000000 часов, то MTBF дискового массива из 15 таких дисков составит 66666 часов, а если предположить, что у вас используется 10 таких массивов, то их суммарный MTBF составит всего 6666 часов – немногим более полугода, и чем дольше эти диски эксплуатировались, тем выше вероятность их выхода из строя.

Разобравшись с принципами работы RAID, давайте более детально рассмотрим каждый из его уровней.

RAID-0. Представляет собой простой страйп нескольких дисков, без контроля четности. Не обеспечивает защиты данных, но обеспечивает максимальную производительность на всех операциях ввода/вывода. Однако отказ одного любого диска в такой системе приведет к полной потере всех данных массива. Используя такой массив, вы должны осознавать риск, на который идете, и регулярно резервировать имеющиеся данные.

RAID-1. Представляет собой простое копирование данных с одного диска на один или более резервных дисков. Постейший уровень RAID, обеспечивающий защиту данных и прирост производительности для операций чтения. В случае выхода одного из дисков из строя, все операции производятся с работающим диском, хотя при этом и теряется защита данных. Прирост производительности обеспечивается за счет того, что операции чтения могут быть выполнены с любого диска. В то же время все операции записи производятся всегда только на один из дисков. Кроме того, если используется программый RAID-1, на операциях записи может наблюдаться снижение производительности по сравнению с отдельным диском, как следствие «двойной» передачи данных по шине. Данный уровень RAID можно рекомендовать для использования в особо критичных системах и для системных разделов.

Производными от этих двух уровней RAID являются RAID-0+1, RAID-10 и RAID-100. Эти уровни уже являются двумерными массивами, хотя и абсолютно различны.

RAID-0+1 можно рассматривать как двумерный массив дисков, представляющий собой миррор одного RAID-0 тома на другой RAID-0 том. Такая конструкция обеспечивает прирост производительности аналогично обычному RAID-1. Но надо заметить, что надежность такого массива крайне мала. Выход из строя одного диска приводит к полной потере одного из RAID-0 томов и, как следствие, переходу миррора в деградированный режим. Кроме того, возможным следствием является потеря всех данных массивы при выходе из строя дополнительно еще одного их дисков работающего RAID-0 тома.

RAID-10. Можно рассматривать как двумерный массив, но в отличие от RAID-0+1, являющийся страйпом нескольких RAID-1 томов. Легко заметить, что при таком же числе дисков и емкости, что и в RAID-0+1, RAID-10 обеспечивает гораздо более высокие уровни производительности и надежности. Действительно, в случае выхода из строя одного из дисков будет наполовину снижена производительность только одного RAID-1 тома, а массив остается полностью работоспособным. Таким образом, данные будут потеряны, только если из строя выйдет второй диск из уже поврежденной пары, вероятность чего относительно невелика.

RAID-100, в свою очередь, представляет собой RAID-0 массив, в качестве физических «устройств» которого используются RAID-10 массивы. Конфигурация крайне редкая, и может быть реализована только с одновременным использованием аппаратного и програмного RAID. Правильно спроектированный RAID-100 массив обеспечит максимально возможную производительность, и наоборот, в случае ошибки при конфигурировании массива может получиться весьма неторопливый динозавр.

Заметным недостатком вышеперечисленных уровней RAID-1, 10 и 100 являются большие потери дискового пространства. На самом деле для этих уровней «потери» составят ровно половину от суммарной емкости физических устройств. Для сокращения таких потерь и были предложены RAID уровней 3, 4 и 5, основанные на страйпинге с контролем четности.

RAID-3 является наименее используемым и наиболее труднореализуемым представителем данного типа масивов. RAID-3 масивы состоят из небольшого числа дисков, редко больше пяти. Один из этих дисков использутся для хранения данных четности, а оставшиеся – для хранения полезных данных. При этом скорости вращения всех дисков массива синхронизированы. При запросе любого блока такого массива, головки всех дисков также передвигаются синхронно. В результате такой синхронизации в один момент времени головки всех дисков будут находиться над одним и тем же сектором поверхности, читая или записывая его на все диски одновременно. Получившееся устройство более всего напоминает одиночный жесткий диск, если бы существовали диски такой емкости и производительности. Однако из-за сложности реализации такой схемы и дороговизны, RAID-3 массивы получили распространение только там, где требуется максимальная производительность для операций чтения большого обьема последовательных данных. Системы видеомонтажа, например.

RAID-30 является логическим продолжением и представляет собой RAID-0 массив, состоящий из RAID-3 массивов. Может быть использован для преодоления ограничений на емкость RAID-3 масивов (как я уже заметил, они состоят из относительно небольшого числа дисков ) и отчасти для увеличения производительности. Как и RAID-100, RAID-30 реализуется одновременным использованием аппаратных (RAID-3 часть) и програмных (RAID-0 часть) средств.

RAID-4. В данной технологии используется страйпинг с контролем четности, при этом один из дисков используется только для хранения данных четности. Контроль четности гарантирует избыточность массива с минимальными потерями полезного дискового пространства, но единственный диск для хранения данных четности быстро становится узким местом при операциях записи. Широкого распространения такие системы не получили, и были быстро вытеснены более продвинутым вариантом – RAID-5.

RAID-5 также использует страйпинг с контролем четности, но вместо выделеного диска для данных четности, чанки с этими данными равномерно распределены по всем дискам массива. Такая схема позволяет избежать ограничений на производительность, присущих RAID-4 масивам, и в то же время использовать дисковую емкость максимально эффективно.

RAID-5 массивы могут быть реализованы как аппаратно так и программно, но в случае программной реализации операции записи на массив крайне медленны, так как программное вычисление четности данных требует своей доли процессорного времени. В большинстве случаев, используя программную реализацию, вы теряете больше, чем приобретаете.

RAID-50, аналогично RAID-30, представляет собой симбиоз RAID-0 и RAID-5 с аппаратной реализацией RAID-5 и програмной RAID-0. На мой взгляд, именно RAID-50 на текущий момент времени обеспечивает максимально выгодное сочетание цены, емкости и производительности.

RAID-6 представляет собой RAID-5, дополнительно «накрытый» еще одним диском с данными четности. Такая конструкция была призвана для защиты от одновременного отказа двух дисков (что само по себе крайне маловероятно), но распространения не получила, так как производительность такого массива на операциях записи практически никакая.

Что касается производительности RAID-томов – любая корректно спроектированная система хранения, использующая RAID-тома, обеспечит прирост того или иного вида производительности. Проектирование системы хранения включает анализ таких факторов, как потребность приложения в дисковом пространстве, преобладающие типы запросов ввода/вывода (чтение или запись), размер этих запросов. При этом также необходимо учесть особенности используемых в операционной системе файловых систем, возможности оптимизации ввода/вывода средствами операционной системы, и еще множество других.

Вот типичный пример. Предположим, что у нас имеется дисковый массив из 5 дисков, сконфигурированный как аппаратный RAID-5 том с размером чанка 32 Кб, и созданная на нем файловая система с размером блока также 32 Кб. При записи на такой массив файла размером 10 Мб, RAID-контроллер буферизует в кэш-памяти достаточно данных для заполнения страйпа целиком, т.е. 128 Кб (т.к. в этом примере только чанки с 4 дисков могут быть использованы для данных), вычисляет данные четности, и записывает все 5 чанков на диски. Т.е. в данном случае контроллер перезаписывает большинство страйпов целиком, и чтения данных с дисков не производится, только запись. А теперь давайте предположим, что нам необходимо перезаписать только один чанк в страйпе. Для этого блоки данных перезаписываемого чанка и блоки данных четности считываются в кэш-буфер RAID-контроллера. Туда же записываются новые данные для перезаписываемого чанка. Затем производится операция “XOR” для новых данных и считанных старых данных чанков. Над получившийся в результате этой операции блоком данных промежуточной четности и старыми данными четности также проводится операция “XOR”, генерирующая новые данные четности. И наконец, новые данные чанка и новые данные четности записываются на диски. Как видно, в результате одного такого изменения данных мы получим дополнительную нагрузку в виде двух операций чтения и двух операций записи.

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

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

Ну и напоследок немного о надежности. Действительно, RAID-массив может спасти ваши данные при отказе одного из его жестких дисков. И даже продолжить работу. Но это не спасет вас от одновременного отказа нескольких дисков, скажем, из-за сбоя в системе электропитания, или отказе RAID-контроллера, или ошибке в его программном обеспечении.

И хотя теория вероятности будет работать на вас, законы Мерфи окажутся сильней. Примите за данность тот факт, что худшее случится именно с вашим массивом и в самый неподходящий момент. И тогда спасти вас сможет только бэкап, созданный прошедшей ночью. Никогда не полагайтесь только на RAID-массивы.


Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-41
Fax: (499) 277-12-45
E-mail: sa@samag.ru