NAS для дома своими руками

Часть вторая: программное обеспечение
Плюнь в глаза тому, кто скажет, что можно объять необъятное
Козьма Прутков

Кому и зачем

Ваш домашний NAS должен удовлетворять именно вас, это не production-система, которая обязана обеспечивать некие формализованные показатели. Трудностей при описании такой штуки две. Одна вынесена в эпиграф, а вторая связана с острым дефицитом телепатов. Но я все же попытаюсь высказать некоторые разумные предположения, и они будут проходить по разряду IMHO. Для экономии места «IMHO» далее опускаю. Считаем, что эта метка стоит у каждого предложения. Если же ваш конкретный случай прозреть не удалось — приношу извинения, возможно, вам подойдет другой текст.

Этот же адресован собирающему свой первый NAS, способному поставить Windows, но в глаза не видавшему FreeBSD Handbook или Oracle Solaris ZFS Administration Guide. NAS собирают и IT-продвинутые граждане, они обычно разворачивают полную версию выбранной операционной системы. Интересно, что часть новичков в тему втягивается и со временем делает так же.

Задачи

Во избежание недоразумений сразу же определим, зачем нам NAS.

Первая задача — надежное хранение. Данные должны пережить аппаратную проблему, например выход из строя диска.

Вторая — давать доступ к хранимым данным. Обязательна поддержка SMB/CIFS для Windows, очень желательна NFS (для медиаплееров), FTP (для загрузки больших объемов данных) и AFP (если дома есть Макинтош). Часто упоминается DLNA, об этом отдельно.

Третья — автономное скачивание документов из сети по различным протоколам.

Четвертая — автоматизировать бекап с компьютеров в локальной сети. Семейное фото, видео, созданные вами документы — уникальны и невосстановимы, но дома это все хранится хорошо если в полутора экземплярах: один — на диске ноутбука, половина — на каком-то USB-диске, куда фотки скидывали прошлой осенью. Если (точнее — когда) такие данные пропадут, а NAS позволит их восстановить — вы испытаете искреннее удовольствие от своей прозорливости. Или наоборот.

Требования

Умеренно сложная начальная настройка. Человек в первый же день должен получить работающий вариант. Может, не полностью тюнингованный, но дающий полезный результат. Это, кстати, значит, что набивший руку пользователь должен с начальной настройкой справиться за пару-тройку часов.

Простое и достаточное текущее управление, все необходимое должно делаться через веб-интерфейс. В том числе — сохранение и, если что, восстановление конфигурации. Для специальных, экспертных целей желателен доступ по SSH или подобный.

Прозрачное повседневное использование. С ним должна справляться ваша дражайшая половина с гуманитарным образованием: кино посмотреть на телевизоре, музыку послушать, бекап с ее ноутбука на NAS должен автоматически производиться, и т. п.

DLNA/UPnP

Понять, что именно вам нужно от DLNA-сервера, реально только методом тестирования. Большинство задач среднего пользователя, типа передачи медиа на планшет, решают практически все UPnP-серверы. А по поводу использования DLNA для вывода на телевизор процитирую разработчика HMS, одного из лучших программных UPnP/DLNA-медасерверов: «Для владельцев телевизоров большинства производителей использование данной технологии является временным этапом, который заканчивается или покупкой сетевого медиаплеера (думаю, предпочтительный вариант) или подключением телевизора в качестве монитора. Если время и нервы дороги, то, возможно, стоит пропустить данный этап». Возможности встроенного в телевизор плеера и недорогого отдельного, вроде Дюны, Попкорна или WD, по всеядности, качеству картинки, удобству пользования и пр. обычно разнятся очень сильно. Правда, встроенные плееры быстро прогрессируют, поэтому определяться стоит по конкретному железу.

Дисковые массивы и файловые системы

Зачем нужен массив

Главный вопрос при построении NAS — организация дискового пространства. Как мы выяснили в 1-й части, дисков много, 4-6, иногда 10 и более. Их, конечно, можно использовать и по отдельности. Но объединение в массив удобно тем, что место доступно единым куском. В массиве без избыточности при смерти диска гибнут данные на нем и, часто, в зависимости от реализации, на всем массиве. Вы имеете право, пользуясь аргументом «ничего, перекачаю», экономить на избыточности. Те, кому время дороже, предпочитают массивы с избыточностью. Важно: никакой RAID не заменит бекап. RAID обеспечивает доступность данных в случае сбоя диска. Невосстановимые данные обязательно бекапить. К счастью, их обычно совсем немного.

Термин «массив с избыточностью» часто смешивают с термином RAID. Но доступны и более продвинутые технологии. Выбирая софт для NAS, вы можете использовать их или обойтись без этого. Чтобы понять, что́ больше подходит именно вам — давайте вспомним о проблемах RAID и файловых систем.

Дыра по записи (RAID Write Hole)

RAID 5 (6 и др.) подвержен серьезной проблеме. При записи в массив одновременно должны быть записаны данные и блоки четности. Но запись на несколько дисков не есть атомарная операция. Если в процессе записи возникнет проблема (отключение питания, сбой диска и т.п.), то возможна ситуация, когда данные и блоки четности не будут соответствовать друг другу. Если неправильно записаны данные, то они во многих случаях могут быть исправлены или хотя бы обнаружены при обслуживании файловой системы, расположенной поверх RAID (chkdsk, fsck…). А вот неверные блоки четности в худшем случае могут остаться незамеченными до момента, когда по ним будет восстанавливаться массив. И вместо данных будет восстановлен мусор. Мало того, мусор будет записан безо всяких о том предупреждений. Дополнительную информацию по проблеме можно получить здесь.

