Аз, като много други потребители на MacBook Pro, се сблъсквах с проблема с недостатъчното вътрешно хранилище. По-точно, използваният от мен ежедневно rMBP беше оборудван с SSD с капацитет само 256GB, което, естествено, бързо не беше достатъчно.
А когато започнах да записвам видео по време на полетите си, ситуацията се влоши. Обемът на заснетия материал след такива полети беше над 50 GB, и моят нещастен SSD от 256GB много скоро се запълни, принуждавайки ме да купя външен диск от 1TB. Въпреки това, след една година, и той спря да се справя с генерираните от мен обеми данни, да не говорим за недостатъка на излишък и резервно копие, правещи го неподходящ за съхранение на важна информация.
Така че в един момент реших да сглобя NAS с голям капацитет в надеждата, че тази система ще изкара поне няколко години, без да изисква нов ъпгрейд.
Тази статия написах преди всичко като запис на това, какво точно и как направих, в случай че ми се наложи да го направя отново. Надявам се, че и за вас ще е полезна, ако решите да направите същото.
Не е ли по-добре да купя?
И така, знаем какво искаме да получим, остава въпросът как?
Първо се запознах с търговските решения и разгледах, по-специално, компанията Synology, която, както се предполага, предлага най-добрите NAS системи на потребителския пазар. Обаче цената на тази услуга се оказа доста висока. Най-евтината система с 4 отсека струва над $300, а харддисковете не са включени в комплекта. Освен това, самата вътрешна конфигурация на такъв комплект не е особено впечатляваща, което поставя под въпрос реалната й производителност.
Тогава се замислих: защо да не сглобя NAS сървър сам?
Търсене на подходящ сървър
Ако смятате да комплектовате такъв сървър, на първо място трябва да намерите правилното оборудване. За тази конфигурация напълно подхожда употребяван сървър, тъй като за задачи по съхранение не се нуждаем от особена производителност. От необходимите елементи следва да отбележим голям обем RAM, няколко SATA конектора и добри мрежови карти. Тъй като моят сървър ще работи в мястото на постоянното ми пребиваване, то нивото на шум също е от значение.
Започнах търсенето си от eBay. Въпреки че там намерих много употребявани Dell PowerEdge R410/R210 на цена под $100, с опит в сървърните зали знаех, че тези 1U блокове генерират твърде много шум и не са подходящи за домашна употреба. Обикновено, сервърите с формат tower са по-тихи, но за съжаление на eBay имаше малко от тях, а всички бяха или скъпи, или слаби.
Следващото място, от което започнах да търся, беше сайтът Craigslist, където намерих човек, който продаваше употребяван HP ProLiant N40L само за $75! Бях запознат с тези сървъри, които дори в употребяван вид обикновено струват около $300, така че изпратих съобщение на продавача с надеждата, че обявата все още е актуална. Когато разбрах, че е така, без да се замислям, се отправих към Сан Матео, за да взема този сървър, който още от първия поглед ми хареса. Имах минимални съсипвания и, с изключение на малък прах, всичко останало беше отлично.

