Agaton.cz

Jako domácí úložiště jsem až donedávna a s velkou spokojeností používal Synology DS106e. Tento NAS je však pouze pro jeden disk a tak mi již přestal svou kapacitou stačit. Novější DS-209j sice umí dva disky, ale to je opět konečné řešení. A modely 407 nebo dokonce 509 jsou již mimo rozumné cenové hranice. Proto jsem se rozhodl si postavit vlastni NAS.

Hardware

S ohledem na spotřebu jsem chtěl původně tento NAS postavit na základní desce s procesorem Atom, ale při měření mi u desky Intel LittleFalls vyšla hodnota spotřeby skoro 40W. To se mi s ohledem na spotřebu vlastního procesoru Atom (dle specifikací cca 8W) zdálo moc. Hledáním na Googlu jsem zjistil, že u této desky použitý chipset si vezme sám o sobě cca 25W (taky na této desce je chladič s ventilátorkem právě na chipsetu, procesor je bez chladiče). Pro srovnání jsem ještě změřil spotřebu desky Intel LittleValey s procesorem Celeron a zde mi spotřeba vyšla cca 45W, ale s vyšším výpočetním výkonem. Dnes by se nejspíše dala použít nějaká deska s chipsetem ION od nVidie (navíc s novou, výkonnější řadou procesorů Atom), ale v té době byl i ten první Atom horkou novinkou. Měl jsem i možnost vyzkoušet 800MHz verzi desky s procesorem VIA, ale její rychlost byla přímo zoufalá.

V tu chvíli jsem obrátil pozornost k procesorům AMD - někde na internetu jsem totiž krátce před tím zahlédl článek o stavbě HTPC, kde autor udával hodnoty spotřeby u AMD nižší, než jsem naměřil u těch Intelů. V tom článku autor použil procesor s TDP 45W a navíc jej podtaktoval a snížil i napájecí napětí a prý se dostal na hodnotu okolo 30W. Při porovnání se spotřebou toho Synology asi 22W by to byla přijatelná hodnota.

Objednal jsem tedy stejnou desku, která byla popisována ve zmíněném článku (GigaByte GA-MA69GM), i stejný procesor (AMD Athlon x2 4850e 2,1GHz). Opravdu jsem s touto sestavou dosáhl v klidovém stavu nižší spotřebu, než u Atomu i Celeronu, ale na zmíněných 30W jsem se nedostal - ať jsem dělal, co jsem dělal, stále mi vycházelo cca 35W. Navíc rozdíl mezi "normálně pracujícím" a podtaktovaným procesorem se sníženým napájecím napětím byl asi 2,5W, tedy hodnota, která snad ani nestála za ten čas strávený se zkoušením té "správné" kombinace napětí a kmitočtu...

Koupí desky a procesoru již však bylo rozhodnuto a protože stejně nebyla jiná cesta, se spotřebou 37W jsem se smířil (to podtaktování jsem zavrhl a nechal procesor na správném kmitočtu). Navíc jsem měl takto v rezervě dostatečný výpočetní výkon pro případné další rozšíření. Je pravda, že při plném zatížení se spotřeba vyšplhá až někde k 65W, ale NAS je stejně po 99,9% doby v klidovém stavu a ve zbývajícím čase jede jen tak "na volnoběh", takže nakonec dle dlouhodobého sledování to i s disky nepřekročí 950-1000 Wh denně.

Díky použití plnohodnotné základní desky navíc odpadla nutnost přídavných karet (tato deska má již integrovanou 1Gbps síťovou kartu a 4x SATA), na druhou stranu je zde potřeba chladiče na CPU. Při prvotní montáži jsem použil boxovaný originální chladič s ventilátorem s tím, že tato část bude ještě časem "doladěna". Při použití jako NAS je v této konfiguraci chladič naprosto studený (29stupňů), dokonce s odpojeným ventilátorem (jen pasivní chlazení) teplota nepřekročila 40stupňů. Protože jsem však nenaměřil žádný rozdíl ve spotřebě s a bez ventilátoru (odhaduji spotřebu menší než 1/2 W) a s ohledem na to, že při testech byla skříň počítače otevřená, jsem se rozhodl nechat ventilátor zapnutý a chladič ten původní.

