Linux жүйесінде арзан үй NAS жүйесін құру

Linux жүйесінде арзан үй NAS жүйесін құру

Мен, көптеген басқа MacBook Pro пайдаланушылары сияқты, ішкі жадтың жеткіліксіздігі мәселесіне тап болдым. Дәлірек айтсам, мен күнделікті қолданатын rMBP сыйымдылығы небары 256 ГБ болатын SSD-мен жабдықталған, бұл, әрине, ұзақ уақыт бойы жеткіліксіз болды.

Оның үстіне, мен ұшу кезінде бейне түсіре бастағанда, жағдай нашарлады. Мұндай рейстерден кейін түсірілген кадрлардың көлемі 50+ ГБ болды және менің нашар 256 ГБ SSD тез арада толтырылды, бұл мені сыртқы 1 ТБ диск сатып алуға мәжбүр етті. Дегенмен, бір жылдан кейін ол мен жасап жатқан деректердің көлемін басқара алмады, артықшылықтың болмауы және сақтық көшірменің маңызды ақпаратты орналастыру үшін жарамсыз болуына байланысты.

Осылайша, бір сәтте мен бұл жүйе басқа жаңартуды қажет етпей, кем дегенде екі жылға созылады деген үмітпен үлкен NAS салуды шештім.

Мен бұл мақаланы бірінші кезекте дәл не істегенімді және оны қайталау қажет болған жағдайда оны қалай жасағанымды еске салу үшін жаздым. Егер сіз де солай етуді шешсеңіз, бұл сізге де пайдалы болады деп үміттенемін.

Мүмкін сатып алу оңайырақ шығар?

Сонымен, біз не алғымыз келетінін білеміз, сұрақ қалады: қалай?

Мен алдымен коммерциялық шешімдерді қарап шықтым және әсіресе нарықтағы ең жақсы тұтынушы деңгейіндегі NAS жүйелерін қамтамасыз етуі керек болатын Synology-ге қарадым. Алайда бұл қызметтің құны айтарлықтай жоғары болып шықты. Ең арзан 4 ұялы жүйе $300+ тұрады және қатты дискілерді қамтымайды. Сонымен қатар, мұндай жинақтың ішкі толтырылуының өзі ерекше әсерлі емес, бұл оның нақты өнімділігіне күмән тудырады.

Сонда мен ойладым: неге NAS серверін өзім құрастырмасқа?

Сәйкес серверді табу

Егер сіз осындай серверді жинағыңыз келсе, ең алдымен дұрыс жабдықты табуыңыз керек. Қолданылған сервер бұл құрастыру үшін өте қолайлы болуы керек, өйткені бізге сақтау тапсырмалары үшін көп өнімділік қажет емес. Қажетті нәрселердің ішінде үлкен көлемдегі жедел жадты, бірнеше SATA қосқыштарын және жақсы желілік карталарды атап өту керек. Менің серверім тұрақты тұратын жерімде жұмыс істейтіндіктен, шу деңгейі де маңызды.

Мен eBay-де іздеуді бастадым. Мен ол жерден 410 доллардан төмен бағаға көп пайдаланылған Dell PowerEdge R210/R100 таптым, сервер бөлмесінде жұмыс істеу тәжірибесі бар болса да, мен бұл 1U қондырғыларының тым көп шу шығаратынын және үйде пайдалануға жарамсыз екенін білдім. Әдетте, мұнара серверлері жиі шулы емес, бірақ, өкінішке орай, eBay-де олардың саны аз болды және олардың барлығы не қымбат, не қуаты аз болды.

Келесі іздеу орны Craiglist болды, онда мен пайдаланылған HP ProLiant N40L-ді бар болғаны 75 долларға сататын біреуді таптым! Мен әдетте шамамен 300 доллар тұратын бұл серверлермен таныс болдым, сондықтан мен сатушыға хабарландыру әлі де белсенді деп үміттеніп электрондық хат жібердім. Бұл жағдайдың болғанын біліп, мен екі рет ойланбастан, осы серверді алу үшін Сан-Матеоға бет алдым, бұл бір қарағанда мені қуантты. Оның тозуы аз болды, аздап шаңды қоспағанда, бәрі тамаша болды.

