construirea perfectă, ieftine DIY NAS

acest post a fost discutat pe larg pe Hacker News.
Alex Buznik, nas.net.ua am oferit o traducere rusă în două părți: part1 și part2.

Acest post discută considerente hardware, instalarea Linux, configurarea software RAID, robustețe și care se ocupă cu corupția de date.,

am rulat timp de un deceniu un NAS auto-construit acasă, așa că m-am gândit să-mi scriu experiența, astfel încât alții să se poată bucura de numeroasele mele eșecuri și să-mi uimească de puținele mele triumfuri.

HP Proliant microsever gen8 este accesibil, compact si ruleaza pe Ubuntu

NAS-ul este perfect, deoarece este simplu, sigur, modular și extensibil și este ieftin, deoarece este construit de mâna a doua, a materiilor prime părți.,

NAS stochează în cea mai mare parte fișiere (documente și media) pe un software RAID 6 și le servește prin acțiuni Windows în rețeaua locală. Stau departe de soluțiile NAS proprietare, deoarece o defecțiune hardware ar face recuperarea datelor greu imposibilă fără înlocuirea exactă a hardware-ului. Fiecare piesă hardware, de la hard disk-uri la carcasă și placa de bază, a fost schimbată pentru altceva în acest deceniu, uneori de mai multe ori, astfel încât accentul pe modularitate a fost plătit de la sine., Deoarece integritatea și robustețea datelor pe termen lung reprezintă o preocupare, NAS ar trebui să ruleze un fel de nivel RAID redundant.,

Obiective

Obiectiv Descriere Soluție
Funcția NAS-ul servește ca un network attached file system pentru uz casnic; SNC operează câteva ore pe zi și este fie oprit sau în modul standby cele mai multe ori Marfa hardware-ul, software-ul open source, modularitate, păstrați-l simplu
Interoperabilitate Frecvent utilizate platforme de calculatoare ar trebui să fie capabil de a accesa fișierele de pe NAS. Hardware-ul de mărfuri ar trebui să se poată conecta la NAS., Samba (aka acțiuni Windows) pe Ubuntu, USB, SATA. Conectați LAN la router Wifi, nu rezoluție nume și server de timp. Accesați și gestionați cu SSH.
modularitate componentele Hardware și software ar trebui să fie interschimbabile fără a reproiecta întregul sistem x86 PC platform, Linux, Docker
Control vreau să controlez ce software este instalat pe NAS și ce face Ubuntu 18.,04 LTS
integritatea Datelor Fișiere de dimensiuni arbitrare (în termen de motiv) și conținutul ar trebui să fie stocate pe NAS și nu corodează sau pierde integritatea de-a lungul timpului RAID 6 cu 4 hard disk-uri, ext4fs cu checksumming, spălarea, asamblate manual RAID, RAM ECC. Semnează arhive cu par2.,
Zgomot Zgomot ar trebui să fie scăzut și tolerabil Hdd-uri în așteptare, SSD-ul ca principal sistem de OPERARE pe disc, scrie-cea mai mare parte, o mulțime de RAM, racire pasiva
Cost Utilizarea materiilor prime hardware și gratuit, open source software 2-parte hardware de mărfuri, hard disk în loc de Ssd-uri
întreținere Reduse Evita timpul critic de întreținere ufw firewall accepta conexiuni doar de la rețea internă, nu auto-actualizări, limitat de programe, Docker, care nu sunt accesibile din Internet.,
Compact Fizice NAS dimensiuni ar trebui să fie mici; nu există spațiu irosit 2nd hand HP proliant microsever gen8

Non-obiective

  • Tipic mass-media-sarcini de server: de streaming, codare, transcodare etc
  • minerit Bitcoin
  • Torrenting
  • Totul altceva 🙂

Noțiuni de bază Hardware-ului

Noțiuni de bază dreptul de hardware-ul este hard-(joc de cuvinte)-est o parte ca este platforma pentru modularitate, prețul, consumul de energie, dimensiunea și multe alte obiective sunt interesat., Există multe servere NAS second-hand, ieftine, dar nu-mi place ideea de sisteme hardware și software închise. De exemplu, dacă un controler RAID hardware stochează date într-un format proprietar pe hard disk-uri, aș avea nevoie de exact același controler de înlocuire pentru a recupera aceste date în cazul unei defecțiuni a controlerului.

