kettle — одомашенный терабайт
17.03.2007 19:52:49Давно не покупал компы, не крутил отверткой всякое, в общем, соскучился. 😉 А тут повод какой, решил собрать наконец-то себе RAID-сервер домой, дабы, во-первых, не терять ничего при смерти винчестеров, а, во-вторых, легко добавлять винчестеры в промышленных, так сказать, масштабах.
Помимо этого, машинка должна взять на себя роль маршрутизатора из домашней сети «наружу» (хватит уже эксплуатировать Настин компьютер :)), а также быть просто большой и быстрой машинкой, чтобы делать с ней всякое, гонять эмуляторы/компиляторы и прочий приятный и нужный вздор. 🙂
Соответственно, набрал железа (в этот раз одним заходом в чудо-склад Ultra, где провёл часа три…):
- Pentium D 915
- MSI 945G Neo2-F
- 2 раза по 1 ГБ памяти DDR2 от Corsair
- 3 винчестера Hitachi на 400 Гб
- Корпус Enermax Pandora ECA3070-B
- Блок питания FSP Blue Storm на 400W
- Радиаторы на память Revoltec
Ну, плюс, конечно, мелочёвка в виде вентиляторов и кабелей SATA, а также отдельный ИБП-шник Ippon.
Когда выбирал, подумал, что надо бы уже прописать домой двухядерник, иначе совсем несолидно, от того плясать и понеслась. Впервые за долгое время сознательно купил систему на базе Intel-овского процессора. Ранее все приобретения/рекомендации касались исключительно AMD. До жизни такой дошёл по нескольким параметрам, во-первых, двухъядерники от AMD почему-то неоправданно дороги для своих мощностей, во-вторых, для AMD нелегко найти приличные чипсеты со встроенной графикой, особенно если это не ATI/nVidia, от которых бежать, бежать, бежать. А тут всё Интель сделал, сынтегрировал, да ещё и не так дорого. Вот так и решил.
Подумалось: пока Intel лепила архитектуру, а AMD её реализовывала, стоило брать AMD, когда AMD начала лепить архитектуру, а Intel её реализовывать, пришла пора брать Intel. 🙂
Процессор, кстати, купил в коробочке. Разница в цене между OEM и коробкой у Intel значительно меньше, чем у AMD, поэтому покупать кулер отдельно без особой необходимости смысла вроде как и нет. Коробка порадовала, пакует Intel свои процессоры очень жёстко, порвать её надо хорошо, чтобы до процессора добраться.
По материнке. Меня достали недомерки формата mini-ATX. Хорошие материнки, не спорю, но какого чёрта на чипсетах со встроенной графикой их 99% процентов? Отыскал одну-единственную полноформатную (на чипсете 965G, правда, есть ещё, но там и материнки почему-то в полтора раза дороже и за память придётся доплатить тоже неслабо), её и нахватил.
По винчестерам. Hitachi. Бывший IBM. Раз уж решил собирать нетипичную для себя систему, то пошёл вразнос, вместо привычных Seagate натарил Hitachi. Посмотрим на них в деле. Кстати, винты Hitachi обладают одним приятным свойством: помимо ужасных разъёмов питания SATA, они поддерживают и обычные Molex-ы.
Вообще, изначально у меня была идея натарить пять винтов по 250 Гб и дополнительный SATA контроллер, но свежий их подвоз так быстро разгребли, что я просто-напросто не успел их купить! А по цене за мегабайт сейчас лучше всех как раз модели на 250 и 320 Гб. Но, потом у меня появился более интересный план, о котором дальше. Он уже потребовал трёх винчестеров по 400 Гб, заодно контроллера дополнительного не надо, да и свободный разъём ещё остался на расширение.
По ходу сборки выяснилось, что корпус своих денег никак не стоит. Не особенно расстроился, но хотелось что-то поближе к уровню корпуса lapsang, Cooler Master Cavalier. Конечно, у них и разница по ценнику раза в полтора, если не больше, но всё-таки… Вот несколько фоток для сравнения.
После сборки, первым делом, принялся всё это дело тестировать. Кстати, большой зачёт создателям RIP и Finnix. Надо признать, я очень люблю маленькие живые дистрибутивы, которые помещаются на мини-CD. Теперь я их люблю вдвойне, поскольку они помещаются на маленькие флэшки. 🙂 Выковыривать привод CD из lapsang не хотелось, поэтому грузил эти дистрибутивы с флэшки, очень даже отлично всё работает. RIP отдельный зачёт за простой скрипт для создания загрузочной флэшки, а Finnix просто большой зачёт, на мой вкус, лучший восстановительно-тестировочный-хакерский мини-дистрибутив на сегодня.
Оттестировал на славу — 9 часов memtest-а, 7 часов параллельных burnP6, burnBX и burnMMX. Всё прошло нормально, на тестах процессора раскочегарил Pentium D до 52 градусов, в состоянии простоя температура держится в районе 27 градусов.
Начал думать об установке ОС. 🙂 Признаться, я много ходил и облизывался вокруг ZFS и RAID-Z в Solaris. Даже хотел поставить. Но… В конце концов всё решило шифрование. Во всяком случае, это стало окончательным поводом. 🙂 Шифрования разделов/файлов в Solaris нет. А мне его хочется. Стало быть, остался вариант один — что-то из GNU/Linux.
За установку Solaris был ещё один момент, конечно, ибо мне по статусу просто положено держать дома зоопарк разных ОС. 🙂 В некоторой степени, я и стараюсь это делать, дабы разнообразить бытие, но всё-таки с Solaris пока не судьба, поскольку помимо шифрования, оно не так хорошо совместимо с разным свободным софтом (а я не знаю, что мне может в голову взбрести завтра опробовать), да и опыта общения с Solaris у меня очень мало, так что по сумме всего отказался.
Ну а что выбрать из GNU/Linux? Для сервера нужен какой-нибудь надёжный, стабильный дистрибутив, тут много экспериментировать нельзя. Значит, Debian. 🙂 Но я не стал ставить уже порядком устаревший Sarge, а пошёл сразу за пре-релизом Etch. Образы инсталлятора регулярно компилируются, можно брать и ставить, пакеты утягиваются из сети. Вот тебе и Etch сегодня. 🙂
По инсталляции, не обошлось без некоторых мелочей, но в целом обалденно порадовало. Загрузил инсталлятор, кстати, с той же флэшки, на сайте Debian есть руководство на эту тему, заодно добавил параметр «console=ttyS0,115200n8» ядру и получил, наконец-то, консоль через последовательный порт, вернул монитор/клавиатуру на место (к lapsang).
Прям в инсталляторе можно сконфигурировать комбинацию из RAID5 на три диска, на которой разместить физический раздел LVM, в котором создать два логических, для / и для шифрованного раздела хранения данных, причём шифрование добавляется тут же в инсталляторе! Шифрование, правда, только либо со случайным ключём (для swap) или с паролем, с ключём-файлом не зашифроваться, ну да это уже можно и после установки наладить, благо LUKS. 🙂
Ещё одна закавыка, конечно, была с загрузкой, поскольку загрузить систему с рутовым разделом на софтовом RAID5 представляется невозможным, я вынес /boot на USB флэшку. Инсталлятор честно поставил туда GRUB, но загрузиться с этой флэшки не удалось, поскольку на момент установки это был раздел «(hd4,0)», а в момент загрузки GRUB думает, что это «(hd0,0)». Это поправил на другой машинке, после чего всё радостно загрузилось и я получил в распоряжение RAID-массив на 700 с лишним гигабайт. 🙂
Назвал машину в продолжение чайной темы, но на этот раз не сортом, а инструментом, так сказать.
Инсталлятор ещё порадовал тем, что поставил автоматически запуск getty на ttyS0, то есть ту самую консоль на последовательном порту, в установленной системе. Так что, монитор подключать больше и не пришлось.
На пустой системе немножко погонял bonnie++ на основном разделе хранения данных:
Version 1.03 ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP kettle 4G 43733 91 67809 62 18482 7 34348 75 37940 7 374.0 1 ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 995 25 +++++ +++ 832 25 1140 29 +++++ +++ 435 13
И на рутовом, нешифрованном:
Version 1.03 ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP kettle 4G 40953 90 75921 29 33144 15 44604 95 123309 27 274.8 1 ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 +++++ +++ +++++ +++ +++++ +++ 20307 40 +++++ +++ +++++ +++
Пробовал подключить ИБП, не очень пока успешно. Через USB он работать всё-таки отказался, а COM-порт у меня выведен сейчас один и тот нужен для консоли. Второй порт разведён на материнке, но ни в Ultra, ни в «Компьютерном Мире», ни в «Кее» не нашлось стандартной планки, чтобы выкинуть этот разъём! Ну, либо найду (есть на примете откуда скрутить, но не уверен, что там разъём на мат. плате такой же), либо чего-нибудь придумаю, ИБП-шник всё-таки подключить надо обязательно.
Вспомнил как работать с IPTables, уже довольно долго с ним не возился, маршрутизацией ведала Настина машина с FreeBSD, на которой успешно использовал pf. Кстати, мне не очень нравится подход, предлагаемый многими для настройки IPTables — добавление скрипта в /etc/init.d и его запуск при загрузке. Получается, все правила настраиваются одной кучей, несимпатично. 🙂
Поэтому, подумал, почитал `man interfaces` и насоздавал в /usr/local/bin/ скриптов fire-set-* плюс скрипт fireup, гасящий iptables и загружающий умолчальные правила для блокировки всех и вся. Вот, например, скрипт fire-set-all, открывающий полный доступ на интерфейсе:
#!/bin/sh if [ "$MODE" == "start" ]; then ACT="-A" else ACT="-D" fi iptables $ACT INPUT -i $IFACE -j ACCEPT iptables $ACT OUTPUT -o $IFACE -j ACCEPT
Плюс похожие скрипты на нужные сервисы/протоколы, после чего в /etc/network/interfaces можно писать нечто в стиле:
# External network interface auto eth1 iface eth1 inet static address 10.20.15.72 netmask 0xffffe000 up fire-set-tcp_udp_out up fire-set-icmp up fire-set-gre up fire-set-ftp down fire-set-tcp_udp_out down fire-set-icmp down fire-set-gre down fire-set-ftp
Это самое сложное описание интерфейса, смотрящего в локалку. При подъёме интерфейса дёргаются скрипты и настраиваются правила файрвола для этого интерфейса, при заглушке эти же правила обрубаются. Скрипт fireup, инициализирующий файрвол, вызывается как «pre-up» для интерфейса lo. На мой вкус, очень даже симпатично.
Особо внимательные товарищи, наверное, уже заметили, что три диска по 400 Гб в RAID5 дают вместилище объёмом в 800 Гб (минус округление 1024/1000), но никак не терабайт. Как же я докатился до терабайта?
После переноса данных с lapsang на RAID-массив kettle у меня освободились полностью два винчестера: на 200 и на 250 Гб. Кстати, изначальная идея по сборке массива из 250-гигабайтных винчестеров как раз и предполагала, что один из освободившихся винчестеров пойдёт как ещё один в массив. Оба винчестера с интерфейсом IDE.
Так вот и родился в голове адский план по включениюх этих двух во всё тот же массив. Как? Очень просто — создаём массив RAID0 на двух винчестерах и получаем раздел на (чуть меньше) 450 Гб. И этот массив уже добавляем в качестве четвёртого устройства в массив RAID5!
Конфигурация, конечно, спорная с точки зрения надёжности, но для домашних применений должно быть нормально.
Операция «решейпинга» или расширения массива заняла часов 10-12. Никаких проблем не возникло. Операция расширения физического раздела LVM на котором лежит и / и /storage также не вызвала затруднений. Операция расширения логического раздела LVM — без проблем. Расширение зашифрованного раздела — легко. Расширение раздела XFS — запросто. А теперь самое главное — абсолютно все операции проводились без отключения разделов/отмонтирования ФС. Всё полностью на живой и вполне рабочей системе. Так-то нынче GNU/Linux умеет. 🙂
Для всех безобразий по расширению доступного пространства вполне хватило двух мануалов: раз и два. Ну, плюс, конечно, «cryptsetup resize» и «xfs_growfs».
Единственное «но», поскольку теперь для сборки массива RAID5 нужно ещё собрать сначала массив RAID0, а рутовый раздел лежит на RAID5, потребовалось обновить initramfs после правки /etc/mdadm/mdadm.conf. Дело нехитрое: «update-initramfs -u».
Вот так и получился RAID5 на 1117 Гб и раздел на нём на 1110, или 1.08 Тб. Вот что получилось у bonnie с забитым на треть терабайтным разделом:
Version 1.03 ------Sequential Output------ --Sequential Input- --Random- -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP kettle 4G 43023 86 69411 62 18813 9 32507 71 36633 8 408.4 1 ------Sequential Create------ --------Random Create-------- -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 1267 31 +++++ +++ 880 27 1412 35 +++++ +++ 718 22
Вот, собственно, и всё. Осталось подключить к этой машине принтер (рутина), да вынести её за пределы комнаты, чтобы могла она спокойно шуметь круглые сутки напролёт. Кстати, шумит она не так уж и сильно, но это пока не начинаются обращения к дискам. Поскольку это RAID, получается, что происходит практически синхронное обращение ко всем пяти дискам и вот этот дружный хруст уже слышен очень хорошо. 🙂
21.03.2007 23:14:46
Коль не секрет, во сколько у.е. тебе все это обошлось? Какую минимальную конфигурацию можно поставить в качестве сервака?
22.03.2007 00:05:32
Эмм… В целом вышло 25000 российских рублей. От ИБП до радиаторов на память. 🙂
А вот какую конфигурацию ставить в качестве сервака, зависит больше от задач. У меня тут просто и RAID5, и шифрование поверх него и желание пускать QEMU на той же машине по сети, плюс FTP сервер, плюс git-daemon с веткой Линуса для ядра, плюс сейчас ещё и Jabber сервер для внутренней сети поднял. Так что скучать-то особо не приходится железке.
В качестве примечания, если соберёшся делать софтовый RAID5, [i]обязательно[/i] бери ИБП.
22.03.2007 21:24:17
А Jabber-то тебе зачем?
22.03.2007 21:33:50
Для внутренней сети. Полезная штука. 🙂 Правда, поглядев на такое, админы CCTech сказали, что может быть восстановят бывший когда-то свой Jabber сервер.
11.04.2007 16:43:37
[…] В связи с появлением хранилища на терабайт с хвостиком, начал переносить фильмы с дисков разного рода внутрь него. Оказалось, не так уж зря говорят про ненадёжность самописных CD/DVD, один CD у меня в одном из приводов отказался читаться, ещё несколько читались с явным натугом. Все, что характерно, Verbatim. Но, в конечном счёте, самописное всё прочиталось. Что оказалось смешнее, так это битый штампованый DVD, который когда-то читался вполне без проблем. Эх, пираты, пираты… […]
30.04.2007 21:05:03
[…] Или дебианизация всего, что только можно. Или “дебьянизация”. Это ещё, кстати, вопрос. Google поправляет в сторону “Дебиан”, как пиндосы произносят Ian я тоже слышал, а всё ж по-русски хочется сказать “Ян” и “Дебьян”, да положить на всё их произношение. Собственно, работать с etch я начал ещё некоторое время назад и работа эта была достаточно плодотворная. Я также запланировал сносить FreeBSD на компьютере жены в пользу всё того же Debian. Но пока это всё планировалось, произошли некоторые другие события, которые дали ход той самой “дебьянизации”. […]
10.08.2007 21:55:05
[…] Как и ожидалось, любой массив можно забить. И терабайт у меня тоже начал подходить к концу. В связи с чем было принято решение о расширении, а заодно и ликвидировании неправильного раздела RAID0 из двух винчестеров, использовавшегося в качестве одного из носителей для RAID5. […]
30.10.2007 02:23:15
[…] По самой железке. Бука большая, внушительная. Дисплей явно TN+Film, но неплохой. Мощи, конечно, до одури, Core 2 Duo T7200 и 2 Гб памяти, боюсь, что на некоторых задачах сервер тихонько всплакнёт в углу. Понятно, 17″, что очень радует. Два винчестера. С винчестерами у меня давно самые тёплые и нежные отношения, поэтому на винчестерах сделал RAID1 для успокоения души. Это тоже плюс. Клавиатурка с цифровым блоком, это вообще очень полезно. Например, в ADOM рубиться. […]
24.01.2008 11:34:42
[…] Домашний сервер пережил ещё одно расширение. […]
26.12.2010 23:19:00
[…] прошлой неделе неожиданно старый-добрый kettle, переживший не один апгрейд по винтовой и другим […]