Olcsó otthoni NAS rendszer összeállítása Linux alatt

Olcsó otthoni NAS rendszer összeállítása Linux alatt

Én, akárcsak sok más MacBook Pro felhasználó, szembesültem a belső memória hiányával. Pontosabban, az általam naponta használt rMBP csak 256 GB-os SSD-vel volt felszerelve, ami természetesen nem volt elegendő hosszú távon.

Amikor ráadásul elkezdtem videókat rögzíteni a repüléseim közben, a helyzet csak súlyosbodott. Az ilyen repülések során felvett anyag mennyisége több mint 50 GB volt, és a szerencsétlen 256 GB-os SSD-m nagyon gyorsan megtelt, arra kényszerítve, hogy vásároljak egy 1 TB-os külső meghajtót. Ennek ellenére egy év elteltével ez sem tudta kezelni az általam generált adatmennyiséget, nem is beszélve arról, hogy a redundancia és a biztonsági mentés hiánya miatt nem volt alkalmas fontos információk tárolására.

Tehát egy pillanatban úgy döntöttem, hogy egy nagy kapacitású NAS-t állítok össze, abban a reményben, hogy ez a rendszer legalább néhány évig el fog tartani anélkül, hogy szükség lenne újabb frissítésre.

Ezt a cikket elsősorban emlékeztetőként írtam arra, hogy mit és hogyan csináltam, hátha szükségem lesz rá újból. Remélem, hogy neked is hasznos lesz, ha úgy döntesz, hogy ugyanazt csinálod.

Talán egyszerűbb lenne megvásárolni?

Tehát tudjuk, mit szeretnénk, a kérdés csak az, hogy hogyan?

Először megismerkedtem a kereskedelmi megoldásokkal, és különösen a Synology céget mérlegeltem, amelyről úgy gondolták, hogy a legjobb fogyasztói szintű NAS rendszereket kínálja a piacon. Azonban a szolgáltatás költsége elég magasnak bizonyult. A legolcsóbb 4 rekeszes rendszer több mint 300 dollárba kerül, és ehhez a merevlemezek nem tartoznak. Ezen kívül magának a csomagnak az alapja sem különösebben lenyűgöző, ami megkérdőjelezi a valódi teljesítményét.

Akkor gondoltam: miért ne építenék magam egy NAS szervert?

Megfelelő szerver keresése

Ha ilyen szervert szeretnél összeállítani, először is meg kell találni a megfelelő hardvert. Ehhez az összeállításhoz egy használt szerver teljesen megfelel, mivel tárolási feladatokhoz nem szükséges különös teljesítmény. A szükségesek közül meg kell említeni egy nagy mennyiségű RAM-ot, több SATA csatlakozót és jó hálózati kártyákat. Mivel a szerverem a tartózkodási helyemen fog működni, a zajszint is fontos szempont.

A keresésemet az eBay-en kezdtem. Bár sok használt Dell PowerEdge R410/R210-t találtam 100 dollár alatt, a szerverteremben szerzett tapasztalatom alapján tudtam, hogy ezek a 1U-s egységek túl hangosak, és otthoni használatra nem alkalmasak. Általában a torony formátumú szerverek csendesebbek, de sajnos az eBay-en csak néhány volt elérhető, és mind drága vagy gyenge teljesítményű volt.

A következő hely, ahol keresni kezdtem, a Craigslist volt, ahol találtam egy embert, aki használt HP ProLiant N40L-t árult mindössze 75 dollárért! Ismertem ezeket a szervereket, amelyek még használt állapotban is általában 300 dollár körüli áron mozognak, így írtam az eladónak, remélve, hogy a hirdetés még aktuális. Miután megtudtam, hogy igen, azonnal San Mateo felé vettem az irányt, hogy átvegyem ezt a szervert, amely már az első pillantásra is nagyon tetszett. Minimális kopás jelei voltak rajta, és a pici porrétegen kívül minden más tiszta volt.

Olcsó otthoni NAS rendszer összeállítása Linux alatt
A szerver fotója, közvetlenül a vásárlás után

Itt van az általam megvásárolt készlet specifikációja:

  • CPU: AMD Turion(tm) II Neo N40L Dual-Core Processzor (64-bit)
  • RAM: 8 GB non-ECC RAM (a korábbi tulajdonostól telepítve)
  • Flash: 4 GB USB Meghajtó
  • SATA csatlakozók: 4 + 1
  • NIC: 1 Gbps beépített NIC