Linux жүйесінде арзан үй NAS жүйесін құру
Сатып алғаннан кейін бірден сервер фотосы

Міне, мен сатып алған жинақтың техникалық сипаттамалары:

  • Орталық Есептеуіш Бөлім: AMD Turion(tm) II Neo N40L екі ядролы процессор (64 бит)
  • Жедел Жадтау Құрылғысы: 8 ГБ ECC емес жедел жад (алдыңғы иесі орнатқан)
  • жарқыл: 4 ГБ USB дискісі
  • SATA қосқыштары:4+1
  • NIC: 1 Гбит/с борттық NIC

Айта кету керек, бірнеше жыл болғанына қарамастан, бұл сервердің спецификациясы нарықтағы NAS опцияларының көпшілігінен, әсіресе жедел жады бойынша әлі де жоғары. Біраз уақыттан кейін мен ұлғайтылған буфер өлшемімен және деректерді қорғаудың жоғарылауымен 16 ГБ ECC дейін жаңарттым.

Қатты дискілерді таңдау

Енді бізде тамаша жұмыс жүйесі бар және ол үшін қатты дискілерді таңдау ғана қалады. Әлбетте, бұл 75 долларға мен серверді HDDсіз ғана алдым, бұл мені таң қалдырмады.

Кішкене зерттеу жүргізгеннен кейін мен WD Red HDD дискілері NAS жүйелерін тәулік бойы жұмыс істеуге қолайлы екенін білдім. Оларды сатып алу үшін мен Amazon-ға жүгіндім, онда мен әрқайсысы 24 ТБ болатын 7 көшірме сатып алдым. Негізінде, өзіңіз қалаған кез келген HDD-ді қосуға болады, бірақ олардың сыйымдылығы мен жылдамдығы бірдей екеніне көз жеткізіңіз. Бұл ұзақ мерзімді перспективада мүмкін RAID өнімділігі мәселелерін болдырмауға көмектеседі.

Жүйені орнату

Менің ойымша, көптеген адамдар жүйені өздерінің NAS құрастырулары үшін пайдаланады FreeNAS, және бұл жерде ештеңе жоқ. Дегенмен, бұл жүйені өз серверіме орнату мүмкіндігіне қарамастан, мен CentOS пайдалануды жөн көрдім, өйткені Linux жүйесіндегі ZFS бастапқыда өндіріс ортасына дайындалған және жалпы алғанда, Linux серверін басқару маған көбірек таныс. Сонымен қатар, мені FreeNAS ұсынған керемет интерфейс пен мүмкіндіктер қызықтырмады - RAIDZ массиві мен AFP бөлісуі мен үшін жеткілікті болды.

CentOS-ты USB құрылғысына орнату өте қарапайым – жүктеу көзі ретінде USB-ді көрсетіңіз, іске қосқан кезде орнату шебері оның барлық кезеңдеріне басшылық етеді.

RAID құрастыру

CentOS-ты сәтті орнатқаннан кейін мен Linux жүйесінде ZFS-ті тізімде көрсетілгендей орнаттым қадамдар осында.

Бұл процесс аяқталғаннан кейін мен ZFS ядросының модулін жүктедім:

$ 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

Мұнда мен қатты дискілердің дисплей атауларының орнына идентификаторларын қолданып жатқанымды ескеріңіз (sdx) әріптің өзгеруіне байланысты жүктелгеннен кейін олардың қосылмау мүмкіндігін азайту үшін.

Мен сондай-ақ жеке SSD-де жұмыс істейтін ZIL және L2ARC кэштерін қостым, бұл SSD-ны екі бөлімге бөлдім: ZIL үшін 5 ГБ, ал қалғандары 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 ГБ квотамен шектедім.

Оңтайландыру

zfs set compression=on data

Бұл пәрмен ZFS қысу қолдауын қосады. Қысу процессордың ең аз қуатын пайдаланады, бірақ енгізу/шығару өткізу қабілетін айтарлықтай жақсарта алады, сондықтан әрқашан ұсынылады.

zfs set relatime=on data

