Kuunda mfumo wa bei nafuu wa NAS wa nyumbani kwenye Linux

Kuunda mfumo wa bei nafuu wa NAS wa nyumbani kwenye Linux

Mimi, kama watumiaji wengine wengi wa MacBook Pro, nilikabiliwa na shida ya uhaba wa kumbukumbu ya ndani. Ili kuwa sahihi zaidi, rMBP niliyotumia kila siku ilikuwa na SSD yenye uwezo wa 256GB tu, ambayo, kwa kawaida, haitoshi kwa muda mrefu.

Na wakati, juu ya kila kitu kingine, nilianza kurekodi video wakati wa ndege zangu, hali ilizidi kuwa mbaya zaidi. Kiasi cha video zilizorekodiwa baada ya safari za ndege kama hizo kilikuwa GB 50+, na SSD yangu duni ya 256GB ilijaa upesi, na kunilazimu kununua hifadhi ya nje ya 1TB. Hata hivyo, baada ya mwaka mmoja, haikuweza tena kushughulikia kiasi cha data nilichokuwa nikizalisha, bila kutaja ukosefu wa upungufu na chelezo ilifanya isifae kwa kupangisha taarifa muhimu.

Kwa hivyo, wakati mmoja niliamua kujenga NAS kubwa kwa matumaini kwamba mfumo huu ungedumu angalau miaka kadhaa bila kuhitaji uboreshaji mwingine.

Niliandika nakala hii kimsingi kama ukumbusho wa kile nilichofanya na jinsi nilivyofanya ikiwa nitahitaji kuifanya tena. Natumaini kwamba itakuwa muhimu kwako pia ikiwa utaamua kufanya vivyo hivyo.

Labda ni rahisi kununua?

Kwa hiyo, tunajua tunachotaka kupata, swali linabaki: jinsi gani?

Niliangalia masuluhisho ya kibiashara kwanza na nikaangalia haswa Synology, ambayo ilitakiwa kutoa mifumo bora ya kiwango cha watumiaji kwenye soko. Walakini, gharama ya huduma hii iligeuka kuwa ya juu sana. Mfumo wa bei nafuu wa 4-bay unagharimu $300+ na haujumuishi anatoa ngumu. Kwa kuongeza, kujaza ndani ya kit vile yenyewe sio ya kuvutia sana, ambayo inatia shaka utendaji wake halisi.

Kisha nikafikiria: kwa nini nisijenge seva ya NAS mwenyewe?

Kutafuta seva inayofaa

Ikiwa utakusanya seva kama hiyo, basi kwanza kabisa unahitaji kupata vifaa sahihi. Seva iliyotumiwa inapaswa kufaa kabisa kwa muundo huu, kwani hatutahitaji utendaji mwingi kwa kazi za kuhifadhi. Miongoni mwa mambo muhimu, tunapaswa kutambua kiasi kikubwa cha RAM, viunganisho kadhaa vya SATA na kadi nzuri za mtandao. Kwa kuwa seva yangu itafanya kazi mahali pa makazi yangu ya kudumu, kiwango cha kelele pia ni muhimu.

Nilianza utafutaji wangu kwenye eBay. Ingawa nilipata Dell PowerEdge R410/R210 nyingi iliyotumika hapo kwa chini ya $100, nikiwa na uzoefu wa kufanya kazi katika chumba cha seva, nilijua kuwa vitengo hivi vya 1U vilipiga kelele nyingi na havikufaa kwa matumizi ya nyumbani. Kama sheria, seva za mnara mara nyingi hazina kelele, lakini, kwa bahati mbaya, kulikuwa na wachache wao kwenye eBay, na zote zilikuwa za gharama kubwa au zisizo na nguvu.

Mahali pengine pa kutazama palikuwa Craiglist, ambapo nilipata mtu akiuza HP ProLiant N40L iliyotumika kwa $75 tu! Nilikuwa nafahamu seva hizi, ambazo kwa kawaida hugharimu karibu $300 hata kutumika, kwa hivyo nilituma barua pepe kwa muuzaji nikitumai kuwa tangazo bado lilikuwa linatumika. Baada ya kujua kwamba hii ndio kesi, mimi, bila kufikiria mara mbili, nilielekea San Mateo kuchukua seva hii, ambayo kwa mtazamo wa kwanza ilinifurahisha. Ilikuwa na uchakavu mdogo na isipokuwa vumbi kidogo, kila kitu kingine kilikuwa kizuri.

Kuunda mfumo wa bei nafuu wa NAS wa nyumbani kwenye Linux
Picha ya seva, mara baada ya ununuzi