spațiul este, de asemenea, o problemă, deci serverul ar trebui să fie compact, permițând în același timp rularea Linux pe el; acest lucru este destul de greu de găsit, deoarece majoritatea NAS-urilor compacte există sisteme proprietare și nu permit instalarea propriului sistem de operare., Există o mulțime de PC-uri și servere x86 folosite, dar sunt în mare parte prea mari sau nu au suficiente golfuri de unitate sau porturi SATA. Conectarea unităților prin USB nu este, de asemenea, o opțiune din cauza vitezei reduse, a consumului mai mare de energie și a cerințelor de spațiu. Primele două revizuiri NAS în jurul anului 2010 au folosit un barebone compact și mai târziu un mini turn în jurul căruia aveau 3 sau 4 golfuri de hard disk, dar mi se pare că acele formate de cutie sunt mai greu de găsit în aceste zile. Norocul tău dacă primești unul la un preț accesibil!

am dat peste un HP proliant microserver Gen8 folosit și nu l-am regretat de atunci., Modelul de bază a venit cu 2GB ECC RAM, un procesor Celeron 2-core și fără hard disk-uri pentru aproximativ 100€. Există o recenzie excelentă a acelui server pe Louwrentius. Serverul este extrem de compact (despre 26cm fiecare dimensiune), zgomot rezonabil scăzut (deși nu silențios) în standby, are un procesor răcit pasiv, două porturi ethernet Gbit, patru 3,5″ golfuri hard disk și un slot format de proprietate oarecum ascuns pentru un al cincilea profil scăzut 2,5″ disc pe care îl folosesc pentru un SSD., Golfurile de acționare pot primi direct discuri SATA, în timp ce slotul 5th necesită un adaptor 4 pin FDD tată-SATA și un cablu SATA pentru a conecta un SSD 2,5″ la placa de bază. Ca un bonus suplimentar, serverul are OIM care permite accesul de la distanță la server cu un browser web – deci nu este nevoie de o tastatură sau un ecran!

recunosc că serverul nu este 100% piese de mărfuri; de ex. o placă de bază sau un eșec al procesorului ar necesita comandarea acelorași piese de schimb (ceea ce probabil va fi scump) sau construirea unui server complet nou pe o altă platformă., Cu toate acestea RAM, rețeaua și stocarea sunt destul de standard, rulez Ubuntu pe ea, iar beneficiile prezentate mai devreme cântăresc suficient pentru a-mi asuma acest risc. Despre 6 ani mai târziu, serverul încă rulează fără probleme; cu excepția Bias survivor, cred că această abordare a funcționat bine.

serverul pe care l-am achiziționat avea firmware de la 2014, iar HP a început, din fericire, să publice actualizări GRATUIT recent, Ultima de la sfârșitul anului 2019, cu care am aprins microserverul pentru o interfață de gestionare HTML5.,

serverul a suferit diverse upgrade-uri de-a lungul anilor; de la o matrice RAID5 de trei hard disk-uri 2TB la configurarea curentă a SSD 3X6TB + 1X8TB + 1x 512MB și un upgrade CPU la un model Xeon și un upgrade RAM la 16GB ECC., Am aproape exclusiv reutilizați USB extern hard disk-uri (după deschidere , extragerea HDD si saruta adio garantie) care sunt mai ieftine decât cele interne… la început că este surprinzător, având în vedere hardware suplimentar (caz, USB-SATA, adaptor, cabluri, alimentare) au venit cu; cu toate acestea, garantie si specificatiile tehnice sunt semnificativ inferioare celor de unități interne care explică diferența de preț. Deoarece serverul rulează un RAID 6 (întregul punct al căruia este să supraviețuiască eșecurilor discului) cred că este un risc ok de luat.,serverul este conectat printr-un cablu Ethernet la routerul Wifi de acasă; vitezele de rețea sunt apropiate de 100MB/s, ceea ce este ok, porturile USB3 pot face în jur de 40MB/s.

instalare