Бұл пәрмен арқылы біз жаңартулар санын азайтамыз atimeфайлдарға қатынасу кезінде IOPS генерациясын азайту үшін.

Әдепкі бойынша, Linux жүйесіндегі ZFS ARC үшін физикалық жадтың 50% пайдаланады. Менің жағдайда, файлдардың жалпы саны аз болса, оны 90% дейін қауіпсіз түрде арттыруға болады, өйткені серверде басқа қолданбалар жұмыс істемейді.

$ cat /etc/modprobe.d/zfs.conf 
options zfs zfs_arc_max=14378074112

Содан кейін пайдалану arc_summary.py Өзгерістердің күшіне енгенін тексеруге болады:

$ 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-zpool-скраб аптасына бір рет тазалауды орындау үшін жүйелік таймерлерді конфигурациялау және zfs-автоматты сурет әр 15 минут, 1 сағат және 1 күн сайын автоматты түрде суреттер жасау.

Netatalk орнатылуда

nettalk AFP ашық бастапқы іске асыру болып табылады (Apple файл беру протоколы). Бақылау CentO үшін ресми орнату нұсқауларыS, мен жиналған және орнатылған RPM пакетін бірнеше минут ішінде алдым.

Конфигурацияны орнату

$ cat /etc/netatalk/afp.conf
[datong@Titan ~]$ cat /etc/netatalk/afp.conf 
;
; Netatalk 3.x configuration file
;

[Global]
; Global server settings
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 бұл жағдайда ZFS пулына жататын және қазірдің өзінде өнімдірек болып табылатын дерекқорды Көлем түбірінде сақтауға әкеледі.

Брандмауэрдегі порттарды қосу

$ sudo firewall-cmd --permanent --zone=public --add-service=mdns
$ sudo firewall-cmd --permanent --zone=public --add-port=afpovertcp/tcp

sudo брандмауэр-cmd --тұрақты --zone=public --add-port=afpovertcp/tcp
Егер бәрі дұрыс конфигурацияланған болса, құрылғыңыз Finder-де көрсетілуі керек және Time Machine де жұмыс істеуі керек.

Қосымша параметрлер
SMART мониторинг

Дискінің ақаулығын болдырмау үшін дискілердің күйін бақылау ұсынылады.

$ sudo yum install smartmontools
$ sudo systemctl start smartd

UPS үшін демон

APC UPS зарядын бақылайды және заряд өте төмен болған кезде жүйені өшіреді.

$ sudo yum install epel-release
$ sudo yum install apcupsd
$ sudo systemctl enable apcupsd

Аппараттық құралдарды жаңарту

Жүйені орнатқаннан кейін бір аптадан кейін мен сервердің ECC емес жады туралы көбірек алаңдай бастадым. Сонымен қатар, ZFS жағдайында буферлеуге арналған қосымша жады өте пайдалы болады. Сондықтан мен Amazon-ға қайтып оралдым, онда әрқайсысы $2-ға 3x Kingston DDR8 80 ГБ ECC жедел жадын сатып алдым және алдыңғы иесі орнатқан жұмыс үстелінің жедел жадын ауыстырдым. Жүйе бірінші рет еш қиындықсыз жүктелді және мен ECC қолдауының белсендірілгеніне көз жеткіздім:

$ dmesg | grep ECC
[   10.492367] EDAC amd64: DRAM ECC enabled.

нәтиже

Мен нәтижеге өте риза болдым. Енді мен файлдарды көшіру арқылы сервердің 1 Гбит/с LAN қосылымын үнемі бос ұстай аламын және Time Machine мінсіз жұмыс істейді. Жалпы, мен орнатуға ризамын.

Жалпы құны:

  1. 1 * HP ProLiant N40L = $75
  2. 2 * 8 ГБ ECC жедел жады = 174 доллар
  3. 4 * WD Red 3 TB HDD = 440 доллар

Барлығы = $ 689

Енді мен айта аламын, бағасы лайықты болды.

Сіз өзіңіздің NAS серверлеріңізді жасайсыз ба?

Linux жүйесінде арзан үй NAS жүйесін құру

Linux жүйесінде арзан үй NAS жүйесін құру

Ақпарат көзі: www.habr.com

пікір қалдыру