Дыра по записи (RAID Write Hole)
Рис 1. Дыра по записи в RAID. Слева — данные и блоки четности синхронизированы, идет запись. В центре — сбой по питанию. Справа — данные и блоки четности не синхронизированы, но RAID об этом не знает.

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

Сбой при реконструкции

Пусть у нас есть RAID 5 из пяти 3Т-дисков, в котором один из дисков отказал. Массив надо перестраивать, при этом придется прочитать 4 диска × 3T = 12Т =1,2·1013 байт = 0,96·1014 бит информации, причем независимо от степени заполнения массива — ведь на уровне RAID о файлах ничего неизвестно. Исправные диски пользовательского класса имеют законное право дать один сбой в среднем на 1·1014 бит (см. напр. спецификации WD Red). То есть с очень большой вероятностью мы получим сбой реконструкции просто по спецификации диска. Плюс какая-то вероятность того, что диск действительно сломается. Традиционный рецепт: использовать диски корпоративного класса (с вероятностью сбоя 10−15), не увлекаться емкими дисками и использовать RAID 6. К сожалению, все три совета по цене не очень соответствуют домашним условиям.

Надежная файловая система

Перейдем на один уровень выше, к файловой системе. От нее ждут простой вещи — возможности записать файлы и потом прочитать то, что записано. Парадоксально, но бо́льшая часть ФС этого не гарантирует: они полагаются на идеальную работу оборудования — дискового контроллера, кабеля, самого диска. Аппаратный сбой приводит не просто к потере данных — он приводит к незамеченной пользователем потере данных. Копируете свой фотоархив — а на самом деле часть файлов уже протухла. Узнать об этом можно, сличив контрольные суммы, что мы делаем при перекачке прошивок и подобных не терпящих сбоя данных. А почему бы не сличать контрольные суммы средствами ФС?

Другое «детское» пожелание к ФС — чтобы она работала и не ломалась — тоже толком не выполняется. ФС без журналирования, например FAT или ext2, при сбое способна похоронить все свое содержимое. Журналируемые ФС, например NTFS или ext3, существенно надежнее, т.к. можно найти точку непротиворечивого состояния и воспроизвести журнал. А нельзя ли создать ФС, которая вообще не может попасть в противоречивое состояние? Можно — через Copy-on-Write. Данные пишем не поверх старых, а выделяем новый блок, пишем туда, и если все в порядке — заменяем указатель со старых данных на новые.

Как уже догадался читатель, дальше должны быть примеры ФС с Copy-on-Write. Наиболее отлаженная — ZFS (в production с 2006 года), но можно вспомнить Btrfs, ожидающую релиза под Linux, и ReFS, реализованную в Windows Server 2012.

ZFS

ZFS объединяет функциональность ФС и поддержку RAID-подобных массивов. Распространяется по свободной лицензии (CDDL). Создана Sun Microsystems для Solaris. Портирована во FreeBSD начиная с версии 7.0. Совсем недавно проект ZOL (ZFS on Linux) достиг стадии релиза. Можно ожидать быстрого распространения ZOL, процесс уже пошел. Существует и проект под Mac OS X, ZEVO, см. соответствующий материал.

Работа ZFS
Рис 2. ZFS автоматически сличает контрольные суммы, обнаруживает ошибки и восстанавливает данные, если они сохранены с избыточностью (рисунок с сайта eonnas.com).

Присмотритесь к ZFS, если вам интересна ФС с такими возможностями:

  • хранящая контрольные суммы и не позволяющая считать мусор вместо данных;
  • сохраняющая целостность до такой степени, что утилиты вроде chkdsk или fsck для нее просто нет;
  • снабженная инструментом проверки целостности холодных данных и их автоматической коррекции, если данные сохранены с избыточностью;
  • способная мгновенно создавать снимки своего состояния и хранить их хоть за каждую минуту месяца, монтировать любой набор снимков, откатываться к снимку.

Присмотритесь к ZFS, если вам интересен RAID:

  • программный, т.е. не требующий аппаратного контроллера;
  • аппаратно-независимый, были бы SATA-порты;
  • без Дыры по записи;
  • способный к реконструкции деградированного массива с частично нечитаемыми дисками с потерей только тех данных, для которых нет ни одной копии;
  • работающий при проверке целостности и реконструкции только с полезными данными, а не со всем массивом;
  • с поддержкой аналогов RAID1 (зеркало), RAID5 (избыточность в размере одного диска), RAID6 (двух) и даже «RAID7» (сохраняющий данные при выходе из строя любых трех дисков массива), а также более сложных вариантов, подобных RAID50 или RAID60.

У ZFS есть и недостатки, основные из которых:

  • Нарастить RAID-Z-массив на один диск нельзя. Можно заменить все терабайтные диски на тритеры — и увеличить объем. Можно собрать из 3 (и более) дисков еще один RAID-Z и добавить его к существующему, получив единый пул. Но превратить RAID-Z1 из 5 дисков в RAID-Z1 из 6 можно, только слив куда-то информацию, разрушив массив и создав новый.
  • Массив нельзя уменьшить. Можно только увеличивать — добавлять группы дисков, менять диски на бо́льшие.
  • Ресурсоемкость. ZFS постоянно считает контрольные суммы, что создает нагрузку на процессор и использует под кеши память. Дома у меня работало с Atom 330 и 2 ГБ памяти. Хотя при использовании ZFS этого Атома для полной утилизации гигабитной сети мне не хватало, но 40-50 МБ/с многих устроит.

