Я много читал о контроллерах / настройках RAID, и одна вещь, которая часто возникает, - это то, как аппаратные контроллеры без кеша обеспечивают ту же производительность, что и программный RAID. Так ли это на самом деле?
Я всегда думал, что аппаратные RAID-карты будут обеспечивать лучшую производительность даже без кеша. Я имею в виду, что у вас есть специальное оборудование для выполнения задач. Если это так, то каковы преимущества использования карты RAID без кеша, например LSI 9341-4i, которая не совсем дешевая.
Кроме того, если повышение производительности возможно только с помощью кеша, существует ли конфигурация кеша, которая сразу записывает на диск, но сохраняет данные в кеше для операций чтения, делая BBU не приоритетным?
Коротко: Если вы используете карту RAID низкого уровня (без кеша), сделайте себе одолжение и переключитесь на программный RAID. Если вы используете карту среднего и высокого класса (с BBU или NVRAM), то аппаратное обеспечение часто (но не всегда! См. Ниже) является хорошим выбором.
Длинный ответ: когда вычислительная мощность была ограничена, аппаратные RAID-карты имели значительное преимущество в плане разгрузки расчета четности / синдрома для схем RAID с их участием (RAID 3/4/5, RAID6 и т. д.).
Однако с постоянно растущей производительностью процессора это преимущество практически исчезло: даже старый процессор моего ноутбука (Core i5 M 520, поколение Westmere) имеет производительность XOR более 4 ГБ / с и производительность синдрома RAID-6 более 3 ГБ / с. через одно ядро исполнения.
Преимущество, которое сегодня поддерживает аппаратный RAID, - это наличие кэш-памяти DRAM, защищенной от потери питания, в форме BBU или NVRAM. Этот защищенный кеш обеспечивает очень низкую задержку для произвольного доступа к записи (и чтений, которые попадают) и в основном преобразует случайные записи в последовательные. RAID-контроллер без такого кеша практически бесполезен. Более того, некоторые RAID-контроллеры начального уровня не только поставляются без кеша, но и принудительно отключают частный кеш DRAM диска, что приводит к более низкой производительности, чем вообще без карты RAID. Примером могут служить карты DELL PERC H200 и H300: если более новая прошивка не изменила это, они полностью отключают частный кэш диска (и его нельзя повторно включить, пока диски подключены к контроллеру RAID). Сделай одолжение себе и сделай нет, никогда, никогда купите такие контроллеры. Хотя даже контроллеры более высокого уровня часто отключают частный кеш диска, у них, по крайней мере, есть собственный защищенный кеш, что делает частный кеш жесткого диска (но не SSD!) Несколько избыточным.
Но это еще не конец. Даже соответствующие контроллеры (с кеш-памятью BBU или NVRAM) могут давать противоречивые результаты при использовании с SSD, в основном потому, что SSD действительно необходимость быстрый частный кеш для эффективного программирования / стирания страниц FLASH. И хотя некоторые (большинство?) Контроллеров позволяют повторно включить частный кеш диска (например: PERC H700 / 710 / 710P позволяет пользователю повторно включить его), если этот частный кеш не защищен от записи, вы рискуете потерять данные в случае потери мощности. Точное поведение действительно зависит от контроллера и прошивки (например: на DELL S6 / i с 256 МБ кеш-памяти WB и кэш включенного диска, Я имел нет потерь во время многократных запланированных испытаний на потерю мощности), что вызывает неопределенность и вызывает серьезные опасения.
С другой стороны, программные RAID-массивы с открытым исходным кодом являются гораздо более управляемыми животными - их программное обеспечение не заключено в проприетарную прошивку и имеет четко определенные шаблоны и поведение метаданных. Программный RAID делает (правильное) предположение, что личный кэш DRAM диска не защищен, но в то же время он критически важен для приемлемой производительности - поэтому они обычно не отключают его, а используют команды ATA FLUSH / FUA, чтобы убедиться, что это критично. данные попадают в стабильное хранилище. Поскольку они часто работают через порты SATA, подключенные к SB чипсета, их пропускная способность очень хорошая, а поддержка драйверов превосходна.
Однако при использовании с механическими жесткими дисками синхронизированная схема произвольного доступа для записи (например, базы данных, виртуальные машины) значительно пострадает по сравнению с аппаратным RAID-контроллером с кешем WB. С другой стороны, при использовании с корпоративными твердотельными накопителями (например, с кэш-памятью записи, защищенной от потери мощности) программный RAID часто оказывается лучше и дает результаты даже выше, чем те, которые достигаются с помощью аппаратных карт RAID. Тем не менее, вы должны помнить, что потребительские твердотельные накопители (читай: с незащищенным кешем обратной записи), хотя и очень хороши при чтении и асинхронной записи, обеспечивают очень низкий IOPS в синхронизированных рабочих нагрузках записи.
Также учтите, что не все программные RAID созданы равными. Программный RAID для Windows имеет плохую репутацию, с точки зрения производительности, и даже объем хранилища не слишком отличается. Linux MD Raid исключительно быстр и универсален, но стек ввода-вывода Linux состоит из нескольких независимых частей, которые необходимо тщательно понимать, чтобы добиться максимальной производительности. RAID с контролем четности ZFS (ZRAID) чрезвычайно продвинут, но при неправильной настройке может дать вам очень плохие ВГД; С другой стороны, зеркальное отображение + чередование работает довольно хорошо. В любом случае, для синхронной обработки записи (ЗИЛ) требуется быстрое устройство SLOG.
Нижняя граница:
Обратите внимание на RAID-контроллер, дешевый и в основном поддельный. Это даже зависит от вашей материнской платы, чтобы обеспечить некоторые функции, такие как память, и не многие материнские платы поддерживают ее, что приводит к тому, что вы не можете загрузить драйвер.
О самом HW vs SW-RAID. Я больше не использую HW-RAID, если, например, это не коробка с логотипом EMC. Что касается всего остального, я просто снова переключился на SW-RAID много лун по нескольким очень простым причинам.
Вам нужно дополнительное оборудование, и вам нужно подобрать его. Вам также необходимо согласовать прошивку и синхронизировать ее. Многие диски не будут работать правильно, и у вас будут всплески задержки ввода-вывода без ясной причины.
Дополнительное оборудование стоит дорого, поэтому вы можете использовать эти дополнительные 1000 долларов (приличный контроллер с двумя / тремя дисками) для более компактного решения. Купите больше дисков и стандартных контроллеров, память ECC, более быстрый процессор. И запасной диск на месте, возможно, если вы планируете использовать его дольше гарантийного срока или не хотите платить экспресс-сборы за ночную доставку.
Обновление - это головная боль, так как вам необходимо отслеживать обновления ОС и прошивки как для диска, так и для контроллера. Это может привести к ситуации, когда обновление / обновление больше невозможно.
О форматах дисков. Достаточное количество поставщиков используют внутреннюю структуру для хранения данных, связанных с версией вашего оборудования и комбинации прошивки. Это может привести к тому, что замена детали сделает невозможным доступ к вашим данным.
Это SPOF и узкое место. Наличие только одного контроллера за одним PCI-мостом не дает вам действительно необходимой производительности и избыточности. При этом также не существует пути миграции для переноса данных на другой дисковый набор за пределами досягаемости контроллеров.
Большинство из этих моментов было учтено с помощью новых поколений программного обеспечения SW-RAID или таких решений, как ZFS и BtrFS. Имейте в виду, что в конце концов вы хотите защитить свои данные и не быстро доступный, а избыточный мусор.
Вам понадобится аккумулятор или кеш-память с резервной памятью для любого приобретенного вами аппаратного контроллера. Сожалею, что не сделал этого.
Но чтобы ответить на ваш вопрос, большинство контроллеров имеют настраиваемые коэффициенты кеширования ... так что 100% читать кеш и 0% записывать кэш устраняет необходимость в защите BBU. Ваша производительность записи просто отстой.
Я не могу ответить на ваш вопрос о программном RAID, потому что это зависит. Linux MD RAID отличается от программного RAID-массива Windows, который отличается от чего-то вроде ZFS. Такие решения, как ZFS жестяная банка работают лучше, чем оборудование, потому что они используют ресурсы ОЗУ и ЦП сервера.
Я потратил последний год (время от времени в течение 2014-2015) на тестирование нескольких параллельных конфигураций CentOS 6.6 RAID 1 (зеркальных) с использованием 2 LSI 9300 HBA и 2 RAID-контроллеров LSI 9361-8i со следующими системами: 2U Supermicro CSE- Шасси 826BAC4-R920LPB, материнская плата ASUS Z9PE-D16, 2 восьмиядерных процессора Intel Xeon E5-2687W v2 3,4 ГГц, зеркальный Seagate ST6000NM0014 6 ТБ SAS 12 ГБ, ОЗУ 512 ГБ. Обратите внимание, что это полностью совместимая конфигурация SAS3 (12 Гбит / с).
Я просмотрел статьи, написанные о программном обеспечении для настройки, и использую программный RAID для Linux более 10 лет. При запуске базовых тестов ввода-вывода (dd-oflag = прямые файлы размером от 5 КБ до 100 ГБ, hdparam -t и т. Д.) Программный RAID, кажется, лучше складывается по сравнению с аппаратным рейдом. Программный RAID зеркалируется через отдельные HBA. Я дошел до того, что провел тестирование со стандартным ядром CentOS 6, конфигурациями kernel-lt и kernel-ml. Я также пробовал различные настройки mdadm, файловой системы, дисковой подсистемы и o / s, предложенные в различных онлайн-статьях, написанных о программном RAID в Linux. Несмотря на настройку, тестирование, настройку и тестирование, при работе в мире чтения в системе обработки транзакций (имеющей базу данных MySQL или Oracle) я обнаружил, что запуск аппаратного RAID-контроллера приводит к увеличению производительности в 50 раз. Я связываю это с аппаратным управлением кешем, оптимизированным для RAID.
В течение многих-многих месяцев я не был убежден, что аппаратный RAID может быть намного лучше, однако после исчерпывающих исследований программного обеспечения RAID Linux, тестирования и настройки это были мои результаты.
Большинство авторов здесь просто игнорируют "отверстие для записи". Это основа, которая позволяет требовать наличия резервных копий аппаратных RAID-массивов по сравнению с отсутствием такового для программных RAID-массивов. Ну, например, программная реализация RAID в Linux либо поддерживает битовые карты операций записи, либо выполняет полную" четность ". -расчет в случае некорректного завершения работы. ZFS всегда стремится к полной полосе-записи, чтобы избежать этой несогласованности или откладывать ее повторную проверку. Таким образом, в целом, достаточно умный программный RAID в настоящее время часто достаточно хорош, чтобы использовать его вместо из «кто знает, что внутри» так называемого «аппаратного RAID».
Что касается части вопроса с кешем, это действительно не имеет большого значения, потому что кеш записи самой ОС может быть намного больше, чем у "аппаратного" адаптера.
Я работаю над этим все время. Это сильно зависит от того, что вы делаете, и от уровня рейда, который вы поддерживаете. SW-контроллер, использующий Raid 0 или 1 для ОС, и ничего особенного не в порядке. Запуск контроллера SW с Raid 5 в базе данных вызывает проблемы! НЕКОТОРЫЙ аппаратный контроллер действительно дает вам лучшую производительность, но это зависит от того, может ли он кэшировать и чипсет процессора рейдовой карты. Также не все программные контроллеры поддерживаются всеми ОС. Так что иногда вам, возможно, придется купить HW для запуска ESXi ... Если вы не используете sata-соединения.