RAID-массивы. Компромиссы RAID-технологии. Производительность RAID-систем, страница 2

Треугольник показывает взаимосвязь производительности (или емкости), стоимости и отказоустойчивости RAID-массивов. В каждом из углов один из показателей максимизируется за счет двух других. Точка "A" представляет собой сбалансированное состояние. Точки "B", "C" и "D" показывают плюсы двух показателей за счет третьего: это и есть точки "выбирай два".

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

Важно подчеркнуть, что хотя RAID-массив может значительно повысить надежность и производительность подсистемы памяти РС, многое он не может. Очень опасно считать, что сам факт использования RAID-массива образует полностью неуязвимую систему. Несмотря на то, что встроенная в RAID-массив избыточность предоставляет определенную защиту, нельзя пренебрегать обычными средствами профилактики, сопровождения и резервирования.

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

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

Общие принципы организации RAID-массивов

Зеркалирование

Зеркалирование (mirroring) - это один из двух способов введения в RAID-системах избыточных данных (вторым способом является паритет - parity). В RAID-системе с зеркалированием все данные в системе одновременно записываются в два накопителя, что и объясняет принцип "зеркала". Такая 100%-ая избыточность данных обеспечивает полную защиту от отказа любого диска, содержащего задублированные данные. По очевидным причинам в RAID-конфигурациях всегда требуется четное число накопителей.

Основное преимущество зеркалирования заключается в том, что оно обеспечивает не только полную избыточность данных, но и быстрое восстановление при отказе диска. Так как все данные содержатся во втором накопителе, он готов к работе при отказе первого накопителя. Зеркалирование также улучшает некоторые формы считывания (хотя производительность по записи снижается). Основной недостаток зеркалирования – дороговизна: дублирование данных означает, что половина дискового пространства "пропадает", поэтому требуется удвоенная емкость по сравнению с рабочей емкостью.

На рисунке представлена блок-схема RAID-конфигурации с зеркалированием. RAID-контроллер дублирует одну и ту же информацию на каждый из двух жестких дисков. Отметим, что RAID-контроллер представлен "логическим черным ящиком", так как его функции можно реализовать программно или несколькими аппаратными типами (интегрированный контроллер, шинная карта или автономный RAID-массив).

Дуплексирование

При дуплексировании (duplexing) как и при зеркалировании, все данные дублируются на два физических накопителя. Однако дуплексирование дублирует также все схемы, которые управляют двумя накопителями (или набором накопителей). В случае дуплексирования один из накопителей подключается к одному адаптеру, а другой ко второму адаптеру.

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

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

Чередование

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

Чередование можно выполнить на байтовом или блоковом уровне. Чередование на байтовом уровне означает, что файл разбивается на байтовые "кусочки". Первый байт файла посылается в первый накопитель, второй байт - во второй накопитель и т.д. Иногда чередование на байтовом уровне выполняется в виде сектора из 512 байтов. Чередование на блоковом уровне означает, что файл разбивается на блоки определенного размера, которые распределяются между накопителями. Используемый размер блока (block size) называется также размером полосы (stripe size) и определяется при настройке массива.