Да, еще: если разрушить ZFS и создать из тех же дисков новый массив (то есть дать пару команд и/или понажимать кнопки в веб-интерфейсе, в обоих случаях игнорируя предупреждения), то данные с разрушенной ФС будут надежно похоронены — в отличие от, например, NTFS, данные с которой относительно просто восстановить и после пересоздания таблицы разделов. Считать ли это недостатком — зависит от точки зрения.

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

ReFS + Storage Spaces

В Windows Server 2012 Microsoft предложила ФС ReFS и систему управления томами Storage Spaces. Связку ReFS и Storage Spaces можно считать до некоторой степени аналогом ZFS, причем со свойствами, не реализованными в последней. Интересны гибкость удаления-добавления дисков, thin provisioning и др. Недостатки тоже есть — это собственническая лицензия, доступна только в составе Windows Server 2012 и Windows 8.1.

Плохо, что, судя от отзывам тестировавших, производительность связки ReFS—Storage Spaces ощутимо, в разы, падает при использовании вариантов с четностью, то есть, грубо, аналога RAID5 или ZFS RAID-Z. Еще хуже, что появились первые сообщения о потере данных из-за сбоев ReFS, причем официальная поддержка не решила проблем. Так что интересному решению, похоже, стоит дозреть.

Btrfs + mdadm

Официально Btrfs для Linux пока не получила статуса релиза, хотя разрабатывается с 2007 г. Подобно подавляющему большинству ФС (и в отличие от ZFS), это именно файловая система, создаваемая поверх блочного устройства. Чтобы получить, грубо, аналог ZFS, нужно добавить, например, хорошо отлаженный mdadm, одна из возможностей которого — перестройка RAID при добавлении диска без потери данных.

Традиционные ФС

И, конечно, существование продвинутых ФС не заставляет вас выбрать одну из них. Возможно, вам для NAS больше подойдет NTFS, ext4 или UFS — родная ФС для выбранной вами оси. На относительно слабом железе этот выбор может оказаться единственным.

Варианты программного обеспечения

Алгоритм выбора софта
Рис 3. Примерный алгоритм выбора софта для домашнего NAS

Из чего и как выбирать

Хочу порекомендовать скачать VirtualBox, установить туда несколько приглянувшихся вариантов и в течение нескольких дней потыкать каждый палочкой. На виртуалке это дешевле, проще и быстрее, чем на реальном железе. Серьезно экономит нервы. Особенно если ни один из вариантов вам не понравится.

Как софт самосборного NAS можно использовать три группы программных продуктов.

Во-первых, можно поставить полную операционную систему. Это может быть Linux, UNIX или Windows в зависимости от личных потребностей и предпочтений. Windows представляется более знакомой, *nix дает больше NAS за те же деньги, но конфигурирование *nix с нуля — задача не для новичка.

Для такого новичка создан вариант номер два — преконфигурированные специально под NAS сборки. Они включают набор сервисов и веб-интерфейс, позволяющий новичку справиться с настройкой и использованием продукта без командной строки.

Наконец, третий вариант — установка полной операционной системы, а поверх нее — некоего веб-интерфейса для настройки и управления. Вариант компромиссный, промежуточный. Упрощает использование, но никак не до уровня, достаточного для неискушенного любителя. А продвинутые граждане всякие надстройки обычно недолюбливают. Мы начнем с вариантов для простых смертных.

Windows

В профильной ветке проводился опрос об используемой форумчанами в самосборных NAS операционных системах, и Windows досталось третье место с результатом чуть ниже 20%. Конечно, голосовали и более продвинутые камрады, но их точно было не большинство.

Результат, способный удивить. Windows — наиболее знакомая большинству операционная система. На ее основе можно сделать NAS — в конце концов, 20% опрошенных это сделали. Причина скромной цифры в том, что у использования Windows в качестве оси NAS есть не только достоинства, но и недостатки:

  • Windows — платный софт, конкурирующий с во многом более функциональным для конкретных задач свободным.
  • Поддерживает существование вирусов, что требует постоянной загрузки антивирусных баз.
  • Требует постоянного применения апдейтов, а после них часто нужна перезагрузка. Нельзя сказать, что все *nix-системы могут работать без вмешательства и перезагрузки годами. Но многие — могут.
  • Windows — графическая система, для естественного ее функционирования нужен монитор, клавиатура и мышь. NAS обычно их лишен. Но конечно, существуют средства, решающие проблему.
  • Windows требователен к ресурсам.
  • Дисковые массивы и контрольные суммы на уровне файловой системы — не самое сильное место Windows, особенно в настольных вариантах.

Недостатки не смертельные, их можно преодолеть, обойти, игнорировать, в конце концов. Но достаточные, чтобы рассмотреть и другие варианты. И обнаружить у них свои достоинства, и совершить массу открытий, иногда не желая того.

Приводя же неполный список достоинств Windows, помимо привычности можно упомянуть:

  • Родная высокоскоростная реализация SMB.
  • Совместимость с железом. Драйвера для Windows пишут обязательно.
  • Широкий выбор софта. То есть для NAS обычно большого выбора и не нужно. Но чем более специфичны ваши требования, тем больше вероятность, что их удастся решить именно софтом под Windows.
  • Огромное множество инструкций и решений на все случаи жизни, на родном языке.

NAS на Windows вполне возможен. Но тема настройки Windows раскрыта во многих источниках, что позволит автору рискнуть воздержаться от ее обсуждения.

Готовые *nix-сборки для NAS

Наиболее популярны в профильной ветке три сборки — NAS4Free, OMV (=openmediavault) и FreeNAS 8.x. Все нацелены на средней продвинутости любителя и позволяют либо из коробки, либо путем загрузки плагинов удовлетворить типовые потребности.