Protože jsem postupně do tohoto NASu doplňoval disky menších kapacit (co se kde sehnalo), brzy bylo to množství 4x SATA nedostatečné. A protože jsem měl k dispozici přídavný 4-portový SATA řadič (původně byl zakoupený k plánované desce s Atomem, která měla jen 2x SATA), použil jsem jej k rozšíření na současných 8x SATA. Bohužel jak dnes zjišťuji, BIOS tohoto přídavného řadiče neumí disky větší, než 750GB, takže zakoupením prvního 1TB disku jsem se "odsoudil" k nutnosti přemapování disků (/etc/fstab) a překonfigurování Samby tím, že jsem musel disky "posunout" a tento nový disk připojit na řadič na základní desce. Sice je k tomuto řadiči možné na stránkách SiliconImage (chip Sil3114) stáhnout nový BIOS, ale flešovací utilita se jaksi k tomuto řadiči nechce znát....

Protože cena 1TB disků už začíná být přijatelná, dokonce i v případě Samsung F2 je přijatelná i cena 1,5TB disku, rozhodl jsem se toto omezení řadičem odstranit. Ale protože cena nového (lepšího) řadiče, případně SATA-bridge 1-to-5 začíná někde na 1300,- Kč a za 2000,- už je možné sehnat novou desku GigaByte MA790X-UD3P, která už má přímo na sobě 8xSATA, odhodlal jsem se k nákupu této nové desky. Trošku mi na ni chybí intergrované VGA, protože přeci jen při nějakých problémech připojuji monitor. A přídavná VGA karta je jen zbytečný žrout energie.... Značku GigaByte jsem si dost oblíbil, jeví se mi jako výrobce jedněch z nejspolehlivějších desek (nakonec - používá je i Google :-).

Velký vliv na spotřebu energie má použitý zdroj. Zkoušel jsem různé zdroje a klidová spotřeba se je u některých zdrojů doslova neúnosná. A protože nemám možnost změřit účinnost zdroje, tak jsem vybíral jen ze zdrojů, u kterých výrobci sami udávají účinnost nad 80% a které mají aktivní PFC. Bohužel nejmenší takové zdroje, které jsou běžně k mání, jsou 350W. Při menším výkonu by byla při malé spotřebě větší účinnost, ale na druhou stranu je zde zase rezerva, která pokryje odběr při rozběhu všech disků, než se suspendují.

Software

Se změnou původního hardware přišla i změna SW. Prvotní idea byla umístění nějakého specializovaného SW do bootabilního CompactFlash adaptéru. Měl jsem vyhlédnuté dva kandidáty - FreeNAS na bázi FreeBSD a OpenFiler na bázi rPath-linuxu. Nejvíce se mi líbil ten FreeNAS - v jednoduchosti je krása. Pro instalaci mu stačí jen 64MB a z Compact Flash karty nabootoval doslova za pár vteřin. Jenomže jak došlo ke změně ve výběru hardware, tak mi bylo líto nevyužít výkonu toho procesoru AMD. Takže jsem se začal přiklánět k tomu OpenFileru. Jenomže v tu chvíli mě napadlo - na co vlastně potřebuji pro domácí NAS nějaké grafické rozhraní, když stejně jednorázově založím tři-čtyři uživatele, přidělím oprávnění a tím je vlastně hotovo. Takže jsem nainstaloval klasickou Fedoru, nakonfiguroval Sambu a jsem spokojen. Navíc dneska tento počítač využívám i jako testovací server, když si potřebuji něco vyzkoušet před instalací na firemní servery. A využívám i některých webových služeb - Roundcubemail, Mantis, dcery si na tom zkouší WWW-stránky (plnohodnotný LAMP) apod. Jediná nevýhoda tohoto řešení je to, že jsem tu Fedoru instaloval na pevný disk, takže se mi v tom NASu jeden disk stále točí, což malinko zvyšuje spotřebu. Ale není to zase tak strašné, abych se zabýval úpravou konfigurace pro možnost vypínání tohoto systémového disku (hodnota 1 hodiny mé práce je určitě vyšší, než cca roční spotřeba jednoho 320GB disku). Navíc i na tomto disku jsem definoval datovou oblast, do které jsem umístil často používaná data a mám k nim tak okamžitý přístup, bez nutnosti čekat, až se rozeběhne suspendovaný disk..... Do této oblasti mám namapovaný i adresář pro DreamBox DM500 - sem se instalují pluginy, které se nevejdou do interní flash-paměti.

Pro dlouhodobé sledování stavu disků jsem jeden čas používal Cacti, které odečítalo a vynášelo do grafů jak teplotu (a vytížení) CPU, tak i teplotu a využití kapacity všech disků. Jenomže příkaz smartctl, který se o odečítání teploty staral, vždy probudil suspendovaný disk. Takže jsem sledování teploty vypnul.

Provedení

Zde je pár fotek mého domácího NASu. Je zde vidět kompletně přepracovaná klec na disky (použil jsem ten nejlevnější case, u kterého mi nebylo líto rázných demoličních zásahů). Nová klec je realizována z 5mm tlustého a 8cm širokého hliníkového profilu, který rozvádí teplo z právě běžících disků i na ostatní suspendované, takže běžící disky jsou tímto chlazené a ty ostatní jsou "předehřívané" - po jejich spuštění nejsou zatěžovány velkými teplotními rozdíly. A i v uzavřeném case stačí základní pohyb vzduchu od ventilátoru ve zdroji k udržení teploty na maximální hodnotě 37st na běžícím disku (dle smartctl). Jediný "tepelný šok" je po rebootu počítače, kdy se rozeběhnou všechny disky - než je hdparm "uspí".

Pořizovací náklady

Základní deska GigaByte GA-MA69             987,- Kč
Procesor AMD Athlon X2 4850e               1240,- Kč
Paměť 2GB                                   843,- Kč
Case                                        622,- Kč
Zdroj                                       618,- Kč
Přídavný řadič 4x SATA PCI $21 - cca              320,- Kč

Celkové náklady tedy tenkrát činily cca 4630,- Kč (včetně DPH). Což je dokonce mírně levnější, než stála Synology DS-207. V ceně nejsou započteny rozdvojky napájení a napájecí redukce na SATA disky (desetikorunové záležitosti), protože jejich počet a kombinace je závislá na počtu osazených disků, a hliníkový materiál nové klece na disky (uříznuto z metráže, cca 50,-).

Dnes bych to řešil s jinými komponenty, už třeba z důvodu, že procesory AMD řady 40xxe se již nevyrábějí, dnes je možné již koupit základní desky už přímo osazené 8x SATA bez nutnosti přídavného řadiče apod. Zde je příklad, jak bych to řešil dnes (novou základní desku s tohoto seznamu již mám i koupenou). Procesory s TDP 45W již se dělají pouze jako Semprony s jedním jádrem, ale přímo od výrobce dodávaný boxovaný chladič je tak subtilní, že tyto procesory nemohou vydávat moc tepla - logicky méně tepla - menší spotřeba.

Základní deska GigaByte MA790X-UD3P             2124,- Kč
Procesor AMD Sempron 140 (2,7GHz)               775,- Kč
Paměť 2GB DDR2 GoodRam kit                   1069,- Kč
Case Fractal Design Define R2                    2328,- Kč
Zdroj 380W Seasonic S12II 80Plus  Bronze          1288,- Kč
Redukce CF-IDE do slotu.                       230,- Kč
CompactFlash 8GB  133x Transcend.               599,- Kč
Rámeček ICY BOX IB-168SK-B 16800, 2ks         1520,- Kč
Přídavný řadič 2xSATA PCI-e.       $22 - cca    396,- Kč

Tato kombinace by vyšla dražší, cca 10.350,- Kč, zato už ve velice komfortním provedení, až pro 10 disků, z toho dva ve hot-swap rámečcích, s bootováním z CompactFlash. Ale i tak cena vychází nižší, než komerční výrobky, které navíc podporují jen 4 nebo 5 disků. Například ve své době nejlevnější Intel SS-4000 Baxter Creek podporoval 5 disků za cenu okolo 14.000,- a jeho spotřeba je jen o malinko nižší, než u této popisované konfigurace. V nedávné době jsem pro jednoho zákazníka konfiguroval velice podobnou sestavu (pouze jiný case, bez přídavného řadiče a jen s jedním rámečkem).