Hapa kuna maelezo ya kit nilichonunua:

  • CPU: AMD Turion(tm) II Neo N40L Kichakata Dual-Core (64-bit)
  • RAM: RAM ya GB 8 isiyo ya ECC (imesakinishwa na mmiliki wa awali)
  • Kiwango cha: Hifadhi ya USB ya GB 4
  • Viunganishi vya SATA:4+1
  • NIC: Gbps 1 kwenye ubao NIC

Bila kusema, licha ya kuwa na umri wa miaka kadhaa, uainishaji wa seva hii bado ni bora kuliko chaguzi nyingi za NAS kwenye soko, haswa katika suala la RAM. Baadaye kidogo, niliboresha hadi GB 16 ECC na saizi iliyoongezeka ya bafa na ulinzi wa data ulioongezeka.

Kuchagua anatoa ngumu

Sasa tuna mfumo bora wa kufanya kazi na yote iliyobaki ni kuchagua anatoa ngumu kwa hiyo. Kwa wazi, kwa $ 75 hiyo nilipata seva yenyewe tu bila HDD, ambayo haikunishangaza.

Baada ya kufanya utafiti mdogo, niligundua kuwa WD Red HDD zinafaa zaidi kwa kuendesha mifumo ya NAS 24/7. Ili kuzinunua, niligeukia Amazon, ambapo nilinunua nakala 4 za 3 TB kila moja. Kimsingi, unaweza kuunganisha HDD yoyote unayopendelea, lakini hakikisha kuwa ni ya uwezo sawa na kasi. Hii itakusaidia kuzuia shida zinazowezekana za utendaji wa RAID kwa muda mrefu.

Usanidi wa Mfumo

Nadhani wengi watatumia mfumo kwa ujenzi wao wa NAS FreeNAS, na hakuna kitu kibaya na hilo. Walakini, licha ya uwezekano wa kusanikisha mfumo huu kwenye seva yangu, nilipendelea kutumia CentOS, kwani mfumo wa ZFS kwenye Linux hapo awali umetayarishwa kwa mazingira ya uzalishaji, na kwa ujumla, kusimamia seva ya Linux kunajulikana zaidi kwangu. Kando na hilo, sikuvutiwa na kiolesura cha dhana na vipengele vilivyotolewa na FreeNAS - safu ya RAIDZ na kushiriki kwa AFP vilinitosha.

Kufunga CentOS kwenye USB ni rahisi sana - taja tu USB kama chanzo cha boot, na unapozindua mchawi wa usakinishaji utakuongoza kupitia hatua zake zote.

RAID kujenga

Baada ya kusakinisha kwa mafanikio CentOS, pia niliweka ZFS kwenye Linux kufuatia waliotajwa hatua hapa.

Mara tu mchakato huu ulipokamilika, nilipakia moduli ya ZFS Kernel:

$ sudo modprobe zfs

Na kuunda safu ya RAIDZ1 kwa kutumia amri 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

Tafadhali kumbuka kuwa hapa ninatumia vitambulisho vya anatoa ngumu badala ya majina yao ya kuonyesha (sdx) kupunguza uwezekano wa wao kushindwa kupachika baada ya kuwasha kwa sababu ya mabadiliko ya herufi.

Pia niliongeza kashe ya ZIL na L2ARC inayoendesha kwenye SSD tofauti, nikigawanya SSD hiyo katika sehemu mbili: 5GB kwa ZIL na iliyobaki kwa L2ARC.

Kama ilivyo kwa RAIDZ1, inaweza kuhimili kutofaulu kwa diski 1. Wengi wanasema kuwa chaguo hili la bwawa haipaswi kutumiwa kutokana na uwezekano wa diski ya pili kushindwa wakati wa mchakato wa kujenga upya RAID, ambayo inaweza kusababisha kupoteza data. Nilipuuza pendekezo hili, kwani mara kwa mara nilifanya nakala za chelezo za data muhimu kwenye kifaa cha mbali, na kutofaulu kwa safu nzima kunaweza kuathiri tu upatikanaji wa data, lakini sio usalama wake. Ikiwa huna uwezo wa kufanya chelezo, basi itakuwa bora kutumia suluhisho kama RAIDZ2 au RAID10.

Unaweza kuthibitisha kuwa uundaji wa bwawa ulifanikiwa kwa kuendesha:

$ sudo zpool status

ΠΈ

$ sudo zfs list
NAME                               USED  AVAIL  REFER  MOUNTPOINT
data                               510G  7.16T   140K  /mnt/data

Kwa chaguo-msingi, ZFS huweka kidimbwi kipya kilichoundwa moja kwa moja /, ambayo kwa ujumla haifai. Unaweza kubadilisha hii kwa kukimbia:

zfs set mountpoint=/mnt/data data

Kuanzia hapa unaweza kuchagua kuunda hifadhidata moja au zaidi ili kuhifadhi data. Niliunda mbili, moja kwa chelezo ya Mashine ya Muda na moja ya kuhifadhi faili iliyoshirikiwa. Nilipunguza saizi ya seti ya data ya Mashine ya Muda kwa nafasi ya GB 512 ili kuzuia ukuaji wake usio na kikomo.

Uboreshaji

zfs set compression=on data

Amri hii huwezesha usaidizi wa ukandamizaji wa ZFS. Mfinyazo hutumia nguvu ndogo ya CPU, lakini inaweza kuboresha pato la I/O, kwa hivyo inashauriwa kila wakati.

zfs set relatime=on data

Kwa amri hii tunapunguza idadi ya sasisho kwa atimekupunguza kizazi cha IOPS wakati wa kupata faili.

Kwa chaguo-msingi, ZFS kwenye Linux hutumia 50% ya kumbukumbu ya kimwili kwa ARC. Katika kesi yangu, wakati jumla ya idadi ya faili ni ndogo, hii inaweza kuongezeka kwa usalama hadi 90% kwani hakuna programu zingine zitatumika kwenye seva.

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

Kisha kutumia arc_summary.py Unaweza kuthibitisha kuwa mabadiliko yametekelezwa:

$ 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
...

Kuweka kazi zinazorudiwa

nilitumia systemd-zpool-scrub kusanidi vipima muda vya mfumo kufanya usafishaji mara moja kwa wiki na zfs-picha-otomatiki ili kuunda vijipicha kiotomatiki kila baada ya dakika 15, saa 1 na siku 1.

Inaweka Netatalk

Mtandao ni chanzo wazi cha utekelezaji wa AFP (Itifaki ya Uhifadhi wa Apple) Kufuatia maagizo rasmi ya ufungaji wa CentOS, nilipokea kifurushi cha RPM kilichokusanywa na kusakinishwa kwa dakika chache tu.

Mpangilio wa usanidi

$ 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

Tafadhali kumbuka kuwa vol dbnest ni uboreshaji mkubwa katika kesi yangu, kwani kwa chaguo-msingi Netatalk huandika hifadhidata ya CNID kwenye mzizi wa mfumo wa faili, ambao haukuhitajika kabisa kwani mfumo wangu mkuu wa faili unatumia USB na kwa hivyo ni polepole. Inawasha vol dbnest inasababisha kuhifadhi hifadhidata katika mzizi wa Kiasi, ambayo katika kesi hii ni ya bwawa la ZFS na tayari ni agizo la ukubwa wa uzalishaji zaidi.

Inawasha milango katika Firewall

$ 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
Ikiwa kila kitu kilisanidiwa kwa usahihi, mashine yako inapaswa kuonekana kwenye Kipataji, na Mashine ya Muda inapaswa kufanya kazi pia.

Mipangilio ya ziada
Ufuatiliaji wa SMART

Inashauriwa kufuatilia hali ya diski zako ili kuzuia kushindwa kwa diski.

$ sudo yum install smartmontools
$ sudo systemctl start smartd

Daemon kwa UPS

Hufuatilia malipo ya APC UPS na kuzima mfumo wakati malipo yanapopungua sana.

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

Uboreshaji wa vifaa

Wiki moja baada ya kusanidi mfumo, nilianza kuwa na wasiwasi zaidi juu ya kumbukumbu isiyo ya ECC ya seva. Kwa kuongeza, katika kesi ya ZFS, kumbukumbu ya ziada ya buffering itakuwa muhimu sana. Kwa hivyo nilirudi Amazon ambapo nilinunua 2x Kingston DDR3 8GB ECC RAM kwa $80 kila moja na kubadilisha RAM ya eneo-kazi iliyosakinishwa na mmiliki wa awali. Mfumo ulianza mara ya kwanza bila matatizo yoyote, na nilihakikisha kwamba usaidizi wa ECC uliamilishwa:

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

Matokeo

Nilifurahishwa sana na matokeo. Sasa ninaweza kuweka muunganisho wa 1Gbps LAN wa seva kuwa na shughuli nyingi kwa kunakili faili, na Mashine ya Muda hufanya kazi bila dosari. Kwa hivyo, kwa ujumla, nimefurahiya usanidi.

Jumla ya gharama:

  1. 1 * HP ProLiant N40L = $75
  2. 2 * 8 GB ECC RAM = $174
  3. 4 * WD Nyekundu 3 TB HDD = $440

Katika jumla ya = $ 689

Sasa naweza kusema kwamba bei ilikuwa ya thamani yake.

Je, unatengeneza seva zako za NAS?

Kuunda mfumo wa bei nafuu wa NAS wa nyumbani kwenye Linux

Kuunda mfumo wa bei nafuu wa NAS wa nyumbani kwenye Linux

Chanzo: mapenzi.com

Kuongeza maoni