Снимка на сървъра, веднага след покупката
А ето и спецификацията на комплекта, който закупих:
- CPU: AMD Turion(tm) II Neo N40L Двуядрен процесор (64-бит)
- RAM: 8 GB non-ECC RAM (инсталиран от предишния собственик)
- Flash: 4 GB USB диск
- SATA конектори: 4 + 1
- NIC: 1 Gbps вграден NIC
Не е нужно да се споменава, че въпреки годините си, спецификациите на този сървър все още надхвърлят повечето NAS системи, предлагани на пазара, особено по отношение на оперативната памет. Няколко месеца по-късно дори направих ъпгрейд до 16 GB ECC с увеличен буфер и подобрена защита на данните.
Избор на твърди дискове
Сега имаме отлична работеща система и остана само да подберем твърдите дискове за нея. Очевидно е, че за тези $75 получих само сървъра без HDD, което не ме изненада.
След малко проучване установих, че за работа с NAS системи 24/7 най-добре подхождат HDD WD Red. За тяхната покупка се обръщах към Amazon, където купих 4 бр. с капацитет от 3 TB. В действителност, можете да свържете какъвто и да е предпочитан HDD, но имайте предвид, че те трябва да са с еднакъв размер и скорост. Това ще ви помогне да избегнете възможни бъдещи проблеми с производителността на RAID.
Настройка на системата
Мисля, че много хора ще използват система за техните NAS конфигурации , и в това няма нищо лошо. Въпреки че имам възможност да инсталирам тази система на своя сървър, предпочитам да използвам CentOS, тъй като системата ZFS on Linux е първоначално подготвена за продукционна среда и управлението на Linux сървър ми е много по-познато. Освен това, не ме интересува модният интерфейс и функциите, предоставяни от FreeNAS – беше ми достатъчен масив RAIDZ и споделяне по AFP.
Инсталирането на CentOS на USB е доста просто – достатъчно е да укажете USB като източник на зареждане и при стартиране инсталаторът ще ви води през всичките му етапи.
Сглобяване на RAID
След успешната инсталация на CentOS инсталирах и ZFS on Linux, следвайки посочените .
След завършване на този процес заредих модула ZFS Kernel:
$ sudo modprobe zfs И създадох RAIDZ1 масив с команда zpool:
$ sudo zpool create data raidz1 ata-WDC_WD30EFRX-68AX9N0_WD-WMC1T0609145 ata-WDC_WD30EFRX-68AX9N0_WD-WMC1T0609146 ata-WDC_WD30EFRX-68AX9N0_WD-WMC1T0609147 ata-WDC_WD30EFRX-68AX9N0_WD-WMC1T0609148
$ sudo zpool add data log ata-SanDisk_Ultra_II_240GB_174204A06001-part5
$ sudo zpool add data cache ata-SanDisk_Ultra_II_240GB_174204A06001-part6 Обърнете внимание, че тук използвам ID на твърдите дискове вместо техните показани имена (sdx), за да намаля шанса за неуспех при монтиране след зареждане заради смяна на буквено обозначение.
Също така добавих ZIL и кеш L2ARC, работещи на отделен SSD, като разделих този SSD на две партиции: 5GB за ZIL и остатъка за L2ARC.
Що се отнася до RAIDZ1, той може да издържи на отказ на 1 диск. Много хора твърдят, че този вариант на пула не бива да се използва поради вероятността вторият диск да се повреди по време на реконструкцията на RAID, което може да доведе до загуба на данни. Аз пренебрегнах тази препоръка, тъй като редовно правех резервни копия на важни данни на отдалечено устройство, и отказът дори на целия масив може да повлияе само на достъпността на данните, но не и на тяхната запазеност. Ако нямате възможност за резервни копия, е по-добре да използвате решения като RAIDZ2 или RAID10.
Убедете се в успешността на създаването на пула, изпълнявайки:
$ sudo zpool statusи
$ sudo zfs list
NAME USED AVAIL REFER MOUNTPOINT
data 510G 7.16T 140K \/mnt\/data По подразбиране ZFS монтира новосъздадения пул директно в /, което обикновено не е желателно. Можете да промените това, като изпълните:
zfs set mountpoint=\/mnt\/data dataТук можете да изберете да създадете един или повече датасети за съхранение на данни. Създадох два, един за резервно копие Time Machine и втори за общо хранилище на файлове. Обемът на датасета Time Machine ограничих с квота от 512 GB, за да предотвратя безкрайния му растеж.
Оптимизация
zfs set compression=on dataТази команда включва поддръжка на компресия ZFS. Компресията използва минимално количество CPU мощност, но може значително да подобри пропускателната способност на I/O, така че винаги се препоръчва за употреба.
zfs set relatime=on data С помощта на тази команда намаляваме броя на актуализациите до atime, за да намалим генерирането на IOPS при достъп до файлове.
По подразбиране ZFS на Linux използва 50% от физическата памет за ARC. В моя случай, когато общият брой файлове не е голям, този обем може безопасно да се увеличи до 90%, тъй като други приложения на сървъра няма да работят.
$ cat /etc/modprobe.d/zfs.conf
options zfs zfs_arc_max=14378074112След това с помощта на можете да се уверите, че промените са влезли в сила:
$ python arc_summary.py
...
ARC Size: 100.05% 11.55 GiB
Target Size: (Adaptive) 100.00% 11.54 GiB
Min Size (Hard Limit): 0.27% 32.00 MiB
Max Size (High Water): 369:1 11.54 GiB
...Настройка на повтарящи се задачи
Използвах за настройка на systemd таймери за извършване на почистване веднъж седмично и за автоматично създаване на снимки на състоянието на всеки 15 минути, 1 час и 1 ден.
Инсталиране на Netatalk
е отворена реализация на AFP (). Следвайки S, буквално за няколко минути получих събран и инсталиран RPM пакет.
Настройка на конфигурацията
$ cat /etc/netatalk/afp.conf
[datong@Titan ~]$ cat /etc/netatalk/afp.conf
;
; Netatalk 3.x конфигурационен файл
;
[Global]
; Глобални настройки на сървъра
mimic model = TimeCapsule6,106
; [Homes]
; basedir regex = /home
; [My AFP Volume]
; path = /path/to/volume
; [My Time Machine Volume]
; path = /path/to/backup
; time machine = yes
[Datong's Files]
path = /mnt/data/datong
valid users = datong
[Datong's Time Machine Backups]
path = /mnt/data/datong_time_machine_backups
time machine = yes
valid users = datong Обърнете внимание, че vol dbnest представлява в моя случай сериозно подобрение, тъй като по подразбиране Netatalk записва базата данни CNID в корена на файловата система, което беше абсолютно нежелателно, тъй като основната ми файлова система работи на USB, поради което работи сравнително бавно. Включването на vol dbnest води до запазване на базата данни в корена на Volume, който в този случай се отнася до ZFS пула и вече е значително по-бърз.
Включване на портовете в защитната стена
$ sudo firewall-cmd --permanent --zone=public --add-service=mdns
$ sudo firewall-cmd --permanent --zone=public --add-port=afpovertcp/tcp sudo firewall-cmd --permanent --zone=public --add-port=afpovertcp/tcp
Ако всичко е настроено правилно, вашата машина трябва да се показва в Finder, а Time Machine също трябва да работи.
Допълнителни настройки
S.M.A.R.T мониторинг
Препоръчва се да следите статуса на вашите дискове, за да предотвратите тяхното налагане.
$ sudo yum install smartmontools
$ sudo systemctl start smartdДемон за ИБП
Мониторира заряда на ИБП APC и изключва системата, когато заряда стане критично нисък.
$ sudo yum install epel-release
$ sudo yum install apcupsd
$ sudo systemctl enable apcupsdАппаратно обновление
След седмица на настройка на системата, започнах все повече да се тревожа за това, че в сървъра е инсталирана RAM без ECC. Освен това, в случая с ZFS, допълнителната RAM за буфериране би била много полезна. Затова отново се обърнах към Amazon, където купих 2x Kingston DDR3 8GB ECC RAM на цена от $80 всеки и замених десктопната RAM, инсталирана от предишния собственик. Системата се стартира без проблеми от първия път, и аз се уверих, че поддръжката на ECC е активирана:
$ dmesg | grep ECC
[ 10.492367] EDAC amd64: DRAM ECC enabled.Резултат
Резултатът ме зарадва. Сега мога постоянно да натоварвам 1Gbps LAN връзката на сървъра, копирайки файлове, а Time Machine работи безупречно. Така че, в общи линии, съм доволен от настройката.
Общата стойност:
- 1 * HP ProLiant N40L = $75
- 2 * 8 GB ECC RAM = $174
- 4 * WD Red 3 TB HDD = $440
Общо = $689
Сега мога да кажа, че цената си струваше.
Вие ли сами изграждате NAS сървъри?
Източник: habr.com