ILO face configurarea serverului ușor chiar și fără o tastatură fizică și ecran. Am început cu Ubuntu server LTS 14.04, Am trecut la 16.04 și am rulat în prezent 18.04. Actualizările nu au funcționat niciodată, în fiecare caz a fost necesară o instalare nouă. vă recomandăm să instalați un VM (cum ar fi VirtualBox) pe stația dvs. de lucru, bootând Ubuntu Server 18.,04 dintr-o imagine live și instalarea Ubuntu pe un harddisk USB. Nu am putut obține Proliant microserver pentru a porni cu UEFI, deci este necesară o instalare tradițională grub BIOS. cele patru hard disk-uri sunt partiționate conform schemei de mai jos: o partiție de 1MB la început pentru încărcătorul de boot GRUB, o partiție de 50 GB Pentru Ubuntu și o partiție de 5,5 TB pentru RAID.

am folosit programul de instalare alternativ Ubuntu Server 18.04 pentru a configura partițiile Ubuntu ca un RAID 1 care reflectă acea partiție pe toate hard disk-urile., Instalatorul este capabil să instaleze Ubuntu în acel RAID 1 și GRUB este capabil să pornească de la acesta. În cazul unei defecțiuni a hard disk-ului, doar eliminarea acelui hard disk va permite serverului să pornească din nou.

+-------------------+| 1MB bios_grub || |+-------------------+| 50GB Ubuntu ext4 || RAID 1 |+-------------------+| 5.5TB Data || RAID 6 |+-------------------+

pentru ca instalatorul să funcționeze, trebuie să existe cel puțin două discuri în RAID. Mai multe discuri pot fi adăugate mai târziu. Doar asigurați-vă că instalați bootloader-ul GRUB pe toate discurile cu:

grub-install /dev/sdX

în primele mele experimente Ubuntu a reușit să pornească bine, dar nu ar activa cardurile ethernet. Acest lucru necesită unele fiddling cu netplan.

/ etc / netplan / 01-netcfg.,yaml

network: version: 2 ethernets: eno1: dhcp4: true dhcp6: true optional: true eno2: dhcp4: true dhcp6: true optional: true

Boot RAID considerații

așa cum sa discutat în” instalare”, Ubuntu cizme de la un RAID 1. md oglindește modificările la toate partițiile de boot, ceea ce este minunat. RAID – ul de boot este mapat sub /dev/md0-nu am găsit o modalitate de a-i atribui un nume, dar am găsit că numele dispozitivului este stabil. Din păcate, Ubuntu va accesa constant unitatea de pornire în timpul funcționării normale, ceea ce în cazul meu înseamnă că patru unități se rotesc întotdeauna., Am încercat diverse lucruri, cum ar fi remaparea directoarelor de jurnal pe un disc ram și pre-încărcarea fișierelor, dar jungla rezultată de scripturi este imposibil de întreținut. Soluția s-a dovedit a fi destul de simplă și elegantă, după un hack: am instalat un SSD în al 5-lea golf de hard disk și l-am adăugat la boot RAID 1. În timp ce Oglindirea a funcționat, BIOS-ul Proliant (gen8) nu va porni din Golful 5 dacă găsește hard disk-uri în altă parte., Soluția este un script care se execută după pornire și nu mecanic, hard diskuri in RAID:

mdadm --manage /dev/md0 --fail /dev/sda2 /dev/sdb2 /dev/sdc2 /dev/sdd2

script-ul este un pic mai complex decât ca nume de dispozitive nu sunt stabile și diferite condiții de eroare trebuie să fie luate în considerare (de exemplu. raidul nu ar trebui să fie atins dacă un harddisk eșuează) – dar acesta este un subiect pentru o altă postare. MD va uita că discurile au fost marcate ca eșuate după o repornire, ceea ce este o valoare implicită utilă, deoarece permite serverului să pornească de pe orice hard disk disponibil.,

Important: Cum am scris mai devreme, am foarte rar actualizare software de pe server, dar de câteva ori este necesară o actualizare, lipsă discuri trebuie să fie re-introduse în RAID, astfel încât actualizările sunt oglindite la toate partițiile de încărcare.

considerații RAID de date

