Som mÄnga andra MacBook Pro-anvÀndare har jag stött pÄ ett problem med otillrÀckligt med intern lagring. För att vara mer exakt har min dagliga rMBP utrustats med en SSD pÄ endast 256 GB, vilket naturligtvis inte rÀckte lÀnge.
Och nĂ€r jag dessutom började spela in video under mina flygningar förvĂ€rrades situationen. MĂ€ngden inspelat material efter sĂ„dana flygningar översteg 50 GB, och min olyckliga SSD pĂ„ 256 GB blev snabbt full, vilket tvingade mig att köpa en extern hĂ„rddisk pĂ„ 1 TB. ĂndĂ„, efter ett Ă„r, klarade den inte lĂ€ngre av de datamĂ€ngder jag genererade, för att inte tala om att bristen pĂ„ redundans och backup gjorde den olĂ€mplig för lagring av viktig information.
SÄ, en dag bestÀmde jag mig för att bygga en NAS med stor kapacitet i hopp om att detta system skulle hÄlla i alla fall ett par Är utan att behöva en ny uppgradering.
Den hÀr artikeln skrev jag frÀmst som en pÄminnelse om vad och hur jag gjorde ifall jag skulle behöva göra detta igen. Jag hoppas att den ocksÄ blir anvÀndbar för dig om du planerar att göra nÄgot liknande.
Kanske Àr det enklare att köpa?
SÄ, vi vet vad vi vill ha, frÄgan kvarstÄr hur?
Först bekantade jag mig med kommersiella lösningar och övervÀgde sÀrskilt företaget Synology, som antogs erbjuda de bÀsta NAS-lösningarna för konsumenter pÄ marknaden. Men kostnaden för denna tjÀnst visade sig vara ganska hög. Det billigaste systemet med 4 fack kostar över 300 USD, och hÄrddiskarna ingÄr inte. Dessutom Àr den interna hÄrdvaran i ett sÄdant paket inte sÀrskilt imponerande, vilket ifrÄgasÀtter dess verkliga prestanda.
DÄ kom jag att tÀnka: varför inte bygga en NAS-server sjÀlv?
Att hitta rÀtt server
NÀr du planerar att bygga en sÄdan server Àr det först och frÀmst viktigt att hitta rÀtt hÄrdvara. För denna byggen Àr en begagnad server fullt tillrÀcklig, eftersom vi för lagringens behov inte krÀver sÀrskild prestanda. Bland det som behövs bör stor mÀngd RAM, flera SATA-portar och bra nÀtverkskort nÀmnas. Eftersom min server kommer att vara placerad i mitt permanenta hem Àr ljudnivÄn ocksÄ en viktig faktor.
Jag började mina sökningar pÄ eBay. Trots att jag hittade mÄnga begagnade Dell PowerEdge R410/R210 för mindre Àn $100 dÀr, visste jag frÄn min erfarenhet i serverrum att dessa 1U-enheter Àr för högljudda och inte passar för hemmabruk. Som regel Àr tower-servrar ofta mindre ljudliga, men tyvÀrr fanns det inte mÄnga av dem till salu pÄ eBay, och de som fanns var antingen dyra eller kraftlösa.
NÀsta plats för sökandet blev Craiglist, dÀr jag hittade en person som sÄlde en begagnad HP ProLiant N40L för endast $75! Jag var bekant med dessa servrar, som Àven i begagnat skick vanligtvis kostar runt $300, sÄ jag skickade ett meddelande till sÀljaren i hopp om att annonsen fortfarande var aktuell. NÀr jag fick veta att sÄ var fallet Äkte jag genast till San Mateo för att hÀmta denna server, som gladde mig vid första ögonkastet. Den hade minimal slitage och förutom lite damm var allt annat i utmÀrkt skick.