С торговой маркой FreeNAS связана история, вызывающая путаницу. Продукт FreeNAS развивался долгие годы, а затем по ряду причин разделился. Широко известное название, являющееся торговой маркой, попало в собственность компании iXsystems, которая решила полностью переписать код, а исходную разработку закрыть. Так появился FreeNAS 8.x, основанный на FreeBSD 8.x. Однако оригинальный проект силами энтузиастов выжил, был перенесен на FreeBSD 9.x и успешно развивается под именем NAS4Free. Как результат, апгрейд с сохранением настроек с FreeNAS 0.7 поддерживается в NAS4Free, но не поддерживается во FreeNAS 8.

Детальное, в том числе русскоязычное, описание установки и конфигурирования сборок можно найти в FAQ профильной ветки и на специализированном сайте, поэтому здесь текст мы сэкономим.

Официальные аппаратные требования для этих трех продуктов сведем в таблицу, тем более что они не так легко гуглятся.

ПродуктПроцессорОперативная памятьСистемный накопитель
NAS4Free 9.x, c ZFSx86, x86-64минимум 512 МБ, рекомендуется 4+ ГБ400 МБ (остальное доступно для данных)
NAS4Free 9.x, без ZFSx86, x86-64256 МБ для full, 384 МБ для embedded, 512 МБ рекомендуется400 МБ (остальное доступно для данных)
FreeNAS 8.x, с ZFSx86-646+ ГБ2 ГБ и более (будет занят целиком)
FreeNAS 8.x, без ZFSx86, x86-644 ГБ2 ГБ и более (будет занят целиком)
OMVx86, x86-641 ГБ2 ГБ и более (будет занят целиком)

И, естественно, нужны диски для хранения данных. Похоже, разработчики FreeNAS указывают не требования, чтобы только начало работать, а чтобы работало производительно. Во всяком случае, в руководстве по эксплуатации при установке на виртуальную машину указан минимальный размер оперативной памяти в 512 МБ.

NAS4Free

NAS4Free распространяется по свободной лицензии BSD. Проект имеет многолетнюю историю (происходит от m0n0wall, FreeNAS 0.7, 0.6 и ранее), старшая цифра текущей версии — 9. То есть сборка неплохо вылизана, но продолжает развиваться. Основана на последнем релизе FreeBSD 9.1.

Вид веб-интерфейса NAS4Free
Рис 4. Вид веб-интерфейса NAS4Free (больше скриншотов)

NAS4Free скомпилирована в двух версиях, для 32- и 64-разрядных Intel x86-совместимых процессоров. Использовать NAS4Free можно тремя способами: LiveCD/LiveUSB, full и embedded. Режим «живого диска» традиционен для *nix-дистрибутивов и предназначен прежде всего для ознакомления. При реальном использовании обычно производят установку. Вариант full — традиционная установка, обычно на жесткий диск. Для установки используется небольшой раздел, размер которого задается при установке, и swap-раздел, а остальная часть диска доступна для данных. Поставить full на USB-флешку можно, но из-за интенсивной записи флешка за несколько месяцев износится.

Для установки на USB-флешку предназначен вариант установки embedded. При старте системы создается небольшой диск в памяти, куда копируется образ системы и тут же настраивается по параметрам, собранным в единственный конфигурационный файл XML. А затем производится загрузка с этого диска в памяти. Такой подход имеет достоинства. Систему очень удобно разворачивать — системную флешку можно записать на другой машине. Состояние системы собрано в одном текстовом файле, так что его очень легко сохранять и, при необходимости, использовать для восстановления системы. Диск в памяти очень быстр, а системная флешка практически не изнашивается.

Недостаток в том, что почти любые изменения, внесенные в систему иначе, чем через веб-интерфейс, теряются после перезагрузки. Частично разработчики решили проблему, предоставив в веб-интерфейсе возможность сохранения множества параметров. Частично проблему можно обойти за счет применения трюков вроде объединения через unionfs папки диска в памяти и папки на реальном носителе и использования автоматически запускаемых командных скриптов. Более продвинутые пользователи используют виртуализацию, чтобы ставить в jail или отдельные виртуальные машины все что угодно, хоть пару-тройку Windows. Расширение TheBrig серьезно облегчает настройку и использование jail для установки дополнительного софта. Но это все же требует знаний, сравнимых с необходимыми для развертывания полной системы. А новичку правильнее считать, что в NAS4Free есть только те сервисы, что включены изначально, всё настраивается через веб-интерфейс, и добавлять ничего нельзя.

Список того, что есть «из коробки»:

  • WebGUI (управление и настройка);
  • Диски и массивы: ZFS v28 (зеркало, RAID-Z 1, 2, 3…), софт-RAID 0, 1, 5 и смесь (1+0, 1+1 и т.п.), шифрование дисков (с использование аппаратного ускорения, если присутствует), файловые системы ZFS, UFS, ext2/3, FAT, NTFS, iSCSI-инициатор;
  • Сетевые протоколы и службы: SMB/CIFS (Samba) — для Windows-машин, AFP (Netatalk) — для Mac OS, NFS — для *nix, FTP (ProFTPD), TFTP (tftp-hpa), Rsync (client/server) — мощный инструмент, в том числе для бекапа, SCP (SSH), iSCSI-таргет;
  • Сервисы: UPnP server (FUPPES — надо признаться, средненький), Webserver (lighttpd), Network bandwitdh measure (Iperf), Bittorent client (Transmission);
  • Мониторинг: S.M.A.R.T (smartmontools), E-mail alert, SNMP, Syslog, UPS (NUT).