Nem is kell mondani, hogy a néhány éves kor ellenére ennek a szervernek a specifikációja még mindig felülmúlja a piacon elérhető NAS rendszerek többségét, különösen a RAM mennyiségét tekintve. Kicsit később 16 GB ECC-ra frissítettem, megnövelt pufferrel és fokozott adatvédelmi védelemmel.

Merevlemezek kiválasztása

Most, hogy van egy kiválóan működő rendszerünk, hátra van még a merevlemezek kiválasztása. Nyilvánvaló, hogy azokért a 75 dollárért csak magát a szervert kaptam HDD-k nélkül, ami nem lepett meg.

Kis kutatást végezve kiderítettem, hogy a NAS rendszerek 24/7 üzemeltetéséhez a legjobban a HDD WD Red modellek felelnek meg. Ezek megvásárlására az Amazonhoz fordultam, ahol 4 darabot vásároltam 3 TB-os kapacitással. Alapvetően bármilyen preferált HDD-t csatlakoztathat, de ügyeljen arra, hogy azok azonos kapacitásúak és sebességűek legyenek. Ez segít elkerülni a jövőbeli RAID teljesítményproblémáit.

A rendszer beállítása

Gondolom, sokan a saját NAS konfigurációjukhoz használnak majd rendszert. FreeNAS, és ebben nincs semmi rossz. Azonban, bár lehetőség van ennek a rendszernek a telepítésére a saját szerveremen, én inkább a CentOS-t választottam, mivel a ZFS on Linux rendszer kezdetben produkciós környezetre lett felkészítve, és a Linux kiszolgáló kezelésében jobban otthon vagyok. Ráadásul nem érdekelt a FreeNAS divatos felülete és funkciói – nekem elegendő volt a RAIDZ tömb és az AFP megosztás.

A CentOS telepítése USB-re elég egyszerű – csak meg kell adni az USB-t mint bootforrást, és a telepítővarázsló végigvezet minden lépésen.

RAID tömb készítése

A CentOS sikeres telepítése után a ZFS on Linux-t is telepítettem az itt felsorolt lépések szerint.

A folyamat befejeztével betöltöttem a ZFS kernel modult:

$ sudo modprobe zfs

És RAIDZ1 tömböt hoztam létre a következő parancs segítségével 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

Kérlek, vedd észre, hogy itt a merevlemezek azonosítóját használom a megjelenített nevük helyett (sdx), hogy csökkentsem az esélyét annak, hogy a betöltés után a betűjelzések megváltozása miatt ne legyenek csatlakoztatva.

A ZIL-t és az L2ARC cache-t is hozzáadtam, külön SSD-n futva, amelyet két partícióra osztottam: 5 GB ZIL-nek és a fennmaradó rész L2ARC-nek.

A RAIDZ1 esetében képes elviselni 1 lemez meghibásodását. Sokan azt állítják, hogy ezt a poolt nem szabad használni, mivel a RAID újragyártása során második lemez meghibásodásának valószínűsége fennáll, amely adatvesztést okozhat. Én ennek a javaslatnak figyelmen kívül hagytam, mivel rendszeresen készítettem biztonsági másolatokat fontos adataimról egy távoli eszközre, és az egész tömb meghibásodása csak az adatok elérhetőségére hat, nem pedig a megőrzésükre. Ha nincs lehetőséged biztonsági másolatot készíteni, akkor jobb megoldás lehet RAIDZ2 vagy RAID10 alkalmazása.

A pool létrehozásának sikerességét ellenőrizheted az alábbi paranccsal:

$ sudo zpool status

és

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

Alapértelmezés szerint a ZFS közvetlenül a frissen létrehozott pool-t a következő helyen csatolja /, ami jellemzően nem kívánatos. Ezt megváltoztathatod az alábbi parancs végrehajtásával:

zfs set mountpoint=/mnt/data data

Itt kiválaszthatja, hogy egy vagy több adathalmazon szeretne tárolni adatokat. Készítettem kettőt, az egyiket a Time Machine biztonsági másolatához, a másikat pedig a fájlok közös tárolásához. A Time Machine adathalmaz méretét 512 GB-ra korlátoztam, hogy megelőzzem a végtelen növekedést.

Optimalizálás

zfs set compression=on data

Ez a parancs engedélyezi a ZFS tömörítési támogatását. A tömörítés minimális CPU-erőt használ, de jelentősen javíthatja a I/O sebességet, ezért mindig ajánlott a használata.

zfs set relatime=on data

Ezzel a parancsal csökkentjük a frissítések számát a atime, hogy csökkentsük az IOPS generálását a fájlok elérésénél.