Bild av servern, direkt efter köpet
HÀr Àr specifikationen för det paket jag köpte:
- CPU: AMD Turion(tm) II Neo N40L Dual-Core Processor (64-bit)
- RAM: 8 GB non-ECC RAM (installerat av tidigare Àgaren)
- Flash: 4 GB USB-enhet
- SATA-kontakter: 4 + 1
- NIC: 1 Gbps on-board NIC
Det Àr vÀrt att nÀmna att, trots att servern Àr flera Är gammal, övertrÀffar dess specifikationer fortfarande de flesta NAS-system som erbjuds pÄ marknaden, sÀrskilt vad gÀller RAM. NÄgra mÄnader senare gjorde jag till och med en uppgradering till 16 GB ECC med större buffert och förbÀttrad dataskydd.
Val av hÄrddiskar
Nu har vi ett utmÀrkt fungerande system och vi mÄste bara hitta hÄrddiskar till det. Det var uppenbart att för de $75 fick jag bara sjÀlva servern utan HDD, vilket inte förvÄnade mig.
Efter att ha gjort lite forskning upptÀckte jag att för att arbeta med NAS-system i 24/7-lÀge Àr HDD WD Red de bÀsta. Jag vÀnde mig till Amazon för att köpa 4 enheter pÄ 3 TB vardera. I princip kan du ansluta vilken föredragen HDD som helst, men se till att de har samma kapacitet och hastighet. Detta hjÀlper dig att undvika potentiella prestandaproblem med RAID i framtiden.
Systemkonfiguration
Jag tror att mĂ„nga kommer att anvĂ€nda system för sina NAS-samlingar , och det finns inget fel med det. Men trots möjligheten att installera detta system pĂ„ sin egen server föredrog jag att anvĂ€nda CentOS, eftersom ZFS pĂ„ Linux-systemet ursprungligen Ă€r förberett för produktionsmiljöer, och jag Ă€r mer bekant med Linux-serverhantering. Dessutom var jag inte intresserad av det trendiga grĂ€nssnittet och funktionerna som erbjuds av FreeNAS â jag nöjde mig med RAIDZ-arrayen och delning via AFP.
Att installera CentOS pĂ„ USB Ă€r ganska enkelt â det rĂ€cker att ange USB som startkĂ€lla, och vid uppstart kommer installationsguiden att leda dig genom alla steg.
RAID-uppsÀttning
Efter att ha installerat CentOS framgÄngsrikt installerade jag ocksÄ ZFS pÄ Linux, och följde de steg som listas .
NĂ€r denna process var klar laddade jag ZFS Kernel-modulen:
$ sudo modprobe zfs Och skapade en RAIDZ1-array med kommandot 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 Observera att hÀr anvÀnder jag ID:n för hÄrddiskarna istÀllet för deras visade namn (sdx), för att minska risken för monteringsfel efter omstart pÄ grund av förÀndringar i enhetsbokstÀver.
Jag lade ocksÄ till ZIL och L2ARC-cache, körande pÄ en separat SSD, genom att dela upp denna SSD i tvÄ partitioner: 5GB för ZIL och resten för L2ARC.
NÀr det gÀller RAIDZ1 kan det klara av att en disk gÄr sönder. MÄnga hÀvdar att denna typ av pool inte bör anvÀndas pÄ grund av risken att en andra disk kan gÄ sönder under ombyggnaden av RAID, vilket kan leda till dataförlust. Jag valde dock att ignorera denna rekommendation eftersom jag regelbundet gjorde sÀkerhetskopior av viktiga data pÄ en extern enhet, och om hela arrayen gÄr sönder kan det pÄverka tillgÀngligheten av data, men inte deras bevarande. Om du inte har möjlighet att göra sÀkerhetskopior Àr det bÀttre att anvÀnda lösningar som RAIDZ2 eller RAID10.
För att kontrollera att poolen skapades framgÄngsrikt kan du köra:
$ sudo zpool statusoch
$ sudo zfs list
NAME USED AVAIL REFER MOUNTPOINT
data 510G 7.16T 140K /mnt/data Som standard monterar ZFS den nyss skapade poolen direkt till /, vilket vanligtvis Àr oönskat. Det kan Àndras genom att köra:
zfs set mountpoint=/mnt/data dataHÀrifrÄn kan du vÀlja att skapa ett eller flera dataset för datalagring. Jag skapade tvÄ, en för Time Machine-backup och en andra för allmÀnt fillagring. Storleken pÄ Time Machine-datasetet begrÀnsade jag med en kvot pÄ 512 GB för att förhindra oÀndlig tillvÀxt.
Optimering
zfs set compression=on dataDetta kommando aktiverar ZFS-kompressionsstödet. Kompressionen anvÀnder minimalt CPU-energi, men kan avsevÀrt förbÀttra I/O-genomströmningen, sÄ det rekommenderas alltid att anvÀnda.
zfs set relatime=on data Med detta kommando minskar vi antalet uppdateringar till atime, för att minska genereringen av IOPS vid Ätkomst till filer.
Som standard anvÀnder ZFS pÄ Linux 50 % av det fysiska minnet för ARC. I mitt fall, nÀr det totala antalet filer Àr litet, kan denna mÀngd sÀkert ökas till 90 %, eftersom andra program pÄ servern inte kommer att köras.
$ cat /etc/modprobe.d/zfs.conf
options zfs zfs_arc_max=14378074112Sedan genom kan du kontrollera att Àndringarna trÀtt i kraft:
$ 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
...Konfigurera Äterkommande uppgifter
Jag anvÀnde för att stÀlla in systemd-timrar för att köra rengöring en gÄng i veckan och för att automatiskt skapa tillstÄndsbilder var 15:e minut, 1 timme och 1 dag.
Installation av Netatalk
Àr en öppen implementering av AFP (). Följande S, fick jag bokstavligen paketet RPM samlat och installerat pÄ bara nÄgra minuter.
Konfigurera instÀllningar
$ cat /etc/netatalk/afp.conf
[datong@Titan ~]$ cat /etc/netatalk/afp.conf
;
; Netatalk 3.x konfigurationsfil
;
[Global]
; Globala serverinstÀllningar
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 Observera att vol dbnest Àr en betydande förbÀttring i mitt fall, eftersom Netatalk som standard skriver CNID-databasen till roten av filsystemet, vilket var helt oönskat, eftersom mitt primÀra filsystem körs pÄ USB, vilket gör att det fungerar relativt lÄngsamt. Att aktivera vol dbnest leder istÀllet till att databasen sparas i roten av Volymen, vilket i det hÀr fallet hÀnvisar till ZFS-poolen och redan Àr mycket mer effektivt.
Aktivera portar i brandvÀggen
$ 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
Om allt har konfigurerats korrekt, bör din enhet visas i Finder och Time Machine ska ocksÄ fungera.
Ytterligare instÀllningar
S.M.A.R.T övervakning
Det rekommenderas att övervaka statusen pÄ dina diskar för att förhindra eventuella fel.
$ sudo yum install smartmontools
$ sudo systemctl start smartdDemon för UPS
Ăvervakar laddningen av APC UPS och stĂ€nger av systemet nĂ€r laddningen blir kritiskt lĂ„g.
$ sudo yum install epel-release
$ sudo yum install apcupsd
$ sudo systemctl enable apcupsdHÄrdvaruuppgradering
En vecka efter att jag konfigurerade systemet började jag bli alltmer orolig över att servern hade minne utan ECC. Dessutom skulle extra minne för buffring vara mycket anvÀndbart med ZFS. SÄ jag vÀnde mig Äterigen till Amazon, dÀr jag köpte 2x Kingston DDR3 8GB ECC RAM för $80 styck och ersatte det desktop-minne som den tidigare Àgaren hade installerat. Systemet startade utan problem första gÄngen, och jag bekrÀftade att ECC-stödet var aktiverat:
$ dmesg | grep ECC
[ 10.492367] EDAC amd64: DRAM ECC enabled.Resultat
Resultatet gjorde mig mycket nöjd. Nu kan jag kontinuerligt belasta 1Gbps LAN-anslutningen pÄ servern genom att kopiera filer, och Time Machine fungerar felfritt. SÄ sammanfattningsvis Àr jag nöjd med konfigurationen.
Slutlig kostnad:
- 1 * HP ProLiant N40L = $75
- 2 * 8 GB ECC RAM = $174
- 4 * WD Red 3 TB HDD = $440
Sammanfattningsvis = $689
Nu kan jag verkligen sÀga att det var vÀrt priset.
Bygger du egna NAS-servrar?
KĂ€lla: habr.com