Можно видеть в списке практически все, что может понадобиться от домашнего NAS. Но наиболее важным достоинством является использование файловой системы ZFS. Относительно слабым местом NAS4Free является комплектный UPnP/DLNA-медиасервер. По личному опыту, он вполне рабочий и удовлетворит большинство потребностей, но если нужны специальные плюшки, приходится искать что-то другое.

Детальные, с картинками, инструкции по настройке я написал и опубликовал. Описана как базовая настройка, так и ухищрения вроде установки homemediaserver в виртуальную Windows-машину или TorrentMonitor в jail для автоматической загрузки сериалов по мере выхода обновлений.

FreeNAS 8

FreeNAS 8 — сборка на базе FreeBSD 8.3, созданная и развиваемая компанией iXsystems. Компания разрабатывает также платную версию. Долгое время бесплатная FreeNAS была искусственно серьезно ограничена. Вышедшая в октябре 2012-го версия FreeNAS 8.3 существенно доработана и обеспечивает необходимую для домашнего NAS функциональность. У FreeNAS прекрасная англоязычная документация. Коммерческие корни продукта прослеживаются и в высоких аппаратных требованиях (6+ ГБ RAM), и фокусе на используемую в бизнесе функциональность. Типично домашние сервисы, такие как битторрент и UPnP/DLNA-медиасервер, реализуются как дополнительные модули, каждый в собственной клетке (jail). Работа с jail ведется через пользовательский интерфейс и, как и весь проект, прекрасно документирована.

UPD: FreeNAS 9. Совсем недавно, 5 августа 2013 г., выпущен релиз FreeNAS 9.1.0, а 27 августа — содержащий коррекции ошибок релиз 9.1.1 Новая версия использует FreeBSD 9-Stable и, по мнению разработчика, содержит значительные улучшения в области стабильности, расширяемости, простоты использования и производительности. Мы планируем протестировать производительность в 3-й части статьи. Аппаратные требования FreeNAS 9.x по сравнению с FreeNAS 8.x не изменились.

Вид вебгуя FreeNAS 8
Рис 5. Вид веб-интерфейса FreeNAS 8 (больше скриншотов)

FreeNAS 8 устанавливается на флешку объемом не менее 2 ГБ и занимает ее целиком. Используется nanoBSD-образ, разворачиваемый в оперативную память, что предохраняет флешку от износа. Хотя существует и 32-разрядная версия, она скорее предназначена для ознакомления. Для реальной эксплуатации рекомендуется 64-разрядная версия, в частности из-за требований к объему памяти, несовместимых с 32-разрядной архитектурой.

Функциональность «из коробки» близка к функциональности NAS4Free. Отличие в доступности двух UPnP-серверов на выбор (FUPPES и miniDLNA) и отсутствии веб-сервера (разработчики обещают со временем добавить его).

Созданные в NAS4Free дисковые ZFS-пулы могут быть импортированы во FreeNAS и наоборот с сохранением данных. В профильной ветке пользователей FreeNAS 8 немного, и некоторые жалуются на проблемы (см. FAQ ветки). Впрочем, еще не создано программного продукта, на который бы хоть кто-то не жаловался.

OMV

OMV (ветка на форуме iXBT.com) основан на Debian Linux, что обеспечивает богатейшую функциональность и расширяемость. Продукт создан и поддерживается Volker Theile, в прошлом одним из ведущих разработчиков FreeNAS. Распространяется по открытой лицензии GPL.

Поддержки ZFS в продукте нет, и она, по заявлению разработчика, не планируется, что и представляется его главным недостатком. В сети можно найти хак по установке zfsonlinux на OMV.

Вид вебгуя OMV
Рис 6. Вид веб-интерфейса OMV (больше скриншотов)

OMV устанавливается на жесткий диск или USB-флешку, при этом занимает носитель полностью. Такая инсталляция не выглядит оптимальной ни для диска, ни для флешки. Странно использовать весь жесткий диск под систему, которой нужен всего гигабайт. Боязно устанавливать на флешку продукт, интенсивно на нее пишущий. Однако для обеих проблем энтузиастами разработаны хаки, решающие эти проблемы: специальный скрипт выносит каталоги с интенсивной записью в память, а несложное редактирование дистрибутива позволяет создать на системном диске раздел для данных.

Описывать функциональность OMV особого смысла нет. Базовая функциональность, аналогичная NAS4Free и FreeNAS, за примечательным отсутствием ZFS, доступна из коробки или как набор дополнительных модулей. Но OMV — по сути своей Debian, вариант Linux, для которого существует неимоверное множество приложений. Их можно устанавливать стандартным для Linux способом.

Важным преимуществом OMV над упомянутыми выше сборками является возможность утилизации гигабитного канала на достаточно слабом железе, таком как Intel Atom с гигабайтом памяти (ср. сборку padavan в первой части статьи).

Другие варианты

Кроме трех наиболее популярных сборок существует множество других. Платные варианты автором практически не рассматривались, популярность у них невелика. Можно упомянуть unRAID, бесплатный в базовой версии, до 3 дисков, и не запретительно дорогой в платных. Это не совсем NAS, но решение, позволяющее держать домашнюю файлопомойку на разнокалиберных дисках, в том числе форматированных в NTFS, а также добавлять диски в систему. При этом за счет наличия диска четности данные выживают при смерти одного любого диска.

Многие бесплатные сборки находятся на ранней стадии развития, не позволяющей использовать их любителем. Как потенциально интересный пример можно привести MyNAS. Это Linux(CentOS)-проект с интеграцией zfsonlinux. Если (и когда) автор доведет продукт до релиза, он может стать интересной альтернативой.