Alapértelmezés szerint a ZFS on Linux a fizikai memória 50%-át használja az ARC-hez. Az én esetemben, amikor a fájlok összes száma csekély, ezt a mennyiséget biztonságosan 90%-ra növelhetjük, mivel a szerveren más alkalmazások nem fognak futni.

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

Ezután a arc_summary.py segítségével megbizonyosodhatunk arról, hogy a változások érvénybe léptek:

$ python arc_summary.py
...
ARC Méret:				100.05%	11.55	GiB
	Cél Méret: (Adaptív)		100.00%	11.54	GiB
	Min Méret (Kemény Határ):		0.27%	32.00	MiB
	Max Méret (Magas Vízállás):		369:1	11.54	GiB
...

Ismétlődő feladatok beállítása

Használom systemd-zpool-scrub a systemd időzítők beállításához, hogy heti rendszerességgel tisztítást végezzenek, valamint zfs-auto-snapshot automatikus állapotfelvételek készítéséhez 15 percenként, 1 óránként és 1 naponként.

Netatalk telepítése

Netatalk az AFP (Apple Filing Protocol) nyílt megvalósítása. A CentOS telepítési utasításait követve pár perc alatt elkészítettem és telepítettem a RPM csomagot.A konfiguráció beállítása

$ cat /etc/netatalk/afp.conf [datong@Titan ~]$ cat /etc/netatalk/afp.conf ; ; Netatalk 3.x konfigurációs fájl ;[Global] ; Globális szerver beállítások 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

p(x) – az én esetemben jelentős javulást jelent, mivel a Netatalk alapértelmezés szerint a CNID adatbázist a fájlrendszer gyökerébe írja, ami teljesen nem kívánatos volt, mivel a fő fájlrendszerem USB-n fut, ami viszonylag lassan működik. Ennek a bekapcsolása az adatbázis mentésére a Volume gyökerében történik, amely ebben az esetben a ZFS medencéhez tartozik, és máris jelentősen gyorsabb. az én esetemben jelentős javulást jelent, mivel a Netatalk alapértelmezés szerint a CNID adatbázist a fájlrendszer gyökerébe írja, ami teljesen nem kívánatos volt, mivel a fő fájlrendszerem USB-n fut, ami viszonylag lassan működik. Ennek a bekapcsolása Portok engedélyezése a tűzfalban

$ 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-service=mdns
$ sudo firewall-cmd --permanent --zone=public --add-port=afpovertcp/tcp

sudo firewall-cmd —permanens —zóna=nyilvános —port hozzáadása=afpovertcp/tcp
Ha minden helyesen van beállítva, a gépnek meg kell jelennie a Finderben, és a Time Machine is működnie kell.

További beállítások
S.M.A.R.T megfigyelés

Ajánlott a lemezeid állapotának figyelemmel kísérése a meghibásodásuk megelőzése érdekében.

$ sudo yum install smartmontools
$ sudo systemctl start smartd

UPS démon

Figyeli az APC UPS töltöttségét, és leállítja a rendszert, amikor a töltöttség kritikusra csökken.

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

Hardveres frissítés

Egy héttel a rendszer beállítása után egyre inkább kezdtem aggódni amiatt, hogy a szerverbe nem ECC memóriát telepítettek. Ráadásul a ZFS esetében a plusz memória a pufferezéshez nagyon hasznos lesz. Ezért ismét az Amazonhoz fordultam, ahol vásároltam 2x Kingston DDR3 8GB ECC RAM-ot 80 dollárért darabonként, és kicseréltem a korábbi tulajdonos által telepített desktop RAM-ot. A rendszer elsőre probléma nélkül elindult, és megbizonyosodtam róla, hogy az ECC támogatás aktív:

$ dmesg | grep ECC
[   10.492367] EDAC amd64: DRAM ECC engedélyezve.

Eredmény

Az eredmény nagyon örvendetes volt számomra. Most folyamatosan használhatom a 1Gbps LAN kapcsolatot a szerver fájlok másolásával, és a Time Machine hibátlanul működik. Összességében elégedett vagyok a beállítással.

Végső költség:

  1. 1 * HP ProLiant N40L = 75 dollár
  2. 2 * 8 GB ECC RAM = 174 dollár
  3. 4 * WD Red 3 TB HDD = 440 dollár

Összesen = $689

Most már elmondhatom, hogy megérte az árát.

Ti magatok építetek NAS szervereket?

Olcsó otthoni NAS rendszer összeállítása Linux alatt

Olcsó otthoni NAS rendszer összeállítása Linux alatt

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster