Olcsó Linux otthoni NAS rendszer készítése

Olcsó Linux otthoni NAS rendszer készítése

Sok más MacBook Pro felhasználóhoz hasonlóan én is szembesültem az elégtelen belső memória problémájával. Pontosabban, az általam naponta használt rMBP mindössze 256 GB kapacitású SSD-vel volt felszerelve, ami természetesen sokáig nem volt elég.

És amikor minden más mellett elkezdtem videózni a repüléseim során, a helyzet csak romlott. Az ilyen repülések után felvett felvételek mennyisége 50+ GB volt, és a szegényes 256 GB-os SSD-m nagyon hamar betelt, így kénytelen voltam egy külső 1 TB-os meghajtót vásárolni. Egy év után azonban már nem tudta kezelni az általam generált adatmennyiséget, nem beszélve a redundancia és a biztonsági mentés hiánya miatt, ami alkalmatlanná tette fontos információk tárolására.

Tehát egy ponton úgy döntöttem, hogy egy nagy NAS-t építek, abban a reményben, hogy ez a rendszer legalább néhány évig kitart anélkül, hogy újabb frissítésre lenne szüksége.

Ezt a cikket elsősorban azért írtam, hogy emlékeztessem arra, hogy pontosan mit és hogyan csináltam, arra az esetre, ha újra meg kell tennem. Remélem, neked is hasznos lesz, ha te is így döntesz.

Talán könnyebb vásárolni?

Tehát tudjuk, mit akarunk elérni, a kérdés továbbra is fennáll: hogyan?

Először a kereskedelmi megoldásokat néztem meg, és különös tekintettel a Synologyra, amely a piacon a legjobb fogyasztói szintű NAS rendszereket hivatott biztosítani. Ennek a szolgáltatásnak a költsége azonban meglehetősen magasnak bizonyult. A legolcsóbb 4-rekeszes rendszer 300 dollár feletti ára, és nem tartalmaz merevlemezeket. Ezenkívül maga az ilyen készlet belső kitöltése nem különösebben lenyűgöző, ami megkérdőjelezi valós teljesítményét.

Aztán arra gondoltam: miért nem építek magamnak NAS szervert?

Megfelelő szerver keresése

Ha ilyen szervert szeretne összeállítani, akkor először meg kell találnia a megfelelő hardvert. Egy használt szervernek megfelelőnek kell lennie ehhez a felépítéshez, mivel a tárolási feladatokhoz nem lesz szükségünk nagy teljesítményre. A szükséges dolgok között meg kell említeni a nagy mennyiségű RAM-ot, több SATA csatlakozót és a jó hálózati kártyákat. Mivel a szerverem az állandó lakhelyemen fog működni, a zajszint is számít.

Elkezdtem a keresést az eBay-en. Habár rengeteg használt Dell PowerEdge R410/R210-et találtam ott 100 dollár alatt, kiszolgálóhelyiségben való munkavégzés tapasztalatával tudtam, hogy ezek az 1U egységek túl sok zajt adnak, és otthoni használatra nem alkalmasak. Általános szabály, hogy a toronyszerverek gyakran kevésbé zajosak, de sajnos kevés volt belőlük az eBay-en, és mindegyik vagy drága, vagy alulteljesített.

A következő hely a Craiglist volt, ahol találtam valakit, aki használt HP ProLiant N40L-t árul mindössze 75 dollárért! Ismertem ezeket a szervereket, amelyek általában 300 dollárba kerülnek még használtan is, ezért e-mailt küldtem az eladónak abban a reményben, hogy a hirdetés még mindig aktív. Miután megtudtam, hogy ez a helyzet, kétszeri gondolkodás nélkül elindultam San Mateóba, hogy felvegyem ezt a szervert, ami első pillantásra határozottan tetszett. Minimális kopás volt, és egy kis portól eltekintve minden más remek volt.

Olcsó Linux otthoni NAS rendszer készítése
Fotó a szerverről, közvetlenül a vásárlás után