Множество сборок для NAS растут корнями из корпоративного применения. Для дома это может быть минусом. Полбеды, что акцент делается на функциональности, дома малоинтересной. Хуже, что необходимая из коробки отсутствует, а добавить ее затруднительно. Чаще всего в таких сборках не хватает торрент-клиента и DLNA-сервера. Пример — Openfiler, отличающийся еще и платностью документации.

Если вам, как и автору этих строк, наличие ZFS кажется обязательной функциональностью NAS, то рано или поздно внимание обращается к вариантам, растущим корнями из Solaris. На все Solaris-деривативы наложило печать удушение OpenSolaris со стороны Oracle после покупки Sun. Большинство пережили трудный этап, перейдя на кодовую базу Illumos, некоторые вымерли, но это другая тема. Вариантов здесь несколько, например EON. Плюсы — производительность при несколько меньших аппетитах к железу по сравнению с вариантами на FreeBSD и Linux. Минусы — более узкий список аппаратной и программной совместимости и относительно высокие требования к администратору. Настолько высокие, что обычно значительно проще развертывать систему на полной ОС.

Здесь покоится OpenSolaris
Рис 7. Здесь покоится OpenSolaris (с сайта zdnet.de)

Особняком стоит использование на стандартном железе модифицированного софта от покупных NAS. Автор не юрист, чтобы всесторонне оценить детали применения лицензий, поэтому на всякий случай обойдемся без ссылок. Но для не-юриста картина выглядит очень похожей на ситуацию с OpenWRT. Оригинальные прошивки написаны производителями NAS на базе открытого кода с лицензией GPL. По этой же лицензии результат опубликован в исходных кодах. Энтузиасты, снова по лицензии GPL, берут этот код, модифицируют его и публикуют результат. Этот результат представляет собой в целом рабочую сборку на основе Linux, которую можно установить на голое железо, виртуальную машину или подходящий NAS другого производителя. Последнее, кстати, практикуется уже много лет и до сих пор не прикрыто — вероятно, как раз из-за отсутствия юридических нарушений в такой практике. Достоинство у такого варианта ценовое, но есть и недостатки. Во-первых, помимо GPL-кода в составе покупного NAS используется и собственнический, в основном для связи с железом. Поэтому у таких сборок есть проблемы по переходу в спящий режим, экономии электроэнергии, регулированию шума вентиляторов и т.п. Во-вторых, покупной NAS ведущего производителя — это еще и интернет-сервисы, предназначенные, естественно, только для покупателей, а не для всех желающих. Так что ровно то же самое в результате установки такой сборки не получается, скорее это вариант пощупать, в том числе и в виртуалке.

Веб-интерфейс на полную ОС

Более-менее активно участники профильной ветки используют ZFSguru и napp-it. Несомненно, существуют и другие продукты, начиная с webmin. Но они меньше подходят (или совсем не подходят) для обсуждаемых целей. Да и автор с ними не сталкивался, см. эпиграф.

ZFSguru

ZFSguru использует FreeBSD. Продукт на сегодняшний день представляет собой удобный инсталлятор FreeBSD, позволяющий установить полную систему на ZFS-пул, например на зеркало, сконфигурировать пулы данных и получить качественный полуфабрикат NAS. Полуфабрикат — потому что часть базовой для NAS функциональности пока не реализована и запланирована на неопределенное будущее. Руками придется ставить подключение к UPS, сетевой доступ к файлам и пр. Качественный — потому что то, что уже сделано — сделано хорошо.

napp-it

Проект napp-it по уровню готовности выглядит редким исключением. Продукт позволяет буквально несколькими нажатиями кнопок превратить чистую установку Solaris-подобной операционной системы в NAS с ZFS. В текущей версии рекомендуется использование OmniOs или OpenIndiana, поддерживаются с некоторыми ограничениями Nexenta, Illumian и Oracle Solaris 11.1. Секрет, видимо, в том, что разработчики удачно коммерциализировали продукт. Базовая функциональность бесплатна, бесплатны и расширения для домашнего использования, прежде всего UPnP-сервер Mediatomb. Расширения сугубо корпоративного назначения — платные. По результатам непродолжительных испытаний автором на виртуалке впечатления остались положительные. Но солярка есть солярка. В репозитариях даже transmission весьма бородатый, а более-менее современный надо собирать, на что автору кривизны рук не хватило. Камрад padavan где-то на форуме описывал пассы с бубном, которые позволили ему решить проблему, но, как говорится, что позволено Юпитеру, то не дано быку. Так что хотя napp-it и здорово добавляет дружественности NAS на базе Solaris, без заметного UNIX-опыта в эту тележку лучше не впрягаться.

Полная *nix-система

Тут — коротко. Ученого учить — только портить. Серверный *nix-продукт с нуля дома поднимают либо люди с профессиональным опытом, либо продвинутые любители, хобби которых уже не умещается в песочницу готовой сборки (или коробки) с пришиванием к ней рюшечек. Судя по профильной ветке, работают с самым разнообразным софтом. Зачастую совмещая через виртуализацию сильные стороны и/или развитую функциональность продуктов под разными ОС.

Виртуализация в NAS

Использование виртуализации в NAS — практика для продвинутого пользователя естественная. Наверное, простейший вариант — установить на NAS VirtualBox с PHP-веб-интерфейсом и поднять несколько виртуальных машин, делающих то, что в основной оси делать трудно или нецелесообразно. Прежде всего, запустить более-менее экзотический софт. Для NAS4Free и OMV написаны специальные расширения, делающие виртуализацию посильной любителю. Разумеется, VirtualBox можно поставить и на практически любую полную ось. Задача управления виртуальной машиной через монитор, мышь и клавиатуру десктоп-компьютера решается еще проще, в том числе с использованием VNC-клиента. Недостатком VirtualBox является значительное падение производительности по сравнению с системами на голом железе.

