Что измеряется в raid penalty
В первых персональных компьютерах винчестеров вообще не было. Чуть позднее они стали штатным оборудованием. Еще позднее в основном были решены проблемы совместимости, мешающие использованию одновременно и поддерживаемой в теории пары устройств, а к концу 90-х годов прошлого века конфигурация среднестатистического компьютера потенциально могла включать в себя уже и четыре винчестера. С этого момента многие пользователи заинтересовались уже использованием накопителей не по-отдельности, а в составе единого массива — как во «взрослых системах». В последних, впрочем, чаще всего применялся SCSI-интерфейс, доступный и владельцу обычной «персоналки», но излишне дорогой — требовались дешевые решения. И они появились в виде контроллеров IDE RAID.
Заметим, что наиболее часто используемым вариантом был RAID0, строго говоря, к «RAID-массивам» не относящийся, поскольку избыточность данных он не обеспечивает. Надежность хранения сравнительно с одиночным диском даже снижает. Но иногда было просто некуда деваться, поскольку винчестеры тех лет были слишком медленными для некоторых сфер применения, а альтернативных решений с более высокой производительностью не было вовсе. Использование же чередования позволяло их заметно «пришпорить». Но применялись (да и сейчас применяются) и «зеркала» (RAID1) — для повышения надежности. А наиболее обеспеченные граждане могли объединить достоинства обоих подходов посредством создания массива RAID10, что позволяло повысить и скорость, и надежность. Других режимов в те времена в массовых контроллерах «не водилось»: слишком сложными были для программной реализации — с учетом вычислительных возможностей систем того времени.
Через некоторое время дискретные RAID-контроллеры начали устанавливать и на топовые системные платы — надо же было чем-то выделяться их производителям. В итоге к массивам стали приглядываться и пользователи, ранее о них не задумывавшиеся — раз уж возможность есть. В итоге идею подхватили сами производители чипсетов, так что возможность создания RAID-массивов стала стандартной для последних. Как минимум — для старших модификаций. Причем к числу возможных вариантов добавился и RAID5, на первый взгляд выглядящий очень привлекательно: более экономным расходованием дискового пространства, чем у RAID10, но при обеспечении необходимой для надежности хранения избыточности.
А позднее начались новые времена — винчестеры перестали быть основным и единственным типом накопителей, применяющихся в компьютере. Внедрение твердотельных накопителей прервало эволюцию, оказавшись революционным шагом с точки зрения производительности. Правда было оно достаточно медленным — просто потому, что и стоимость хранения информации первое время была очень высокой. Довольно быстро снижалась, но и сейчас до паритета с винчестерами еще далеко — особенно если рассматривать «настольные» модели. Да и с абсолютной емкостью тоже пока все не просто: теоретически флэш-памяти в стандартный корпус «напихать» можно очень много, а практически это будет слишком уж дорого. Собственно, поэтому до сих пор подавляющее большинство компьютеров продается лишь с одним-единственным винчестером в качестве накопителя «для всего»: и для программ, и для данных. В принципе, даже устройств этого класса минимальной на сегодня емкости достаточно для того, чтобы полностью закрыть все потребности среднестатистического пользователя, поэтому в бюджетном сегменте такой вариант долго еще будет преобладающим, несмотря на низкую производительность. А вот чуть выше решений минимальной стоимости у покупателя есть выбор, часто приводящий его к одному из гибридных вариантов системы хранения данных. Самым дешевым (но пока до конца не изученным и освоенным) способом является кэширование посредством технологии Optane Memory. Более дорогим, но предсказуемым и совместимым со старыми системами — использование SSD невысокой емкости для операционной системы и приложений в паре с тихоходным, но очень емким винчестером для хранения данных. В итоге про RAID-массивы в бытовых персоналках все как-то и забыли. Хотя некоторые пользователи считают, что зря — все-таки и емкость самая большая (в пределах фиксированного бюджета), и производительность должна быть более высокой, чем у одиночного накопителя. Пусть, даже, и не на столько, как обеспечивают твердотельные накопители, но ведь дешево же — а вдруг и этого хватит на практике. Поэтому мы сегодня решили немного отклониться от основной линейки тестов и посмотреть — как ведут себя лучшие винчестеры в т. ч. и в массивах из двух-трех дисков, сравнительно с разными твердотельными накопителями.
Участники тестирования
Поскольку в наших руках оказалось одновременно три не совсем идентичных, но почти идентичных винчестера Seagate, они и выступили в роли «подопытных кроликов». Было бы сразу четыре — можно было бы и RAID10 организовать, а так пришлось ограничиться RAID0 из двух и RAID5 из трех дисков (три-четыре диска в RAID0 это уже за границей добра и зла, которую без необходимости мы стараемся не переступать), имеющие одинаковый объем в 20 ТБ. Собственно, чем RAID5 многим и кажется привлекательным — «пропадает» всего один накопитель в массиве, а не половина, как в «зеркалах» (RAID1, 10 и подобных). RAID0 еще «гуманнее», но ценой потенциальных проблем с надежностью. Сами же винчестеры — одни из лучших на сегодняшний день: модели на 10 ТБ со скоростью вращения 7200 об/мин, использующие заполнение гермоблока гелием. Понятно, что в роли системного и единственного накопителя даже один такой винчестер выглядит странно (мягко говоря), однако дает оценку сверху того, что вообще можно получить от массивов. Недорогие устройства малой емкости просто медленнее, в чем мы уже не раз убеждались.
С кем будем сравнивать? Во-первых, интересна разница в пределах группы. Во-вторых, для части тестов мы отобрали следующую четверку твердотельных накопителей:
-
— медленный бюджетный SATA — чуть более «серьезный» накопитель, но тоже недорогой и тоже SATA — бюджетная реализация NVMe-устройства — похоже, но не бюджетно
Можно было бы ограничиться и меньшим количеством, но мы решили пойти навстречу читателям, жалующимся на то, что в статьях сайта редко сравниваются твердотельные накопители разных классов или, тем более, твердотельные с механическими. Просили? Сами виноваты :)
Тестирование
Методика тестирования
Методика подробно описана в отдельной статье. Там можно познакомиться с используемым аппаратным и программным обеспечением. Для данной статьи нам ее пришлось, немного доработать, поскольку участие в тестировании сегодня принимают и винчестеры, и твердотельные накопители, но касается это в основном использования результатов (благо тестовые программы в основном пересекаются) и их группировки.
Последовательные операции
Для начала начнем с «чисто винчестерных» тестов, в которых твердотельные накопители по понятным причинам не участвуют — для них нет зависимости скорости от конкретной области данных.
Как и предполагается априори, скорость чтения удваивается. Точнее, для RAID0 из двух дисков это очевидно. Для RAID5 на трех дисках — в общем-то тоже: для данных используется то же самое чередование. В итоге даже минимальная скорость чтения оказалась выше средней одиночного диска, а средняя — выше максимальной. Идеальный случай.
Потому что при записи все уже не так просто. Точнее, для RAID0 — по-прежнему просто и быстро, на что любят упирать «любители» этого типа массивов (который, строго говоря, RAID-массивом и не является, как уже было сказано выше). Все также работает чередование блоков с данными, так что два винчестера (или большее их количество) работают, по сути параллельно.
А вот ситуация с RAID5 печальна. Однако легко объяснима: специфика организации этого типа массивов такова, что практически любая операция записи превращается в две операции чтения и две записи, которые должны «отработать» практически одновременно. Итоговая производительность в случае «чипсетного» контроллера, фактически лишенного собственных «мозгов», так что реализующего всю необходимую функциональность на базе программного драйвера, оказывается удручающе низкой. «Нормальный аппаратный» контроллер способен ослабить проблему, но не решить ее полностью — RAID5 все равно остается одним из самых медленных типов массивов в любых условиях. Радикальным способом решения проблемы (да и практически единственно-возможным для программной реализации) является использование RAID10, сочетающего в себе и производительность, и отказоустойчивость, но. Но ценой потери уже половины потенциального пространства, т. е. для создания массива в те же 20 ТБ потребуется уже не три, а четыре диска по 10 ТБ, о чем было сказано в начале статьи. Впрочем, можно «выжать» и из чипсетного RAID5 немного больше: подбором размера блока чередования и кластера файловой системы, чем мы не занимались, оставив значения по-умолчанию. Однако повысить скорость записи до уровня хотя бы одиночного винчестера и это не позволяет — в отличие от RAID10, обеспечивающего ее удвоение (пусть и высокой ценой). В лучшем случае получается повысить скорость примерно до 100 МБ/с, т. е. RAID5 на практике даже при тонкой настройке снижает производительность операций записи. Где-нибудь в NAS это не важно: данные записываются редко, а читаются часто, да и лимитирует производительность сам по себе сетевой интерфейс (как раз значениями в районе сотни мегабайт в секунду, а то и меньше), так что высокая емкость и отказоустойчивость выходят на первый план. А вот в персональном компьютере или рабочей станции массивы такого типа просто не интересны. Точнее, интересны еще меньше, чем RAID0 или RAID1. А ведь и у первых уже появились серьезные конкуренты, но об этом чуть ниже.
Время доступа
Если при чтении данных латентность практически неизменна, то при записи в массиве RAID0 она резко снижается. В чем, впрочем, заслуга, скорее, не его, а алгоритмов кэширования, применяемых контроллером для массивов. Но, как видим, RAID5 и это никак не помогает. Даже наоборот, что вполне согласуется с логикой его работы.
Последовательные операции (Crystal Disk Mark)
Поскольку HD Tune Pro при тестировании твердотельных накопителей мы не используем, а вот Crystal Disk Mark «прогоняется» везде, посмотрим на его результаты.
Как и положено, производительность при чтении данных примерно удваивается. Забавный результат в многопоточном режиме связан с тем, что при использовании ограниченной области данных (в программе, напомним, мы используем лишь 2 ГБ) и современных алгоритмов внутреннего кэширования винчестеров, вкупе с нынешними емкостями кэш-памяти, данные зачастую в ней и будут оказываться еще до соответствующего запроса. Остается только передать нужный блок по интерфейсу, что происходит очень быстро. Это позволяет с легкостью опережать SATA SSD (поскольку их сдерживает именно интерфейс), да и в однопоточном режиме от них практически не отставать. Но только в «тепличных условиях» — внешние дорожки (на внутренних скорость вдвое ниже, что уже было показано выше), небольшие объемы данных. Что бывает в более сложных случаях — посмотрим чуть позже.
С записью же все намного хуже: чем-то подстегнуть многопоточный режим не получается, так что он не только медленнее однопоточного, но и удвоения скорости сравнительно с одиночным накопителем уже не наблюдается. Но в один поток потягаться с SATA SSD хотя бы можно. Во всяком случае, при использовании RAID0 из двух дисков. Если бы мы объединили в такой массив три имеющихся винчестера — было бы еще быстрее, хотя и слишком перпендикулярно здравому смыслу. А с RAID5 все традиционно плохо. Поэтому в последующих тестах мы его использовать не будем — и без того картина ясна.
Работа с большими файлами
Как и следовало ожидать на основании низкоуровневых тестов, в однопоточном режиме хотя бы на внешних дорожках скорость чтения сравнима с SATA SSD. Но если нужно считать 32 ГБ в 32-х файлах по 1 ГБ, производительность резко падает почти до уровня одиночного винчестера (кэширование же при таких объемах ничем помочь уже не может). Для твердотельных же накопителей, напротив, это идеальный случай. А если они не ограничены интерфейсом — тем более.
Чем, все-таки, до сих пор привлекательны механические накопители — симметричностью производительности при записи и чтении, чего для флэш-памяти и близко нет. Соответственно, на операциях записи даже некоторые NVMe-накопители могут оказаться медленнее одиночного современного винчестера. Двух — тем более. Но если не рассматривать самые медленные из устройств, то опять ничего похожего на «честную конкуренцию» не наблюдается.
А запись одновременно с чтением — хороший случай для большинства SSD и плохой для винчестеров. Причем твердотельным накопителям и (псевдо)случайный режим «жизнь не портит», в отличие от. Таким образом, быстро прочитать или записать большой объем данных современные винчестеры могут — если есть куда или откуда. Объединенными в массив RAID0 сделают это быстрее. Но поскольку обработка данных предполагает обычно и запись, и чтение, и далеко не всегда последовательные — для этой цели уже лучше использовать твердотельные накопители. Если, конечно, объемы позволяют. А вот хранить данные лучше там, где это обходится дешевле.
Производительность в приложениях
Но основной темой сегодняшней статьи было вовсе не исследование вопросов хранения и обработки больших массивов данных, хотя и это тоже интересно. Еще важнее — оценить перспективность использования RAID0 для ускорения обычной работы за компьютером. Когда-то это позволяло что-то выиграть сравнительно с одиночным винчестером, но тогда и программы были другими, да и операционные системы тоже. Да и сравнивать сейчас уже нужно не только «механику с механикой». Вот и сравним :)
Тестируя SSD, мы временами жаловались на то, что с точки зрения тестов высокого уровня они слишком похожи. Тестируя винчестеры — аналогично. Но они «по-разному похожи»: это два непересекающихся мира. А одиночный винчестер и RAID0 из винчестеров — один мир. Совсем один. Потенциальное ускорение от чередования к настоящему моменту по сути рассосалось: современные операционные системы и с одиночным винчестером работают настолько эффективно, насколько он позволяет (чему сильно помогает развитое кэширование данных в оперативной памяти, радикально улучшившееся в современных версиях Windows — пусть это и вызывает жалобы некоторых пользователей, привыкших к примитивной Windows XP и более ранним, на «расход памяти»). Снижение задержек пригодилось бы, но его при чтении данных (что важно для тестов высокого уровня) как раз и нет.
И даже по низкоуровневому баллу появляются различия между разными моделями твердотельных накопителей, но не более того. Винчестеры (что с ними не делай) намного медленнее. Причем в этом случае и порядки-то величин разные, что «замаскировать» получается лишь потому, что реальная работа приложений «упирается» и в другие компоненты компьютера. А иногда и в самого пользователя, что и не всегда позволяет реализовать потенциальные возможности накопителей. Твердотельных. У «механики» таковых и не водится.
Кстати, и предыдущая версия тестового пакета ведет себя аналогично. Когда-то, кстати, PCMark на массивы реагировал хорошо — но это было под управлением других ОС и на трассах, имитирующих другие приложения. А сейчас уже так. Подробные результаты, думаем, уже не нужны.
Рейтинги
Как видим, с точки зрения тестов низкого уровня, ориентированных в первую очередь на SSD (так что изобилующими операциями со случайным доступом) сравнивать «механику» (что с ней не делай) и SSD большого смысла нет. Но и ничего удивительного в этом тоже уже нет — для винчестеров лучший сценарий это однопоточный последовательный, однако, как уже было показано выше, и в этом случае о прямой конкуренции говорить не всегда приходится. Иногда при записи, разве что, но и при этом «потолок» винчестеров (и массивов из них) сопоставим лишь с «полом» твердотельных накопителей с SATA-интерфейсом (eMMC-модули — отдельная история; но они и используются чаще всего там, куда никакие другие накопители просто «не лезут»).
Да и «подмешивание» к оценке результатов тестов высокого уровня не слишком меняет картину. По совокупности разные SSD при этом отличаются друг от друга примерно вдвое, поскольку мы взяли один из самых медленных и один из самых быстрых из протестированных накопителей, радикально различающихся конструктивно. Однако при этом и «самый медленный» быстрее массива RAID0 из пары топовых винчестеров даже не в два, а в два с половиной раза. Комментарии излишни.
Итого
В общем и целом, картина понятная. Равно как понятно и то, почему тема RAID-массивов в персональных компьютерах практически сошла на нет. Во всяком случае, в их «винчестерной» ипостаси — с массивами из SSD некоторые энтузиасты продолжают баловаться, чему способствуют производители, реализовав, в частности, возможность создания RAID из NVMe-устройств. Да и в топовых ноутбуках нет-нет да и встречаются RAID0 из пары твердотельных накопителей — в основном, конечно, чтобы блистать в обзорах. На этом всё. В тех сферах, где технология RAID-массивов зарождалась, она по-прежнему является нужной и полезной, но в ПК ей делать особо нечего. С одной стороны, современные ОС способны и из одиночного винчестера «выжимать» все, на что он способен, так что улучшением части характеристик «подстегнуть» производительность не получится. С другой — доступными стали более быстрые накопители. В том числе, существенно более быстрые в тех сценариях, ради которых до сих пор имеет смысл использовать RAID-массивы с увеличением производительности (благодаря чередованию). А «настоящие» RAID (т. е. с избыточностью хранения данных) по-прежнему полезны, но в бюджетном исполнении силами программного обеспечения они могут заметно понизить производительность. Кроме того, RAID в любом случае не заменяет резервного копирования данных, так что начинать надо с него, а не наоборот.
IOPS (количество операций ввода/вывода – от англ. Input/Output Operations Per Second) – один из ключевых параметров при измерении производительности систем хранения данных, жестких дисков (НЖМД), твердотельных диски (SSD) и сетевых хранилища данных (SAN).
По сути, IOPS это количество блоков, которое успевает считаться или записаться на носитель. Чем больше размер блока, тем меньше кусков, из которых состоит файл, и тем меньше будет IOPS, так как на чтение куска большего размера будет затрачиваться больше времени.
Значит, для определения IOPS надо знать скорость и размер блока при операции чтения / записи. Параметр IOPS равен скорости, деленной на размер блока при выполнении операции.
Характеристики производительности
Основными измеряемыми величинами являются операции линейного (последовательного) и произвольного (случайного) доступа.
Под линейными операциям чтения/записи, при которых части файлов считываются последовательно, одна за другой, подразумевается передача больших файлов (более 128 К). При произвольных операциях данные читаются случайно из разных областей носителя, обычно они ассоциируются с размером блока 4 Кбайт.
Ниже приведены основные характеристики:
Параметр | Описание |
Всего IOPS (Total IOPS) | Суммарное число операций ввода/вывода в секунду (при выполнении как чтения, так и записи) |
IOPS произвольного чтения (Random Read) | Среднее число операций произвольного чтения в секунду |
IOPS произвольной записи (Random Write) | Среднее число операций произвольной записи в секунду |
IOPS последовательного чтения (Sequential Read) | Среднее число операций линейного чтения в секунду |
IOPS последовательной записи (Sequential Write) | Среднее число операций линейной записи в секунду |
Приблизительные значения IOPS
Приблизительные значения IOPS для жестких дисков.
Устройство | Тип | IOPS | Интерфейс |
7,200 об/мин SATA-диски | HDD | ~75-100 IOPS | SATA 3 Гбит/с |
10,000 об/мин SATA-диски | HDD | ~125-150 IOPS | SATA 3 Гбит/с |
10,000 об/мин SAS-диски | HDD | ~140 IOPS | SAS |
15,000 об/мин SAS-диски | HDD | ~175-210 IOPS | SAS |
Приблизительные значения IOPS для SSD.
Устройство | Тип | IOPS | Интерфейс |
Intel X25-M G2 MLC | SSD | ~8 600 IOPS | SATA 3 Гбит/с |
OCZ Vertex 3 | SSD | ~60 000 IOPS (Произвольная запись 4K) | SATA 6 Гбит/с |
OCZ RevoDrive 3 X2 | SSD | ~200 000 IOPS (Произвольная запись 4K) | PCIe |
OCZ Z-Drive R4 CloudServ | SSD | ~1 400 000 IOPS | PCIe |
RAID пенальти
Любые операции чтения, которые выполняются на дисках, не подвергаются никакому пенальти, поскольку все диски могут использоваться для операций чтения. Но всё на оборот с операциями на запись. Количество пенальти на запись зависят от типа выбранного RAID-а, например.
В RAID 1 чтобы данные записались на диск, происходит две операции на запись (по одной записи на каждый диск), и следовательно RAID 1 имеет два пенальти.
В RAID 5 чтобы записать данные происходит 4 операции (Чтение существующих данных, четность RAID, Запись новых данных, Запись новой четности) тем самым пенальти в RAID 5 составляет 4.
В этой таблице приведено значение пенальти для более часто используемых RAID конфигурации.
RAID | I/O Пенальти |
RAID 0 | 1 (Edited by Reader) |
RAID 1 | 2 |
RAID 5 | 4 |
RAID 6 | 6 |
RAID 10 | 2 |
Характеристика рабочих нагрузок
Характеристика рабочей нагрузки в основном рассматривается как процент операции чтений и записей, которые вырабатывает или требует приложение. Например, в среде VDI процентное соотношение IOPS рассматривается как 80-90% на запись и 10-20% на чтение. Понимание характеристики рабочей нагрузки является наиболее критическим фактором, поскольку от этого и зависит выбор оптимального RAID для среды. Приложения которые интенсивно используют операции на запись являются хорошими кандидатами для RAID 10, тогда как приложения которые интенсивно используют операции на чтение могут быть размещены на RAID 5.
Вычисление IOPS
Есть два сценария вычисления IOPS-ов.
Один из сценариев это когда есть определенное число дисков, и мы хотим знать, сколько IOPS эти диски выдадут?
Второй сценарий, когда мы знаем сколько нам IOPS-ов надо, и хотим вычислить нужное количество дисков?
Сценарий 1: Вычисление IOPS исходя из определенного кол-ва дисков
Представим что у нас есть 20 450GB 15к RPM дисков. Рассмотрим два сценария Рабочей нагрузки 80%Write-20%Read и другой сценарий с 20%Write-80%Read. Также мы вычислим количество IOPS как для RAID5 и RAID 10.
Формула для расчета IOPS:
Total Raw IOPS = Disk Speed IOPS * Number of disks
Functional IOPS =(((Total Raw IOPS×Write %))/(RAID Penalty))+(Total Raw IOPS×Read %)
Есть определение Raw IOPS и Functional IOPS, как раз токи Functional IOPS-ы и есть те IOPS-ы которые включают в себя RAID пенальти, и это и есть “настоявшие” IOPS-ы.
А теперь подставим цифры и посмотрим что получится.
Total Raw IOPS = 170*20 = 3400 IOPS (один 15K RPM диск может выдать в среднем 170 IOPS)
Для RAID-5
Вариант 1 (80%Write 20%Read) Functional IOPS = (((3400*0.8))/(4))+(3400*0.2) = 1360 IOPS
Вариант 2 (20%Write 80%Read) Functional IOPS = (((3400*0.2))/(4))+(3400*0.8) = 2890 IOPS
Для RAID-1
Вариант 1 (80%Write 20%Read) Functional IOPS = (((3400*0.8))/(2))+(3400*0.2) = 2040 IOPS
Вариант 2 (20%Write 80%Read) Functional IOPS = (((3400*0.2))/(2))+(3400*0.8) = 3100 IOPS
Сценарий 2: Подсчет кол-ва дисков для достижения определенного кол-ва IOPS
Рассмотрим ситуацию где нам надо определить тип RAID-а и количества дисков для достижения определенного количества IOPS-ов 5000 и с определенными рабочими нагрузками, например 80%Write20%Read и 20%Write80% Read.
Опять же для начала формула по которой и будем считать:
Total number of Disks required = ((Total Read IOPS + (Total Write IOPS*RAID Penalty))/Disk Speed IOPS)
Total IOPS = 5000
Теперь подставим цифры.
Заметка: 80% от 5000 IOPS = 4000 IOPS и 20% от 5000 IOPS = 1000 IOPS с этими цифрами и будем оперировать.
Для RAID-5
Вариант 1 (80%Write20%Read) – Total Number of disks required = ((1000+(4000*4))/170) = 100 дисков.
Вариант 2 (20%Write80%Read) – Total Number of disks required = ((4000+(1000*4))/170) = 47 дисков приблизительно.
Для RAID-1
Вариант 1 (80%Write20%Read) – Total Number of disks required = ((1000+(4000*2))/170) = 53 диска приблизительно.
Вариант 2 (20%Write80%Read) – Total Number of disks required = ((4000+(1000*2))/170) = 35 дисков приблизительно.
Понимание и подсчет IOPS, RAID пенальти, и характеристик рабочих нагрузок очень критичны аспект при планировании. Когда нагрузка более интенсивна на запись луче выбирать RAID 10 и наоборот при нагрузках на чтение RAID 5.
Программы для измерения IOPS
IOmeter — тест IOPS
IOzone — тест IOPS
FIO — тест IOPS
CrystalDiskMark — тест IOPS
SQLIO — набор тестов для расчета производительности (IOPS, MB, Latency) под сервера БД
wmarow — калькулятор RAID групп по производительности IOPS
IOPS используется для определения производительности диска или дискового массива.
IOPS означает Input/Output (operations) Per Second , количество “операций ввода/вывода в секунду”. Величина измеряет объем работы за определенный промежуток времени. По сути, IOPS это количество блоков, которое успевает считаться или записаться на носитель. Чем больше размер блока, тем меньше кусков, из которых состоит файл, и тем меньше будет IOPS, так как на чтение куска большего размера будет затрачиваться больше времени.
“Операция ввода/вывода” - это просто некая часть работы дисковой подсистемы, которая совершается в ответ на запрос хост-сервера и/или некоторых внутренних процессов. Обычно это чтение или запись с различными подкатегориями, например “чтение” (read), “повторное чтение” (re-read), “запись”(write), “перезапись” (re-write), “произвольный тип доступа” (random), “последовательный тип доступа” (sequential) и размер оперируемого блока данных.
Основными измеряемыми величинами являются операции линейного (последовательного) и произвольного (случайного) доступа.
Под линейными операциям чтения/записи, при которых части файлов считываются последовательно, одна за другой, подразумевается передача больших файлов (более 128 К). При произвольных операциях данные читаются случайно из разных областей носителя, обычно они ассоциируются с размером блока 4 Кбайт.
В зависимости от вида операции, этот размер может варьироваться от байт до килобайт и даже нескольких мегабайт. Существует множество типов ввода/вывода и многозадачная и многохостовая система почти никогда не использует какой-то один. Виртуализация только добавляет разнообразия к паттернам ввода/вывода.
Никакая система хранения не может показывать максимальные значения IOPS безотносительно к характеру операций ввода/вывода, значений latency и размеру блоков.
Latency это мера того, сколько времени занимает выполнение одного запроса ввода/вывода, с точки зрения приложения.
Значительные объемы I/O wait это признак того, что источник проблем - хранилище (существуют и другие источники задержек, CPU и сеть - это обычные примеры). Даже в случае хороших показателей latency, если вы видите большое количество I/O waits - это значит, что приложение хотело бы больше скорости от системы хранения.
Определение производительности дисковой системы - это часто игнорируемый аспект проектирования систем. Поскольку дисковая система является самой медленной средой на компьютере, она должна быть одной из ПЕРВЫХ компонентов, спецификация которых правильно определена.
Приложения которые интенсивно используют операции на запись являются хорошими кандидатами для RAID 10, тогда как приложения которые интенсивно используют операции на чтение могут быть размещены на RAID 5.
IOPS используются для определения производительности диска или дискового массива. Для примера можно считать, что максимальный IOPS для диска:
ПРИМЕЧАНИЕ. Для расчета фактического IOPS для диска требуется следующая информация: Average latency , Average seek time . Эту информацию можно получить от производителя
Вычислим максимальный IOPS для диска
Для примера возьмем диск: Seagate ST500DM002-1BC142
Чтобы вычислить IOPS используем уравнение:
Итого, максимальный IOPS - 79.
Вычисляем максимальное значение IOPS для дискового массива
В примечании к разработке системы хранения, вычисление производительности дисковой системы имеет решающее значение для работы данной системы. Большинство систем используют RAID для обеспечения избыточности хранилища. В этом разделе описывается, как вычисляются IOPS для RAID-массивов.
Максимальное значение IOPS для чтения
Вычисление максимального значения IOPS чтения (maxReadIops) для RAID-массива:
maxReadIops = numDisks * diskMaxIops
Соответственно для массива из 4 дисков максимальное значение IOPS чтения будет следующим:
Максимальное значение IOPS для записи
Вычисление максимального значения IOPS записи (maxWriteIops) - это совсем другое в отношении RAID-массивов. RAID-массивы имеют штраф на запись, а тип RAID-массива определяет серьёзность штрафа. Этот штраф является результатом избыточности, которую предоставляет RAID, поскольку массив обязательно должен записывать данные на несколько дисков/локаций для обеспечения целостности данных.
Штраф на запись RAID-массива
Наиболее распространенные типы RAID и их штрафы на запись определяются в следующей таблице:
RAID Type | Write Penalty |
---|---|
RAID 1 | 2 |
RAID 5 | 4 |
RAID 6 | 6 |
RAID 10 | 2 |
Чтобы вычислить максимальное значение IOPS записи (maxWriteIops) для заданного RAID-массива, разделим максимальное значение IOPS чтения (maxReadIops) на штраф за запись RAID-массива (raidWritePenalty): maxWriteIops = maxReadIops / raidWritePenalty
Используя наш пример с 4-мя дисками и конфигурацией RAID 10, получаем следующие значения:
Итого, для нашего примера, максимальное значение IOPS на запись для массива RAID 10 - 158.
Проектирование для производительности
Простое вычисление максимального количества IOPS для чтения и записи для существующего или будущего RAID-массива недостаточно. Для обеспечения последовательной и устойчивой производительности необходимо определить требования к производительности для системы, чтобы определить лучшее решение для диска. Минимальный требуемый IOPS должен быть определен таким образом, чтобы можно было приобрести необходимое количество дисков с требуемой скоростью.
Для начала необходимо знать требования к производительности (например, чтение и запись IOPS) для данной системы или приложения. Эта информация может быть получена из документации поставщика или программного обеспечения.
Вычисление минимально необходимого IOPS
Предположим, что у нас есть приложение, которое требует 600 Read IOPS и
300 Write IOPS . Дисковый массив собран в RAID 5.
Чтобы вычислить минимальное количество IOPS (minReqdIops), добавьте количество требуемых IOPS чтения (reqdReadIops) к сумме количества требуемых IOPS записи (reqdWriteIops) и штрафа RAID (raidWritePenalty): minReqdIops = reqdReadIops + (reqdWriteIops * raidWritePenalty)
В нашем примере:
Минимальное количество IOPS, необходимое для обеспечения уровня производительности для нашего примера - 1800.
ПРИМЕЧАНИЕ. Этот расчет определяет минимальное количество IOPS, необходимое для соответствия спецификации производительности. Это означает, что дисковый массив НЕ должен работать ниже этого уровня производительности.
Вычисляем минимальное количество дисков для RAID-массива
Как только минимальное количество требуемых IOPS определено, очень легко определить минимальное количество и скорость дисков, необходимых для создания RAID-массива для удовлетворения требований к производительности.
Минимальное количество дисков по скорости диска
Минимальное количество дисков, необходимых для выполнения нашего требования к производительности (minNumDiskMinPerf), рассчитывается следующим образом: minNumDisksMinPerf = minReqdIops / maxIopsByDiskSpeed
Используя информацию из расчета минимально необходимых IOPS выше и предполагая, что мы хотим создать массив из 10 000 RPM-дисков (~125-150 IOPS), вычисление минимального количества дисков, которое будет соответствовать нашим минимальным требованиям к производительности (minNumDisksMinPerf) 1800 IOPS (minReqdIops) выглядит следующим образом:
Минимальное количество дисков 10 000 RPM, необходимых для удовлетворения наших требований к производительности, - 14.
Минимальное количество дисков по типу RAID
Тип RAID определяет минимальное количество дисков для удовлетворения требований типа RAID. Например, для RAID 5 всегда требуется как минимум 3 диска. Для RAID 10 всегда требуется как минимум 4 диска.
Для любых массивов, требующих большого количества дисков, используйте множитель в приведенной ниже таблице, чтобы определить правильное количество дисков для соответствия требованиям типа RAID:
Тип RAID | Количество дисков | RAID множитель |
---|---|---|
RAID5 | 3 | N/A |
RAID10 | 4 | 4 |
После вычисления количества дисков по скорости, определяем минимальное количество дисков, требуемых по типу RAID.
В примере, когда 10K RPM-диски были выбраны для построения массива, расчет показывает, что требуется не менее 14 дисков. Если тип RAID будет 5, 14 дисков будет достаточным. Однако, если тип RAID будет равен 10, минимальное количество дисков, требуемых этим типом RAID, будет 8, поскольку множитель для RAID 10 равен 4.
Программы для измерения IOPS
IOmeter — тест IOPS
IOzone — тест IOPS
FIO — тест IOPS
CrystalDiskMark — тест IOPS
SQLIO — набор тестов для расчета производительности (IOPS, MB, Latency) под сервера БД
wmarow — калькулятор RAID по производительности IOPS
Determining which type of RAID to use when building a storage solution will largely depend on two things; capacity and performance. Performance is the topic of this post.
We measure disk performance in IOPS or Input/Output per second. One read request or one write request = 1 IO. Each disk in you storage system can provide a certain amount of IO based off of the rotational speed, average latency and average seek time. I’ve listed some averages for each type of disk below.
So for some basic IOPS calculations we’ll assume we have three JBOD disks at 5400 RPM, we can assume that we have a maximum of 150 IOPS. This is calculated by taking the number of disks times the amount of IOPS each disk can provide.
But now we assume that these disk are in a RAID setup. We can’t get this maximum amount of IOPS because some sort of calculation needs to be done to write data to the disk so that we can recover from a drive failure. To illustrate lets look at an example of how parity is calculated.
Lets assume that we have a RAID 4 system with four disks. Three of these disks will have data, and the last disk will have parity info. We use an XOR calculation to determine the parity info. As seen below we have our three disks that have had data written to them, and then we have to calculate the parity info for the fourth disk. We can’t complete the write until both the data and the parity info have been completely written to disk, in case one of the operations fails. Waiting the extra time for the parity info to be written is the RAID Penalty.
Notice that since we don’t have to calculate parity for a read operation, there is no penalty associated with this type of IO. Only when you have a write to disk will you see the RAID penalty come into play. Also a RAID 0 stripe has no write penalty associated with it since there is no parity to be calculated. A no RAID penalty is expressed as a 1.
RAID 1
It is fairly simple to calculate the penalty for RAID 1 since it is a mirror. The write penalty is 2 because there will be 2 writes to take place, one write to each of the disks.
RAID 5
RAID 5 is takes quite a hit on the write penalty because of how the data is laid out on disk. RAID 5 is used over RAID 4 in most cases because it distributes the parity data over all the disks. In a RAID 4 setup, one of the disks is responsible for all of the parity info, so every write requires that single parity disk to be written to, while the data is spread out over 3 disks. RAID 5 changed this by striping the data and parity over different disks.
The write penalty ends up being 4 though in a RAID 5 scenario because for each change to the disk, we are reading the data, reading the parity and then writing the data and writing the parity before the operation is complete.
RAID 6
RAID 6 will be almost identical to RAID 5 except instead of calculating parity once, it has to do it twice, therefore we have three reads and then three writes giving us a penalty of 6.
RAID DP
RAID DP is the tricky one. Since RAID DP also has two sets of parity, just like RAID 6, you would think that the penalty would be the same. The penalty for RAID DP is actually very low, probably because of how the Write Anywhere File Layout (WAFL) writes data to disk. WAFL will basically write the new data to a new location on the disk and then move pointers to the new data, eliminating the reads that have to take place. Also, these writes are written to NVRAM first and then flushed to disk which speeds up the process. I welcome any Netapp experts to post comments explaining in more detail how this process cuts down the write penalties.
Calculating the IOPS
Now that we know the penalties we can figure out how many IOPS our storage solution will be able to handle. Please keep in mind that other factors could limit the IOPS such as network congestion for things like iSCSI or FCoE, or hitting your maximum throughput on your fibre channel card etc.
Raw IOPS = Disk Speed IOPS * Number of disks
Functional IOPS = (Raw IOPS * Write % / RAID Penalty) + (RAW IOPS * Read %)
To put this in a real world example, lets say we have five 5400 RPM disks. That gives us a total Raw IOPS of 250 IOPS. (50 IOPS * 5 disks = 250 IOPS).
If we were to put these disks is a RAID 5 setup, we would have no penalty for reads, but the writes would have a penalty of four. Lets assume 50% reads and writes.
Технология объединения физических дисков в логический том — RAID — имеет огромное количество вариаций. Практическую реализацию в системах хранения данных и серверном оборудовании можно встретить у следующих спецификаций: RAID 0, 1, 3, 4, 5, 6, DP, 10, 50, 60, однако в коммерческом применении как правило используются только некоторые из них.
Таблица сравнения коммерчески используемых типов RAID
Тип RAID | Производительность в IOPS при операциях записи | Производительность во время цикла восстановления (Rebuild) | Время восстановления RAID | Эффективность использования дискового пространства |
---|---|---|---|---|
RAID 5 | Хорошая | Плохая | Плохое | Очень хорошая |
RAID 6 | Плохая | Хорошая | Плохое | Хорошая |
RAID 10 | Лучшая | Лучшая | Лучшее | Плохая |
RAID DP | Очень хорошая | Очень хорошая | Хорошее | Хорошая |
RAID TEC | Хорошая | Хорошая | Хорошее | Очень хорошая |
RAID 0
RAID 0 — массив дисков с чередованием данных (страйп). При использовании RAID 0 блоки данных записываются по очереди на каждый диск, что существенно увеличивает производительность операций чтения и записи. Избыточность данных отсутствует, поэтому выход из строя любого диска ведет к потере данных всей RAID-группы.
Использование:
Рекомендуется использовать RAID 0 для быстрого доступа к неважным или временным данным, когда требуется высокая производительность и имеется возможность в случае сбоя восстановить информацию. Типичным сценарием использования можно назвать пост-обработку видео или кэширование данных.
Формула эффективности:
S * N, где N — количество дисков в массиве, S — объем наименьшего диска.
RAID 1
RAID 1 — зеркалированный массив дисков (зеркало). Блоки данных записываются на все диски одновременно, поэтому допустим выход из строя всех дисков, кроме одного. Данная конфигурация обладает наименьшей эффективностью использования дискового пространства, и, как следствие, наибольшей стоимостью при использовании трех и более дисков.
Использование:
Рекомендуется использовать RAID 1 для максимального повышения надежности хранения и доступности данных. Наиболее частым сценарием является зеркалирование двух системных дисков серверов.
Формула эффективности:
S, где S — объем наименьшего диска.
RAID 3
RAID 3 — массив дисков с побайтным чередованием с одним выделенным диском четности на группу. Байты данных записываются поочередно на все диски, кроме одного. Отдельный диск выделяется для хранения информации о четности.
Использование:
Из-за побайтового чередования RAID 3 подходит для работы с большими файлами, однако на практике не используется в коммерческих задачах в связи с невысокой надежностью.
Формула эффективности:
S * (N - 1), где N — количество дисков в массиве, S — объем наименьшего диска.
RAID 4
RAID 4 — массив дисков с поблочным чередованием с одним выделенным диском четности на группу. Принцип работы похож на RAID 3, но данные разбиваются не на байты, а на блоки. Это увеличивает производительность при работе с небольшими файлами. Слабым местом RAID 4 является диск четности, на который ложится большая нагрузка в RAID-группе. Как следствие, диск четности почти всегда первым выходит из строя.
Использование:
RAID 4 ранее использовался в дисковых массивах NetApp серии FAS, где недостаток надежности компенсировался принципом записи файловой системы WAFL (Write Anywhere File Layout). Рекомендуется только для временных и неважных данных. На данный момент RAID 4 в СХД NetApp вытесняется RAID DP.
В соответствии с рекомендациями компании NetApp, оптимальный размер RAID группы для NL-SAS составляет 7 дисков; для SAS или SSD — от 8 до 14 дисков.
Формула эффективности:
S * (N - 1), где N — количество дисков в массиве, S — объем наименьшего диска.
RAID 5
RAID 5 — массив дисков с поблочным чередованием с одной контрольной суммой. При построении RAID 5 для контрольных сумм не выделяется отдельный диск, как в RAID 4, вместо этого данные циклически записываются на все диски. Аналогично RAID 4, RAID 5 позволяет производить параллельную запись, что существенно увеличивает производительность. Нагрузка на диск четности равномерно распределяется по всем дискам в массиве.
Использование:
RAID 5 широко применяется в реальных бизнес-задачах. Типовым сценарием является использование в серверах в области хранения данных для пользовательских приложений и выполнения транзакций. Использовать в СХД рекомендуется в первую очередь для маловажной информации с небольшой нагрузкой на диски, например, в системах видеонаблюдения.
Формула эффективности:
S * (N - 1), где N — количество дисков в массиве, S — объем наименьшего диска.
RAID 6
RAID 6 — массив дисков с поблочным чередованием с двумя контрольными суммами. Данные распределяются по дискам массива по очереди, в качестве информации для восстановления используется схема двойной четности. RAID 6 может выдержать отказ двух дисков одновременно, однако низкая производительность по операциям ввода-вывода (IOPS) ограничивает область применения.
Использование:
Сценарии применения RAID 6 аналогичны RAID 5 с уклоном в более надежное хранение информации. RAID 6 широко применяется в системах хранения данных, где не важна высокая транзакционная производительность — архивное хранение, видеонаблюдение стратегических объектов, использование в системах безопасности, а также для надежного хранения критически важных данных.
Формула эффективности:
S * (N - 2), где N — количество дисков в массиве, S — объем наименьшего диска.
RAID DP
RAID DP — массив дисков с двойной четностью в линейке продукции FAS компании NetApp. Под контрольные суммы выделяются два отдельных диска. Благодаря использованию файловой системы WAFL транзакционная производительность выше, чем в RAID 5 и RAID 6.
Использование:
Является основным типом RAID в оборудовании NetApp линейки FAS. Рекомендуется для SSD дисков, SATA/NL-SAS дисков объемом менее 6TB (для дисков большего объема рекомендуется RAID-TEC).
В соответствии с рекомендациями компании NetApp, оптимальный размер RAID группы — от 14 до 20 дисков.
Формула эффективности:
S * (N - 2), где N — количество дисков в массиве, S — объем наименьшего диска.
RAID TEC
RAID TEC — массив дисков с тройной четностью в линейке продукции FAS компании NetApp. Данный тип RAID разработан для медленных объемных дисков с устойчивой производительностью во время восстановления.
Использование:
Рекомендуется для SATA/NL-SAS дисков объемом 6TB и более.
В соответствии с рекомендациями компании NetApp, оптимальный размер RAID группы — от 20 до 29 дисков.
Формула эффективности:
S * (N - 3), где N — количество дисков в массиве, S — объем наименьшего диска.
RAID 10
RAID 10 — массив дисков с зеркалированием и чередованием. Представляет собой массив RAID 0 из нескольких массивов RAID 1. В реализации RAID 10 на практике каждый подмассив RAID 1 состоит из двух дисков, поэтому допускается выход из строя не более одного диска в каждом подмассиве. RAID 10 обладает самой высокой производительностью и надежностью, при этом эффективность использования дискового пространства составляет 50%.
Использование:
Основным сценарием применения является использование для работы с базами данных (Oracle, SAP HANA, SQL) и другими высокотранзакционными нагрузками.
Формула эффективности:
S * N / 2, где N — количество дисков в массиве, S — объем наименьшего диска.
RAID 50
RAID 50 — массив дисков, состоящий из чередования массивов RAID 5. Реализуется построением страйпа (RAID 0) из RAID 5. Допускается отказ не более одного диска в каждом подмассиве. Производительность RAID 50 выше, чем при использовании RAID 5, и стремится к RAID10, но надежность недостаточна для применения в реальных бизнес-задачах.
Использование:
Поддерживается ограниченным количеством производителей, т.к. не рекомендуется к использованию ввиду низкой надежности. Возможная модель использования предполагает хранения временных или неважных данных.
Формула эффективности:
S * (N - 2), где N — количество дисков в массиве, S — объем наименьшего диска.
RAID 60
RAID 60 — массив дисков, состоящий из чередования массивов RAID 6. Реализуется построением страйпа (RAID 0) из RAID 6. Допускается отказ до двух дисков в каждом подмассиве. Обладает базовой надежностью и невысокой эффективностью используемого пространства . Для построения минимальной RAID-группы требуется 8 дисков.
Использование:
Поддерживается ограниченным количеством производителей, т.к. не обладает явными преимуществами по сравнению с использованием других типов RAID. Область практического применения ограничена.
Формула эффективности:
S * (N - 4), где N — количество дисков в массиве, S — объем наименьшего диска.
Читайте также: