Домашняя СХД с BTRFS и виртуализацией.

Домашняя система хранения данных, назовём её хранилкой на антресолях, вещь в наше время весьма полезная, тем более если уже прошёл этап отказа от стационарных ПК и переход к ноутбукам и ещё более мобильным девайсам.

Основные требования к системе: доступ по IP (NFS/SMB), энергоэффективность, отказоустойчивость, объём хранимой информации, компактность, возможность запускать дополнительные службы.

Готовые решения оказались какими-то дорогими и простоватыми. А отдельно компоненты оказались маняще дешёвыми и мощными. В итоге собрал из того что было доступно в магазинах.

Аппаратная часть


  • материнская плата Gigabyte j1900n-d2p (в начале 2015 года купил за 90$)
    • на первый взгляд для хранилки брать МБ с всего 2 SATA портами - не вариант, но зато у платы есть PCI и PCIe, куда можно навтыкать SATA контроллеров. Да и два винта по 3Тб это уже не мало;
    • неплохо бы несколько сетевых интерфейсов, но и одного хватает пока, опять же есть PCI и куча USB;
    • 2 слота под DIMM, установлены 2 планки по 4ГБ;
  • жёсткий диск TOSHIBA DT01ACA300 (в начале 2015 года купил за 90$)
    • 3ТБ, 7.2К, поддерживает SCT ERC (оч. полезно если организуем RAID);
    • Через год докупил ещё один такой же;
  • корпус GoldenField M202B (в начале 2016 года купил за 35$) 
    • очень компактный корпус, штатно вмещает всего 2 диска (но есть место под полноразмерный CD привод);
    • вмещает БП только mATX/SFX
    • один слот под PCI, но умело допилив напильником и переклепав крепление вмещается моя плата с 2 PCI;
    • ещё из минусов корпуса - тонкий металл, дребезжит, резонирует. Поможет проклейка стенок резиной;
    • под охлаждения дисков удачно на стенку вмещается вентилятор 12мм толщины;
  • БП в принципе любой, у меня в шкафу лежал БД 2006 г.в. Докупил на него переходников MOLEX PATA - SATA и всё счастье.
По факту мы имеем что-то больше похожее на домашний сервер, чем на хранилище, ну да ещё лучше. Энергопотребление с одним диском было менее 30Вт (12Вт CPU, ~8Вт MB, 8Вт HDD).
Считаю что данная конфигурация в круглосуточном режиме не сильно ударит по бюджету электроэнергии.

Программная часть

Изначально я хотел организовывать рейд программно на линуксе через MD-RAID. Потом проникся философией ZFS, а затем и BTRFS, на которую мой выбор и пал.
Из отсутствующих у BTRF на текущий момент возможностей выделю следующие:

  • невозможность создать файловую систему case-preverse (маст хев для шаринга по самбе)
  • нельзя менять уровень RAID для сабвольюмов
Но у других ФС то вообще нет никаких возможностей, по сравнению с BTRFS.

С первым пунктом можно более менее справится настройками Самбы:
[global]
case sensitive = False
preserve case = yes

Второе решается не очень красиво. Допустим нам надо одну ФС под важный уникальный контент (фотки, документы) и одну ФС под фильмы, музыку. Создаём два раздела на каждом диске. Желательно раздеы с важным контентом сделать одного размера, т.к. они будут организованы в BTRFS RAID1. Второй раздел на каждом диске отдадим под BTRFS RAID0.
Наращивать дисковое пространство можно пользуясь мощностью BTRFS: просто подключаем какой-нибудь любой левый диск и добавляем его в рейд-группу. После запускаем ребаланс (долговатая процедура даже на 1ТБ) и о счастье. У нас выросло используемое пространство.
В принципе можно заморочиться и с LVM, но при использовании BTRFS это лишний слой абстракции при работе с томами. Толкогого ресайза штатными средствами в пределах диска, как я предполагаю, от использования LVM+BTRFS мы не получим, так что просто юзаем GPT и если понадобится раздвинуть тома, то докупим любой диск.

Также BTRFS можно дедуплицировать. У меня с 3ТБ всякой мешанины из фильмов, музыки, фоток и документов дедуплицировалось около 100ГБ, а это уже очень хорошо, для такого контента, я считаю.

По ОС выбор практически любой из линуксов. Первый год я юзал Ubuntu 15.04, затем перешёл на CentOS, он мне как-то роднее стал. Обе ОС прям при установке предлагают форматировать корень в BTRFS. Замечательно!
Изначально я планировал ОС поставить на RAID1 из двух флешек, чтобы под данные отдать весь диск, но с BTRFS и организацией RAID из дисков произвольного размера, нет такой необходимости. А сейчас так вообще у меня система в BTRFS RAID1 и там же каталог с шарингом уникального контента. В целом система со всем необходимым (DNS, Proxy, KVM) занимает не более 6ГБ, можно и меньше, если следить за тем что ставишь внимательнее.


Комментарии