Второй вариант — мягкая виртуализация через FreeBSD-клетки (jails). Владельцы систем на полных осях чаще используют клетки по прямому назначению, для изоляции потенциально опасных процессов, типа веб-сервера, доступного извне. В сборках механизм клеток используется для того, чтобы обойти ограничения на установку дополнительных программ. Во FreeNAS это коробочная функциональность, для NAS4Free написано расширение (TheBrig), интегрирующееся в веб-интерфейс.

Наконец, выходящий за рамки NAS вариант виртуализации, довольно популярный в профильной ветке, называется с подачи разработчиков «все-в-одном». Кратко — на железо устанавливается ESXi, в нем поднимается виртуальная машина, единственной задачей которой является создание ZFS-хранилища. Для этого внутрь нее пробрасывается дисковый контроллер, а дисковое пространство экспортируется по файловым и блочным протоколам для других виртуальных и реальных машин. Если вам непонятно, зачем такие извращения — оно вам точно не нужно.

Итого

Если вы хотя бы по диагонали прочитали столько букв, то на 99,9% с созданием домашнего NAS вы справитесь. Было бы желание. Успеха, и если что — обращайтесь в профильную ветку.

Хотелось бы выразить благодарность всем участникам профильной ветки на forum.ixbt.com, в том числе камрадам bormental, Krey, ZanZag, Oleg Pyzhov, Sergei V. Sh, TPAKTOP, iZEN и RU_Taurus за множество полезных комментариев.

Особая благодарность разработчикам свободного софта: Olivier Cochard-Labbé, Daisuke Aoyama, Michael Zoon, Volker Theile и многим другим. Они сделали возможным само существование темы «NAS своими руками».



5 сентября 2013 Г.

NAS . :

NAS

:


, ,

NAS , production-, . . , . , IMHO. «IMHO» . , . — , , .

NAS, Windows, FreeBSD Handbook Oracle Solaris ZFS Administration Guide. NAS IT- , . , .

, NAS.

. , .

. SMB/CIFS Windows, NFS ( ), FTP ( ) AFP ( ). DLNA, .

.

. , , — , : — , — - USB-, . ( — ) , NAS — . .

. . , , . , , , - .

, -. — , , . , SSH .

. : , , NAS , . .

DLNA/UPnP

, DLNA-, . , , UPnP-. DLNA HMS, UPnP/DLNA-: « , (, ) . , , , ». , , WD, , , . . , , .

NAS — . 1- , , 4-6, 10 . , , . , . , , , . , «, », . , , . : RAID . RAID . . , .

« » RAID. . NAS, . , ́ — RAID .

(RAID Write Hole)

RAID 5 (6 .) . . . ( , ..), , . , , RAID (chkdsk, fsck…). , . . , . .

   (RAID Write Hole)
1. RAID. — , . — . — , RAID .

RAID- BBU, «». , . .

RAID 5 3-, . , 4 × 3T = 12 =1,2·1013 = 0,96·1014 , — RAID . 1·1014 (. . WD Red). . - , . : ( 10−15), RAID 6. , .

, . — , . , ́ : — , , . — . — . , , . ?

«» — — . , FAT ext2, . , NTFS ext3, , .. . , ? — Copy-on-Write. , , , — .

, Copy-on-Write. — ZFS ( production 2006 ), Btrfs, Linux, ReFS, Windows Server 2012.

ZFS

ZFS RAID- . (CDDL). Sun Microsystems Solaris. FreeBSD 7.0. ZOL (ZFS on Linux) . ZOL, . Mac OS X, ZEVO, . .

 ZFS
2. ZFS , , ( eonnas.com).

ZFS, :

  • ;
  • , chkdsk fsck ;
  • , ;
  • , , .

ZFS, RAID:

  • , .. ;
  • -, SATA-;
  • ;
  • , ;
  • , ;
  • RAID1 (), RAID5 ( ), RAID6 () «RAID7» ( ), , RAID50 RAID60.

ZFS , :

  • RAID-Z- . — . 3 ( ) RAID-Z , . RAID-Z1 5 RAID-Z1 6 , - , .
  • . — , ́.
  • . ZFS , . Atom 330 2 . ZFS , 40-50 / .

, : ZFS ( / -, ), — , , NTFS, . — .

, , ZFS, , . NAS ZFS. . NAS, .

ReFS + Storage Spaces

Windows Server 2012 Microsoft ReFS Storage Spaces. ReFS Storage Spaces ZFS, , . - , thin provisioning . — , Windows Server 2012 Windows 8.1.

, , , ReFS—Storage Spaces , , , , , RAID5 ZFS RAID-Z. , - ReFS, . , , .

Btrfs + mdadm

Btrfs Linux , 2007 . ( ZFS), , . , , ZFS, , , mdadm, — RAID .

, , . , NAS NTFS, ext4 UFS — . .


3. NAS

VirtualBox, . , , . . .

NAS .

-, . Linux, UNIX Windows . Windows , *nix NAS , *nix — .

— NAS . -, .

, — , — - . , . , , . . .

Windows

NAS , Windows 20%. , , .

, . Windows — . NAS — , 20% . , Windows NAS , :

  • Windows — , .
  • , .
  • , . , *nix- . — .
  • Windows — , , . NAS . , , .
  • Windows .
  • — Windows, .