al doilea RAID software care rulează pe server este, de asemenea, cel important: RAID de date., Nevoile mele de stocare au concurat istoric cu progresele tehnologiei de stocare, astfel încât RAID-ul de date a suferit tot felul de transformări pornind de la un RAID cu disc dublu 1 la un RAID de disc 3 5 la un RAID de disc 3 1 la un RAID de disc 4 6 Unde este în prezent.RAID 1 este imho cea mai bună soluție dacă vă puteți permite; este cel mai simplu de gestionat, oferă cel mai mare nivel de consistență și disponibilitate a datelor, cea mai bună performanță și este, ca un efect secundar plăcut, de asemenea, cel mai liniștit de operat datorită scrie mai ales modul care permite rotirea în jos a tuturor, cu excepția unui singur disc, atunci când datele, Din păcate, nevoile mele de date depășesc ceea ce pot face cu un RAID 1.RAID 5 este un compromis bun între redundanță și eficiența stocării, așa că am operat RAID-ul de date timp de mulți ani în acest mod. Cu toate acestea, configurarea este un pic riscantă, după cum demonstrează un experiment: imaginați-vă că un hard disk se rupe brusc în mijlocul nopții. Până când observ eșecul, procurați un înlocuitor și instalați-l au trecut cel puțin 2 zile, plus încă 12 ore pentru o Resincronizare completă., Astfel, matricea rămâne degradată și neprotejată timp de 2,5 zile – orice defecțiune ulterioară în acest interval de timp distruge toate datele irevocabil.

RAID 6 este în prezent nivelul de alegere pentru cazul meu de utilizare: oferă jumătate din capacitatea totală de două ori disponibilitatea, fiind capabil să supraviețuiască unui eșec dublu disc. Singurul dezavantaj este că modul mdadm „scrie mai ales” nu funcționează, astfel încât orice acces la RAID necesită patru discuri active și este destul de zgomotos.

când am creat RAID-ul cu mdadm, m-am asigurat că i-am atribuit un nume, așa că acum este mapat sub /dev/md/data.,

în scopul de a crește coerența datelor, am nas rula un script care scrubs RAID de date. Acesta este un proces de lungă durată, I/o intensiv și zgomotos, care menține discurile ocupate și ar trebui probabil să fie executat atunci când NAS nu este necesar; pentru un NAS acasă care este în timpul săptămânii în timpul orelor de program. Cron e prietenul tău.

o notă despre partiționare: puteți utiliza dispozitive raw (/dev /sdb,/dev / sdc…) fără partiții, dar nu este recomandat., Având partiții (cu etichete, cum ar fi RAID_1) asigură, în caz de o reconstrui sau disc de swap drive-ul nu e instalat din greșeală într-un alt calculator, iar datele nu este suprascris (o nepartiționat mașina va apărea întotdeauna să nu conțin date și, astfel, „în siguranță” pentru formatare).

criptare RAID

următorul pas este să configurați criptarea pentru RAID-ul de date. Am folosit dmcrypt LUKS pentru asta, stocând cheia pe un stick USB. Asigurați-vă că faceți backup atât pentru cheie, cât și pentru antetul LUKS, altfel datele nu vor fi accesibile în cazul unui antet corupt., Beneficiul criptării este că pot muta serverul fără teama de furt de date, atâta timp cât RAID-ul criptat și cheia sunt transportate pe diferite rute.,

datele criptate RAID este un dispozitiv bloc mapate la /dev/mapper/date

sistemul De fișiere

fișierul de sistem de alegere este ext4 cu câteva trucuri:

mkfs.ext4 -O metadata_csum -E lazy_itable_init=0,lazy_journal_init=0 /dev/mapper/data 

Aceste opțiuni permit metadate checksumming care crește coerența datelor și dezactiva leneș inițializare; acesta din urmă este deosebit de important pentru o gamă largă de mecanic cu discuri, ca inițializarea inode va dura mai multe zile, în caz contrar.

în spiritul modularizării, RAID-ul de date nu este montat în/etc / fstab, ci este montat cu un script și mdadm în timpul pornirii., Scenariul se montează, de asemenea, datele RAID de fișiere de sistem cu noatime, nodiratime și date=opțiuni de jurnal, ruleaza fsck înainte de montare se, reglează stripe_cache_size și trucuri de gestionare a energiei.de asemenea, rețineți că pentru sistemele de fișiere ext4 Mari, primul acces de scriere poate dura foarte mult – deci verificați această soluție.

stocul Proliant Celeron CPU a devenit un blocaj cu dmcrypt, deoarece nu are criptare asistată hardware, dar un upgrade ieftin la un Xeon E3-1220L pentru același soclu a rezolvat că, în timp ce înjumătățirea TDP la 17 Watt.,

