Тера кэш
Пришёл однажды ко мне один дядя и состоялся примерно такой диалог:
- Мне нужна машина, на которой можно хранить много и долго, и при этом читать и писать быстро!
- Задача понятна, нужно много денег и времени ;)
- Денег дам разумно, а со временем совсем туго.
- Вас понял, сделаем!
Постановка задачи
Постановка задачи более чем пространная, но в последствии её уточнили те, кто будут систему монтировать: нужен кэш, измеряемый терабайтами.
Есть две системы, каждая из которых генерирует туеву хучу трафика (в пике до гигабита каждая) и этот трафик нужно приземлять и хранить настолько долго, насколько хватит ёмкости системы.
На первом этапе ёмкость делаем оптимальную по цене, в последствии она должна быть способна к масштабированию на лету.
Ну и про отказоустойчивость не забываем. Важно чтобы данные жили в случае падения одного из винтов, но даунтайм на замену самого винта не критичен, комплекс без кэша может прожить до двух дней, так что всё делать на ХотСвопе - избыточно.
В общем - задача предельно ясна - большая файлопомойка с двумя гигабитными сетевухами, взрослым RAID-ом и скоростью чтения/записи не ниже 200Mb/sec.
Выбор компонентов
Решено было строить RAID массив на 16 SATA дисков. Это та золотая середина, которая с одной стороны обеспечит достаточную ёмкость и производительность, а с другой её можно будет уместить в стоковый корпус.
В качестве корпуса был приобретён Chieftec BA-01B-B-SL, известный читателям моего блога по проекту Silent Giant. Он достаточно просторный, а это нам понадобится т.к. надо будет уместить полноразмерную ATX плату, большой RAID контроллер, большой блок питания и ворох проводов. В него, если докупить корзины, можно вместить 16х3.5" устройств.
Корзины были выбраны Chieftech SNT-3141 SATA - занимают 3х5.25" отсека в корпусе и вмещают 4х3.5" SATA диска. Поддерживают HotSwap, содержат раздельную индикацию питания/активности/сбоя дисков, принудительный обдув и температурную защиту.
В качестве контроллера был выбран Areca ARC-1160 (16 портов SATA, интерфейс PCI-X 133MHz). С контроллерами этой фирмы я уже не раз сталкивался и всегда оставался доволен, вот и в этот раз решил строить систему на Ареке.
Системная плата, которая будет всем этим рулить - ASUS M2N32 WS Professional. Это плата WorkStation класса, собранная на десктопном чипсете. Плату выбирал по двум критериям: наличие слота PCI-X 133MHz и надёжная качественная сборка. Процессор AMD Athlon x2 4600+. Оперативной памяти 2Gb.
Блок питания HIPER 730W Type M - эффективный (КПД >80%), производительный, с хорошим запасом прочности. Опять же блок питания выбирал исходя из положительного опыта общения с БП этой фирмы.
Накопители выбирал, исходя из удельной стоимости гигабайта и длиной гарантийного срока. Остановился на Samsung SATA 7200rpm 400Gb с гарантией 36 месяцев. На таких дисках можно собрать отказоустойчивый массив на 5Tb.
В качестве формата массива был выбран шестой RAID т.к. пятый уязвим в момент ребилда и на больших массивах это может стать причиной краха всей системы. Исходя из того что ёмкость системы для RAID-6 считается как c(n-2), где c - ёмкость одного диска а n - их количество, и того что для перевода десятичных гигабайт в двоичные объём нужно разделить на 1.074, подсчитаем объём нашего массива:
C=c/1.074*(n-2)=400/1.074*(16-2)=400/1.074*14=5214Gb=5.09Tb
Сборка
Сам процесс сборки не запечатлел, так что есть только фото результата.
Из того, что хотелось-бы подчеркнуть:
- Корпус офигитительно удобен для таких монструозных систем.
- На RAID контроллере есть выходы для светодиодов индикации обращения и ошибок по-дисково, но т.к. паять панель на 32 светодиода было влом, просто подключил светодиод HDD LED с передней панели корпуса на первый порт активности контроллера. По инструкции если подключен только один светодиод на первый порт, то контроллер будет на него выдавать суммарную активность - так и вышло, а учитывая что других дисков в системе не будет, то иначе этот индикатор просто бы простаивал.
- Дисков много, причём половина в корзинах, половина внутри корпуса. Чтобы не запутаться - пронумеровал все интерфейсные кабели (распечатал и наклеил на каждый SATA кабель бирку с номером порта 1-16). Диски расположил по возрастанию номеров снизу вверх - внизу первый, вверху шестнадцатый.
- При установке системы подключал IDE DVD привод и ложил его на корпус т.к. внутри места для него уже нет - все 6х5.25" отсека заняты корзинами. После установки системы привод снял и закрыл корпус.
- Инсталлер WinXP пришлось пересобирать при помощи nLite и интегрировать в него драйвер контроллера т.к. иначе поставить систему на RAID не представлялось возможным (интим aka танцы с флоповодом не предлагать).
- Везде где только можно поставил кулера а все отверстия заклеил пылевыми фильтрами.
- Все провода зафиксировал стяжками. Всё уложено плотными жгутами и через каждые 5-10см стянуто. Всё должно сидеть плотно и не болтаться.
Массив разбил на 6 виртуальных устройств: 1 - это система (32Gb) а 2-6 - это "диски" по 1Tb. На каждом устройстве создал по одному разделу NTFS. Размер кластера под систему 4K а на остальных - 16K. Больший размер кластера не стал использовать т.к. некоторые дисковые утилиты "спотыкаются" на кластерах размером более чем 16K (были прецеденты).
Зачем бить по 1Tb? Система будет работать под M$ Windows XP x86, а т.к. она не поддерживает диски более 2Tb, то было решено побить всё по 1Tb - так и обслуживать систему проще, и обслуживать по-дисково (дефрагментация, чистка). Сам же софт, который будет крутиться, может оперировать любым количеством дисков, ему всё равно сколько их.
Из системных настроек отмечу обязательное отключение файла подкачки (а кто-то им ещё до сих пор пользуется?), всех режимов энергосбережения и установка программы Diskeeper для фоновой дефрагментации дисков в периоды простоя. Тоже проверенное решение на серверах с интенсивными дисковыми операциями.
Результат
Всё, систему собрали, софт поставили и настроили - всё работает! Запись с двух гигабитных сетевух при их 100% загруженности и параллельное локальное чтение данных показывает что требуемая производительность достигнута.
В случае, если потребуется нарастить массив, то потребуется менять диски на более ёмкие по одному, после каждого делать ребилд и после замены всех можно "растянуть" массив до нового размера, и на новом месте наплодить ещё несколько 1Tb устройств. Для системы это будет выглядеть просто как добавление ещё нескольких дисков.
Цена девайса вышла в $6000, т.е. удельный гиг получился немного менее $1.2. Взрослые NAS такого объёма доходят и до $2/Gb так что удельная стоимость тоже вроде как в порядке.
На всё про всё, от заказа комплектухи и до сдачи системы ушло две недели. Экзотические для наших краёв контроллер, корпус и корзины пришлось ждать.
UPD (21.01.2008): за год умер один винт, который поменяли и всё продолжило работать в том же духе.
UPD (01.02.2009): пока система работает с аптаймом >90%, деградации производительности не замечено, диски из строя больше не выходили.
> Везде где только можно
> Везде где только можно поставил кулера а все отверстия заклеил пылевыми фильтрами.
А можно подробнее что за фильтры такие, или что было использовано в качестве фильтров?
Фильтры
т.к. отвертия разношёрстные и искать какое-то готовое решение было бесполезно, а склад завален упаковками от всякого железа, в качестве фильтра использовал тонкий пористый материал, похожий на поролон, что кладут в упаковке под материнки.
У Akasa есть фильтры на 80/92/120мм отверстия и там использован похожий материал.
Фильтр приклеил к корпусу намертво. Чистится он пылесосом снаружи, так что снимать или даже открывать корпус нет необходимости.
Post new comment