, , , , . , . , , .

Windows, :

  • SMB.
  • . Windows .
  • . NAS . , , Windows.
  • , .

NAS Windows . Windows , .

*nix- NAS

— NAS4Free, OMV (=openmediavault) FreeNAS 8.x. , .

FreeNAS , . FreeNAS , . , , iXsystems, , . FreeNAS 8.x, FreeBSD 8.x. , FreeBSD 9.x NAS4Free. , FreeNAS 0.7 NAS4Free, FreeNAS 8.

, , FAQ , .

, .

NAS4Free 9.x, c ZFS x86, x86-64 512 , 4+ 400 ( )
NAS4Free 9.x, ZFS x86, x86-64 256 full, 384 embedded, 512 400 ( )
FreeNAS 8.x, ZFS x86-64 6+ 2 ( )
FreeNAS 8.x, ZFS x86, x86-64 4 2 ( )
OMV x86, x86-64 1 2 ( )

, , . , FreeNAS , , . , 512 .

NAS4Free

NAS4Free BSD. ( m0n0wall, FreeNAS 0.7, 0.6 ), — 9. , . FreeBSD 9.1.

 - NAS4Free
4. - NAS4Free ( )

NAS4Free , 32- 64- Intel x86- . NAS4Free : LiveCD/LiveUSB, full embedded. « » *nix- . . full — , . , , swap-, . full USB- , - .

USB- embedded. , , XML. . . — . , , , . , .

, , , -, . , - . unionfs . , jail , - Windows. TheBrig jail . , . , NAS4Free , , -, .

, « »:

  • WebGUI ( );
  • : ZFS v28 (, RAID-Z 1, 2, 3…), -RAID 0, 1, 5 (1+0, 1+1 ..), ( , ), ZFS, UFS, ext2/3, FAT, NTFS, iSCSI-;
  • : SMB/CIFS (Samba) — Windows-, AFP (Netatalk) — Mac OS, NFS — *nix, FTP (ProFTPD), TFTP (tftp-hpa), Rsync (client/server) — , , SCP (SSH), iSCSI-;
  • : UPnP server (FUPPES — , ), Webserver (lighttpd), Network bandwitdh measure (Iperf), Bittorent client (Transmission);
  • : S.M.A.R.T (smartmontools), E-mail alert, SNMP, Syslog, UPS (NUT).

, NAS. ZFS. NAS4Free UPnP/DLNA-. , , , - .

, , . , homemediaserver Windows- TorrentMonitor jail .

FreeNAS 8

FreeNAS 8 — FreeBSD 8.3, iXsystems. . FreeNAS . 2012- FreeNAS 8.3 NAS . FreeNAS . (6+ RAM), . , UPnP/DLNA-, , (jail). jail , , .

UPD: FreeNAS 9. , 5 2013 ., FreeNAS 9.1.0, 27 — 9.1.1 FreeBSD 9-Stable , , , , . 3- . FreeNAS 9.x FreeNAS 8.x .

  FreeNAS 8
5. - FreeNAS 8 ( )

FreeNAS 8 2 . nanoBSD-, , . 32- , . 64- , - , 32- .

« » NAS4Free. UPnP- (FUPPES miniDLNA) - ( ).

NAS4Free ZFS- FreeNAS . FreeNAS 8 , (. FAQ ). , , - .

OMV

OMV ( iXBT.com) Debian Linux, . Volker Theile, FreeNAS. GPL.

ZFS , , , , . zfsonlinux OMV.

  OMV
6. - OMV ( )

OMV USB-, . , . , . , . , : , .

OMV . , NAS4Free FreeNAS, ZFS, . OMV — Debian, Linux, . Linux .

OMV , Intel Atom (. padavan ).

. , . unRAID, , 3 , . NAS, , , NTFS, . .

, . MyNAS. Linux(CentOS)- zfsonlinux. ( ) , .

NAS . . , , . , , . - DLNA-. — Openfiler, .

, , ZFS NAS, , Solaris. Solaris- OpenSolaris Oracle Sun. , Illumos, , . , EON. — FreeBSD Linux. — . , .

  OpenSolaris
7. OpenSolaris ( zdnet.de)

NAS. , , . - OpenWRT. NAS GPL. . , GPL, , . Linux, , NAS . , , — , - . , . -, GPL- NAS , . , , .. -, NAS — -, , , , . , , .

-

- ZFSguru napp-it. , , webmin. ( ) . , . .

ZFSguru

ZFSguru FreeBSD. FreeBSD, ZFS-, , NAS. — NAS . UPS, . — , — .

napp-it

napp-it . Solaris- NAS ZFS. OmniOs OpenIndiana, Nexenta, Illumian Oracle Solaris 11.1. , , , . , , UPnP- Mediatomb. — . . . transmission , - , . padavan - , , , , , . napp-it NAS Solaris, UNIX- .

*nix-

— . — . *nix- , , ( ) . , . / .

NAS

NAS — . , — NAS VirtualBox PHP-- , , . , - . NAS4Free OMV , . , VirtualBox . , - , VNC-. VirtualBox .

— FreeBSD- (jails). , , -, . , . FreeNAS , NAS4Free (TheBrig), -.

, NAS , , «--». — ESXi, , ZFS-. , . , — .

, 99,9% NAS . . , — .


forum.ixbt.com, bormental, Krey, ZanZag, Oleg Pyzhov, Sergei V. Sh, TPAKTOP, iZEN RU_Taurus .

: Olivier Cochard-Labbé, Daisuke Aoyama, Michael Zoon, Volker Theile . «NAS ».
 
  NAS ( 8)
 
   NAS ( 3)