Рано или поздно, любой более-менее продвинутый пользователь, имеющий более одного персонального компьютера (рабочей станции) и доступ в сеть Интернет, захочет иметь дома какой-то свой сервер, который будет обслуживать локальную домашнюю сеть. Это может быть файловый сервер, продвинутый маршрутизатор, торренто-качалка, система видеонаблюдения/сигнализации или "песочница" для экспериментов. В статье предпринята попытка описать критерии к выбору платформы для такого сервера.
Если подходить к вопросу серьёзно, то в зависимости от поставленной задачи, подбирается железо, а под него - программное обеспечение; и если необходима покупка комплектующих, то функционал упирается в бюджет. Но обычно, пользователи выбирают для платформы то, что есть в загашниках - старенький системник, на котором уже проблематично запустить даже браузер.
==== Аспекты выбора ====
Если предполагается, что машина будет работать круглосуточно, тем более в домашних условиях, нужно обеспечить низкое энергопотребление, низкое тепло- и шумовыделение. Конечно же можно приобрести специализированный компьютер типа NAS (Network Access Server), но стоит это достаточно дорого да и во многом избыточно.
[{{GA-E240N_motherboard.png?250 |Материнская плата Gigabyte GA-E240N}}]
В качестве железа можно выбрать как современные маломощные решения, например Cubieboard, RaspberryPi, GigaByte E-240, так и старенькие компьютеры, начиная от Intel Celeron или Intel Pentium III (Socket 370). Железа на базе Pentium-I или Pentium-II уже будет маловато, да и память на эти материнки уже достаточно редкое явление. Что касается конфигурации на базе Intel Pentium 4 или Intel Celeron (Socket 478), то она уже избыточна по производительности и потребляемой мощности (большое тепловыделение) - лучше приобрести GigaByte E-240.
Однако, если задачей будет создание сервера видеонаблюдения, где используются аналоговые камеры и потребуется писать в наилучшем качестве, то процессор машины должен "тянуть" процесс кодирования. До какого-то значения соотношения необходимой производительности к цене конфигурации, будет выгоднее использовать старенький Pentium-IV или его аналог, но после - лучше взять готовый аппаратный видеорегистратор.
Автор для задачи торренто- и [[Создание aria2-качалки на базе выделенного компьютера|aria2-качалки]] выбрал системник Legend SunChase 3000 6C/433, который иногда использовался как "песочница" для экспериментов. Конфигурация: Legend QDI P6I810E, Celeron 433MHz, 256Mb, Seagate 80Gb IDE, VIA PCI-SATA controller. Производительности процессора, а также памяти для конфигурации на FreeBSD с "обезжиренным" ядром и 10 торрентах на раздаче на скорости до 60Кбайт/сек - вполне хватает. Жёсткий диск подключен через IDE PATA-шлейф через PCI SATA-контроллер, а встроенный в материнку контроллер отключен. Это даёт небольшой прирост производительности, а также возможность подключения жёстких дисков с интерфейсом SATA.
Несколько слов об охлаждении - жёсткие диски лучше располагать так, чтобы шло их естественное охлаждение. Это продлит срок работы дисков. Например, диски лучше располагать в отсеках 5,25`` или 3,5`` и открывать крышку в передней панели, напротив отсека. Блок питания будет всасывать в корпус воздух через это отверстие и забирать излишки тепла от диска. Расположение 3,5`` дисков в отсеках 5,25`` через переходник даёт два приемущества: 1) улучшается естественное охлаждение, 2) возможность применить переходники с амортизаторами, гасящими вибрации, что особенно актуально в случае установки нескольких дисков в один корпус.
=== Энергопотребление ===
Немаловажно, обеспечить домашнему серверу как можно меньшее энергопотребление, поскольку эт этого зависят расходы за электроэнергию. Например, системник, потребляющий 60 ватт энергии, за сутки выберет 0,06*24=1,44 КВт*часов электроэнергии. За месяц уже выйдет 44 КВт*часов. Помножив полученное значение на стоимость киловатт-часа, получим значение месячных расходов.
Померить потребляемую мощность можно токовыми клещами или приблизительно - просуммировав потребляемые мощности всех устройств в системнике.
Способы уменьшения потребляемой мощности:
* применение нового железа с бОльшим КПД;
* если это файловый сервер и обращения к нему не частые, можно установить время, после которого будет отключаться жёсткие диски (останавливаться шпиндели).
=== Выбор сетевого (LAN) адаптера ===
Как показала практика, софтовые сетевые адаптеры (без встроенного полноценного процессора) сильно нагружают центральный процессор компьютера во время линейной передачи. До какого-то значения производительности системы имеет смысл ставить только 10\100 мегабитные адаптеры, поскольку процессор не "раскачивает" адаптер выше 100 мегабит. Зависимость производительности и типа адаптера сведена в таблицу:
^ процессор ^ тип адаптера ^ реальная скорость* ^
| //до// Celeron 600 МГц (Socket 370) и Pentium III 600 МГц (Socket 370) | 10\100 мегабит | 7...10 Мбайт в сек. |
| Celeron 866 МГц (Socket 370), Рentium III 866 МГц (Socket 370) //и выше// | 10\100\1000 мегабит | > 10 Мбайт в сек. |
//**Прим.**// Реальная скорость указана в режиме скачивания с компьютера и зависит от многих факторов.
Если железо на уровне Celeron (Socket 370), то нет смысла ставить гигабитный адаптер без встроенного процессора - центральный процессор не сможет обработать поток в гигабит, лучше обойтись 100-мегабитным. С уровня Pentium III 700 и выше можно применять гигабитные адаптеры. Скорость передачи на P-III 866МГЦ может составить до 15...25 Мбайт в сек. при 100% загрузке процессора. Вот в материнской плате GigaByte E-240 (E-350) имеется встроенный гигабитный адаптер, но там и процессор более производительный.
=== Объём памяти ===
Основной принцип: //чем больше, тем лучше//, но много зависит от поставленной задачи. Автор запустил домашний сервер при наличии 256 Мбайт (DIMM) памяти. На FreeBSD с "обезжиренным ядром", на 10 торрентах в листе transmission, использование памяти выглядит так:
user@test:~ % freecolor
Physical : [#######################............] 69% (170444/244128)
Swap : [##################################.] 99% (3691872/3701760)
Как видно, 74 мегабайта - свободны для приложений, а раздел подкачки занят только на 10 мегабайтов.
Для старых компьютеров становится всё труднее находить модули памяти. Если DDR-I и DDR-II ещё пока продаются (на момент написания статьи), то DIMM-модули можно встретить только на барахолках. В любом случае, если сервер работает на стареньком железе, в резерве надо держать какие-нибудь комплектующие, чтобы, в момент выхода из строя, оперативно заменить и продолжить работу.
==== Выбор и установка операционной системы ====
Выбор системы во-многом зависит от квалификации пользователя. В идеале подойдёт любой дистрибутив-конструктор типа [[Debian]], [[Slackware]], [[Gentoo]] или [[FreeBSD]] без установки графического интерфейса. Также, с небольшими работами по "обезжириванию" - [[Ubuntu]] Server, Edubuntu. Если железо позволяет, можно попробовать специализированные дистрибутивы типа NAS4Free, FreeNAS, OpenMediaVault и другие.
При выборе дистрибутива, нужно брать во внимание размер оперативной памяти - во многом она будет определять производительность системы и использование свопа. Если планируете использовать ZFS, то памяти желательно установить по-больше (минимум 1,5Гб). Процесс дедупликация в ZFS требует больших затрат процессорного времени, оперативной памяти и дискового пространства.
Для установки минимальной версии Debian или FreeBSD потребуется порядка 10Гб от общего пространства диска:
* **6** Гб для /
* **1,5...2** Гб для /var
* **500...600** Мбайт для раздела подкачки (указано для объёма памяти в 256Мбайт)
* остальное пространство отдаётся под выделенный раздел для хранилища скачиваемых файлов.
Файловая система: ext3, ext4 для Linux или UFS - нэйтивная для FreeBSD. В зависимости от динамики использования раздела, особенно если он будет эксплуатироваться для хранилища торрентов, по мере работы он будет достаточно сильно фрагментироваться. Поэтому, пространство выделяется как отдельный раздел. Для уменьшения фрагментации, в программах, нужно включать опции по предварительному выделению места под файлы. Если производительность работы дисковой подсистемы значительно упала, значит фрагментация достаточно сильная. В этом случае можно содержимое раздела пофайлово перенести на другой диск, раздел отформатировать и информацию перенести обратно на основной раздел диска.
== Смотрите также ==
* [[http://www.nixzeya.ru.net/forum/index.php?topic=347.0|Обсуждение статьи на форуме]]
* [[http://www.nixzeya.ru.net/forum/index.php?topic=335.0| Обзор микрокомпьютеров]]
* [[http://www.nixzeya.ru.net/forum/index.php?topic=56.0| Производительность конфигураций nix-систем]]