actualizare septembrie 2020: nu-mi amintesc dacă acest lucru a fost întotdeauna cazul sau a început să apară după o actualizare, dar hard disk-urile RAID de date nu se vor roti niciodată, chiar dacă sunt inactive. Motivul este protecția multi mount ext4 care scrie constant în sistemul de fișiere. Protecția multiplă de montare poate fi modificată sau dezactivată (asta am făcut) cu tune2fs.

mai multă siguranță a datelor!

în 2020 ext4 și md nu sunt, din păcate, încă capabile să contracareze eficient putregaiul de biți care corupe în tăcere fișierele., Aud și citesc mărturii contradictorii despre ZFS, care se presupune că gestionează mai bine corupția datelor și va încerca la un moment dat. Deocamdată, folosesc md5sum pentru a crea și verifica sumele de control ale copiei mele de rezervă .gudron.arhivele gz și parchive pentru a crea fișiere de recuperare a erorilor. Am mai scris despre parchive și am rămas până în ziua de azi un fan dedicat.

automatizare

am menționat „scripturi” amenințătoare aici și acolo, dar adevărul urât rămâne că configurarea curentă necesită o cantitate considerabilă de scripting pentru a rula fără probleme., În plus, cea mai mare parte a operațiunii de zi cu zi este acum scriptată și automatizată, nu necesită intervenție manuală: raidurile se asamblează singure, sunt tolerante la erori și serverul funcționează chiar și atunci când unul sau două hard disk-uri se descompun. Backup-urile sunt arhivate și checksummed automat și o verificare periodică alerte despre fișierele corupte pe care apoi le-am manual (îmi place să fiu implicat în aceste lucruri…) corect. Unele dintre scripturile serverului sunt disponibile în depozitul meu github, mai multe vor urma în curând.,

Rețea

server utilizează următoarele componente de rețea:

  • netplan pentru gestionarea două la bord ethernet carduri (vezi instalare)
  • UFW pentru a bloca tot traficul de intrare dar SSH, samba și netbios
  • netbios să anunțe numele serverului la router acasă și alte computere
  • samba pentru a partaja fișiere în rețea locală

eu sunt, folosind samba într-un mod read-only; câteva directoare (cum ar fi muzică și filme) sunt partajate cu accesul clienților, alte câteva directoare cu documente personale sunt protejate cu parola, dar, din nou, doar în citire., Orice operațiuni de scriere în sistemul de fișiere de date necesită acces SSH. Deoarece ext4 nu oferă instantanee, sunt încă îngrijorat de faptul că după miezul nopții „ștergeți din greșeală” după câteva băuturi; nu am găsit încă o soluție bună pentru asta. Navigarea acțiunilor samba în Ubuntu nautilus poate fi lentă pentru directoarele mari – dacă devine prea mult de gestionat, luați în considerare utilizarea CIFS sau sshfs.,

Video & Grafică

nu am crezut niciodată că aș avea nevoie de asta, dar în sfârșit a venit ziua în care am nevoie pentru a conecta fizic un ecran și o tastatură la gen8 – și nu a putut obține un mediu desktop care rulează. Gen8 are o placă grafică Matrox g200 pentru care Ubuntu a renunțat la suport cu mult timp în urmă, dar există o modalitate de a scoate unele grafice din ea.

primul pas: instalați suportul desktop pe mediul serverului:

apt install ubuntu-desktop

după repornire, veți observa un ecran de conectare de 640×480. Nu există alte moduri disponibile în setările afișajului., Acest comentariu la o problemă conexă a ajutat:

# Install vesa xserver. Was not needed in my case.apt-get install xserver-xorg-video-vesa # Boot into text modeinit 3 # Create new X-server configurationX -configure # Install configuration. The original post says to replace mga with vesa; in my case, vesa was already pre-filled.mv xorg.conf.new /etc/X11/xorg.conf# Boot into graphicsinit 5

avertisment corect: accelerația grafică nu este disponibilă, iar rezoluția maximă este 1280×1024.

fapt amuzant pe care l-am aflat în timp ce cercetam: gen8 are un conector DisplayPort non-standard în partea din față din spatele ușii.

Author: admin

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *