12.07.2015 Views

Февраль

Февраль

Февраль

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

ХАКЕР.PROКрис КасперскиКоролевствокривых RAID-зеркалВсе, что С ты хотел знать о RAID-массивах, но боялся спроситьЛет десять назад RAID-массивы были экзотикой, встречающейся только на серверах и крутых рабочихстанциях. Сейчас же RAID-контроллеры настолько подешевели, что массово встраиваются в материнскиеплаты, соблазняя юзеров объединить несколько дисков в один массив, но за это искушение приходитсядорого платить.Смачная аббревиатура RAID расшифровываетсякак Redundant Arrayof Independent/Inexpensive Disks(дисковый массив недорогих/независимыхдисков). Дэвид Петтерсонон, Гарт Гибсон и РэндиКатц предложили для борьбы с отказамивинчестеров (тогда они случались намногочаще, чем сейчас) использовать избыточныймассив недорогих дисков. Идея получила развитие,и очень скоро в RAID'ы стали объединятьдорогие диски, поэтому слово «inexpensive»(«дешевый») заменили словом «independent»(«независимый») — сейчас RAID принято расшифровыватьименно так.Типы RAID'овНо как RAID-массивом можно распорядиться?Если объединить несколько физических дисковв один виртуальный и поблочно писать/читатьсо всех дисков сразу, мы получим RAID уровня 0(Striped Set), значительно увеличивающий скоростьопераций ввода/вывода (а, как известно,в большинстве случаев ввод/вывод — самоеузкое место в системе). В грубом приближениискорость обмена прямо пропорциональна количествудисков, то есть два диска увеличиваютпроизводительность практически вдвое.Однако здесь есть одно «но». Время поискасекторов (особенно при «далеких» позиционированиях)не постоянно, и винчестер нещадногоняет магнитную головку, отыскивая нужныйсектор методом вилки. При работе с однимжестким диском время поиска сектора равноX+/-n, где n — максимальное отклонение отсреднего времени поиска, обусловленного/ 158данные на все диски сразу, дублируя информа-конструктивными особенностями привода.При работе с массивом дисков время поискаувеличивается до X+n, поскольку контроллервынужден дожидаться завершения операцииобмена с самым медленным из дисков.Таким образом, чем больше у нас дисков, темменьший прирост производительности онидают. Переход с одного диска на два чувствуетсясразу, а добавление еще двух дисков уже практическицию, чтобы при выходе одного жесткого дискаиз строя ее было возможно автоматически восстановитьс другого. Такой массив называется«зеркальным» (Mirrored Set) и соответствуетRAID-уровню 1. При этом надежность резковозрастает, а время поиска секторов по‐прежнемуравняется X+n, то есть RAID 1 не тольконе ускоряет, но даже замедляет обмен даннымипо сравнению с обычным жестким диском.не ощущается. Тем более что при работес мелкими файлами ожидаемого ускоренияСхема хранения данных на RAID 1RAID-контроллервообще не наступает, поскольку невозможнообеспечить перекрывающееся чтение/запись| диск 1 | диск 2 | диск 3 | диск 4 | диск 5|нескольких небольших сегментов информации. | данные | копия д.1 | данные | копия д.3 | свободный |К тому же чем больше дисков, тем выше вероятностьотказа каждого из них, а посколькузапись ведется блочным образом (то есть блок1 записывается на диск 1, блок 2 — на диск 2,| Сегмент 1 | Сегмент 1 | Сегмент 2 | Сегмент 2 || Сегмент 3 | Сегмент 3 | Сегмент 4 | Сегмент 4 |RAID'ы уровней 2 и 3 обычно работают сразу||блок 3 — на диск 3 и т. д.), то при выходе одногодиска из строя из данных образуется «решето»,своеобразный реквием по хранящейся на RAID'еинформации. RAID 0 — это крайне ненадежнаяштука, и пользоваться ей можно только, например,для рабочей станции, предназначенной дляобработки цифрового видео, но ни в коем случаене для долговременного хранения данных!с пятью дисками, храня на них не только полезныеданные, но и байты четности, позволяющиевосстановить вышедший из строя диск засчет остальных. Покажем, как это происходитна примере битов (тем более что восстановлениеданных — это битовая операция). Пустьна четыре диска пишется: 1 0 1 1. Складываябиты друг с другом, получаем 3, а 3 по модулю 2Схема хранения данных на RAID 0RAID-контроллер| диск 1 | диск 2 | диск 3 | диск 4 | диск 5|| Сегмент 1 | Сегмент 2 | Сегмент 3 | Сегмент 4 | Сегмент 5|| Сегмент 6 | Сегмент 7 | Сегмент 8 | Сегмент 9 | Сегмент 10|А можно поступить иначе и писать одни и те жеравно 1, вот этот самый 1 мы и пишем на пятыйдиск. Теперь представим себе, что второй дисквышел из строя: 1 x 1 1 1. Мы вновь складываембиты, делим полученный результат по модулю 2и получаем 0, что и требовалось доказать!Дисков не обязательно должно быть пять,некоторые контроллеры работают и с тремя, ноэто неважно. Важно, что мы получаем и производительность,и надежность. Разница междуxàêåð 02 /98/ 07

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!