Instalace

Na tomto NASu je v podstatě jen základní instalace linuxu + zprovozněná Samba. Mohou zde být spuštěny i další služby (např. kompletní LAMP pro přípravu webových stránek před umístěním na finální server), phpSysInfo, Cacti apod., ale nejsou nezbytné. Důležité je správné nastavení firewallu a použití jen privátních IP adres bez nastavení "default gateway" v případě, že domácí síť je trvale připojena k internetu. To trošku omezuje údržbu systému pomocí "yum upgrade", ale na druhou stranu, pokud není systém z internetu dostupný, není potřeba jej udržovat stále aktuální. Druhá možnost je zpřístupnit internet jen po dobu nezbytných aktualizací a hned po té jej opět zabezpečit. Není důvod mít NAS veřejně připojen k internetu, když se jedná jen o domácí úložiště. A pokud je zapotřebí mít přístup z jiného pracoviště, je to možné řešit portforwardingem na nadřazeném routeru + třeba port-knocking pro dočasné otevření přístupu.

Pokud se do NASu přidávají disky postupně, muže se stát, že si linux disky "posune" (z sdc je pak například sdd apod.). Pak vznikají problémy s mapováním disků pomocí mount, je potřeba překofigurovávat /etc/fstab.... Pokud se používají jen disky s ext fs lze problémy s mapováním obejít pomocí labelu. Každý disk si pomocí příkazu e2label pojmenujeme (např.:  e2label /dev/sdf Disk6 ) a v souboru /etc/fstab se potom disky montují právě pomocí labelu:

LABEL=Disk6   /mnt/mountpoint  ext3  defaults  0 0

Problém je, pokud se používají i disky s FAT nebo NTFS (ty label neumí). Pak je potřeba si ohlídat, jaké mu systém přiřadí označení... Navíc se může stát, že disk vložený za chodu počítače do rámečku (dostane přiřazeno první volné písmeno) bude mít po restartu počítače přiřazeno označení jiné....

Ještě poznámka k hotswap rámečkům - ne vždy je hotswap podporován řadičem na základní desce. Například na zmíněné desce GigaByte MA790X-UD3P jsou celkem dva řadiče. Jeden, ten základní, umí až 6 disků, ale neumí právě hotswap. Takže pokud se použije hotswapový rámeček, musí se připojit na druhý, přídavný dvou-portový řadič (fialové konektory).

Inicializace disku

Každý nově přidaný disk je zapotřebí nejprve inicializovat (fdisk) a naformátovat ( mkfs.ext3 /dev/sdX ). Poté je možné zvětšit využitelnou kapacitu disku odstraněním rezervy pro root-a ( tune2fs -m 0 /dev/sdX ) a pomocí e2label jej pojmenovat ( e2label /dev/sdX NovyLabel ). Aby se ve sdílení neobjevoval adresář lost+found, je možné v hlavním adresáři disku vytvořit pracovné adresář (například "data") a v kofiguraci Samby potom nepřiřazovat celý disk, ale jen tento adresář. Také je vhodné pomocí smartctl povolit na disku S.M.A.R.T (pokud je diasblován), případně i povolit autosave logů. Monitoring disků pomocí smrtd/smartctl však ještě nemám dořešen, protože při povolení selftestu se mi každé 4 hodiny probouzejí suspendované disky - já bych však chtěl, aby se selftest prováděl jen v případě, že jsou disky aktivní. Pokud někdo zkušenější bude vědět jak na to, přivítám jeho radu.... To probouzení selftestem se mi nelíbí, proto jej mám nyní vypnutý a kontrolu disků provádí ručně "když si vzpomenu"....

Uspávání disků mám nastaveno na 10 minut příkazem  hdparm -S 120 /dev/sdX  umístěným (vicenásobně - pro každý disk) v souboru /etc/rc.d/rc.local  (za parametr -S lze zadat libovolné číslo 1 - 240 - jsou to 5-vteřinové násobky, takže je uspávání možné řídit v rozpětí 5s až 20 minut. Čísla větší než 241 jsou rezervované hodnoty pro větší časy).

 