Itt vannak a vásárolt készlet specifikációi:

  • CPU: AMD Turion(tm) II Neo N40L kétmagos processzor (64 bites)
  • RAM: 8 GB nem ECC RAM (az előző tulajdonos telepítette)
  • Vaku: 4 GB USB meghajtó
  • SATA csatlakozók:4+1
  • NIC: 1 Gbps beépített NIC

Mondanom sem kell, annak ellenére, hogy több éves, ennek a szervernek a specifikációi még mindig felülmúlják a legtöbb NAS opciót a piacon, különösen ami a RAM-ot illeti. Kicsit később még 16 GB-os ECC-re is frissítettem, megnövelt puffermérettel és fokozott adatvédelemmel.

Merevlemezek kiválasztása

Most egy kiválóan működő rendszerünk van, és már csak merevlemezeket kell kiválasztani hozzá. Nyilván ezért a 75 dollárért csak magát a szervert kaptam meg HDD nélkül, ami nem lepett meg.

Egy kis kutatás után rájöttem, hogy a WD Red HDD-k a legalkalmasabbak a NAS-rendszerek 24/7-es futtatására. Megvásárlásukhoz az Amazonhoz fordultam, ahol 4 darab 3 TB-os példányt vásároltam. Alapvetően bármilyen HDD-t csatlakoztathat, de ügyeljen arra, hogy azok kapacitása és sebessége azonos legyen. Ez segít elkerülni az esetleges RAID teljesítményproblémákat hosszú távon.

Rendszer telepítés

Úgy gondolom, hogy sokan fogják használni a rendszert a NAS-építéseikhez FreeNAS, és nincs ezzel semmi baj. Hiába telepíthetem ezt a rendszert a szerveremre, én inkább a CentOS-t választottam, mivel a ZFS on Linux rendszer kezdetben éles környezetre készült, és általában a Linux szerver kezelése ismerősebb számomra. Emellett nem érdekelt a FreeNAS által nyújtott díszes felület és funkciók – nekem elég volt a RAIDZ tömb és az AFP megosztás.

A CentOS USB-re történő telepítése meglehetősen egyszerű – csak adja meg az USB-t rendszerindítási forrásként, és indításkor a telepítővarázsló végigvezeti Önt annak minden szakaszán.

RAID felépítés

A CentOS sikeres telepítése után a felsoroltak szerint telepítettem a ZFS-t Linuxra is lépések ide.

Miután ez a folyamat befejeződött, betöltöttem a ZFS Kernel modult:

$ sudo modprobe zfs

És létrehozta a RAIDZ1 tömböt a paranccsal 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érjük, vegye figyelembe, hogy itt a merevlemezek azonosítóit használom a megjelenített nevek helyett (sdx).

Hozzáadtam egy külön SSD-n futó ZIL-t és L2ARC gyorsítótárat is, az SSD-t két partícióra osztottam: 5 GB a ZIL-hez, a többi pedig L2ARC-hez.

Ami a RAIDZ1-et illeti, 1 lemezhibát is kibír. Sokan azzal érvelnek, hogy ezt a készletbeállítást nem szabad használni, mert fennáll a valószínűsége annak, hogy a második lemez meghibásodik a RAID újraépítése során, ami adatvesztéshez vezethet. Ezt az ajánlást figyelmen kívül hagytam, mivel a fontos adatokról rendszeresen biztonsági másolatot készítettem egy távoli eszközön, és akár a teljes tömb meghibásodása csak az adatok elérhetőségét befolyásolhatja, biztonságát azonban nem. Ha nem tud biztonsági másolatot készíteni, akkor jobb, ha olyan megoldásokat használ, mint a RAIDZ2 vagy RAID10.

A következő futtatásával ellenőrizheti, hogy a készlet létrehozása sikeres volt-e:

$ sudo zpool status

и

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

Alapértelmezés szerint a ZFS közvetlenül csatolja az újonnan létrehozott készletet /, ami általában nem kívánatos. Ezt a következő futtatással módosíthatja:

zfs set mountpoint=/mnt/data data

Innen kiválaszthatja, hogy egy vagy több adatkészletet hozzon létre az adatok tárolására. Létrehoztam kettőt, egyet a Time Machine biztonsági mentéséhez, egyet pedig a megosztott fájltároláshoz. A Time Machine adatkészlet méretét 512 GB-os kvótára korlátoztam, hogy megakadályozzam 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és támogatását. A tömörítés minimális CPU-teljesítményt használ, de jelentősen javíthatja az I/O átviteli sebességet, ezért mindig ajánlott.

zfs set relatime=on data

Ezzel a paranccsal csökkentjük a frissítések számát atimehogy csökkentse az IOPS-generációt a fájlok elérésekor.

Alapértelmezés szerint a Linuxon futó ZFS a fizikai memória 50%-át használja az ARC számára. Az én esetemben, amikor a fájlok teljes száma kicsi, ez biztonságosan 90%-ra növelhető, mivel más alkalmazás nem fog futni a szerveren.

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

Aztán használva arc_summary.py Ellenőrizheti, hogy a változtatások életbe léptek-e:

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

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

használtam systemd-zpool-scrub a rendszeridőzítők konfigurálásához hetente egyszer végezzen tisztítást, és zfs-auto-snapshot hogy 15 percenként, 1 óránként és 1 naponként automatikusan hozzon létre pillanatfelvételeket.

A Netatalk telepítése

nettalk az AFP nyílt forráskódú implementációja (Apple Fileing Protocol). Következő hivatalos telepítési útmutató a CentO-hozS, szó szerint néhány perc alatt megkaptam az összeállított és telepített RPM-csomagot.

Konfiguráció beállítása

$ 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

Kérjük, vegye figyelembe, hogy a vol dbnest Jelentős előrelépés az esetemben, mivel a Netatalk alapértelmezés szerint a CNID adatbázist a fájlrendszer gyökerébe írja, ami egyáltalán nem volt kívánatos, mivel a fő fájlrendszerem USB-n fut, és ezért viszonylag lassú. Bekapcsolni vol dbnest azt eredményezi, hogy az adatbázist a Volume gyökérbe mentjük, ami jelen esetben a ZFS-készlethez tartozik, és már egy nagyságrenddel produktívabb.

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-port=afpovertcp/tcp
Ha minden helyesen volt beállítva, akkor a gépednek meg kell jelennie a Finderben, és a Time Machine-nek is működnie kell.

További beállítások
SMART felügyelet

Javasoljuk, hogy figyelje a lemezek állapotát a lemezhibák elkerülése érdekében.

$ sudo yum install smartmontools
$ sudo systemctl start smartd

Démon UPS-hez

Figyeli az APC UPS töltöttségét, és kikapcsolja a rendszert, ha a töltés kritikusan alacsony lesz.

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

Hardver frissítés

Egy héttel a rendszer beállítása után egyre jobban aggódtam a szerver nem ECC memóriája miatt. Ezenkívül a ZFS esetében nagyon hasznos lesz a puffereléshez szükséges kiegészítő memória. Így hát visszamentem az Amazonhoz, ahol 2x Kingston DDR3 8GB ECC RAM-ot vásároltam darabonként 80 dollárért, és kicseréltem az előző tulajdonos által telepített asztali RAM-ot. A rendszer először minden probléma nélkül elindult, és megbizonyosodtam arról, hogy az ECC támogatás aktiválva van:

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

Eredmény

Nagyon elégedett voltam az eredménnyel. Mostantól a szerver 1Gbps LAN kapcsolatát folyamatosan lefoglalhatom fájlok másolásával, a Time Machine pedig hibátlanul működik. Szóval összességében elégedett vagyok a beállítással.

A teljes költség:

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

Összességében = $ 689

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

Csinálsz saját NAS szervereket?

Olcsó Linux otthoni NAS rendszer készítése

Olcsó Linux otthoni NAS rendszer készítése

Forrás: will.com

Hozzászólás