Konfigurace Samby je pak jen ta nejzákladnější, v podstatě se jen upraví vzorový konfigurační soubor

guest ok = No
create mask = 0660
username map = /etc/samba/smbusers
encrypt passwords = yes
hosts allow = 192.168.1.0/24 10.20.30.40/27 localhost
netbios name = mujNAS
writeable = no
server string = mujNAS
unix password sync = yes
workgroup = MOJESKUPINA
os level = 200
directory mask = 0770
valid users = @users
preferred master = Yes

[Dokumenty]
comment = Dokumenty
path = /mnt/Dokumenty/data
valid users = @users
force group = users
write list = user1 user2 user3

[Filmy]
comment = Filmy
path = /mnt/Filmy/data
valid users = @users
force group = users
write list = user1

[WWW]
comment = WWW-Stranky
path = /var/www/html/
create mask = 0664
valid users = user2
write list = user2

[DreamBox]
comment = Uloziste pro DM500
path = /home/DreamBox
valid users = @users
force group = users
write list = dream

......

Pokud se požaduje webová správa, je možné nainstalovat buď swat (součást Samby), nebo webmin. Já však ani jedno webové rozhraní nepoužívám, je pro mně mnohem rychlejší si změnit potřebné konfigurace z příkazového řádku....

Jo, a ještě jedna drobnost - pokud se bootování systému provádí z CompactFlash, je dobré přesunout adresář /home na některý s disků a na CF míst něj dát jenom link. Systém se sice vejde do necelých 4 GB, ale i když se použije 8GB flash, jsou přeci jen 4GB volného prostoru pro /home málo. Další úpravou je omezení logů jen na ty nejdůležitější - buď úpravou kofigurací jednotlivých programů, úpravou rsyslog.conf nebo přesměrováním do /dev/null. Také je řešením ukládat logy na disk, ale ten potom nebude mít možnost přejít do spánku. To omezení logů je vhodné nejen pro omezenou kapacitu CompactFlash, ale i pro omezený počet zápisů do flash. A při použití CF je také důežitý dostatek RAM, protože na CF není vhodné zakládat swap.

Bezpečnost

Na firewallu se povolí pouze port 22/TCP a 137-139/TCP+UDP pro lokální adresy (dálkový přístup pro SSH + NetBIOS), případně i port 80/TCP, pokud na NASu běží nějaké webové služby. IP adresu nastavíme jen privátní, s odlišného rozsahu, než se používá pro internet. Počítače s OS Windows XP a výše (a linuxy všechny) umí používat na jednom rozhraní více IP adres. Pro přístup k NASu tedy tuto možnost využijeme. A protože k NASu budeme přistupovat jen z lokální sítě, tedy "connected", není potřeba, a dokonce v tomto případě je to bezpečnější, nastavovat na NASu "default gateway".

SATA-multiplier

Postupem času jsem do mého domácího úložiště přidával další disky, až jsem si jednoho dne povšiml, že i přesto, že disky vypínám a klec na disky je z masivního hliníku, dochází k dost silnému zahřívání všech disků. Proto jsem se rozhodl, že zredukuji počet disků v úložišti a umístím je do externího boxu. Protože však jsem nechtěl, aby mi z počítače k tomu externímu boxu vedl svazek SATA-kabelů, rozhodl jsem se vyzkoušet nějaký SATA-multiplier. U tuzemských e-shopů však byla buď omezená dostupnost, nebo vysoka cena, tak jsem si jej objednal z DX . Sice zde uvádějí, že disky spojí do některého RAID-módu (RAID 0, 1, 5, 10, Concatenated and JBOD ), ale nakonec jsem zjistil, že jsou v linuxu vidět samostatné disky - a to jsem potřeboval. Takže jsem z hliníkového plechu 5mm udělal bočnice, mezi které jsem umístil celkem 5 disků, a nechal jsem i místo pro ten SATA-multiplier a napájecí kabeláž. Pro horní, spodní, přední a zadní stranu jsem použil 1,5mm  silný hliníkový plech. Napájení disků jsem pomocí dvou kusů dvoulinky 2x1,5mm2 vyvedl z počítače.