Med några datorer i sitt hemmanätverk finns det en god chans att man vill centralisera sin fillagring för att få bättre överblick, åtkomstbarhet och säkerhet. Det verkar ganska vanligt att snegla åt diverse NAS-lösningar (typ Qnaps och Netgears lösningar på området) som erbjuder enkel RAID-konfiguration, låg strömförbrukning, diverse mediafunktioner (dlna-server, itunes-server etc), webbgränssnitt för torrent-nedladdningar mm. Det gjorde jag också länge och väl innan jag insåg att jag ändå tänkt göra om en stationär arbetsstation (mrq) till server för interna tjänster. Eftersom denna maskin har samma trevliga chassi som webbservern, Antec Performance P182, och är kapabel till att hantera ett gäng diskar har den även fått titeln filserver. Om du står inför en liknande situation och känner dig hyfsat komfortabel i Unix-världen rekommenderar jag den nedan beskrivna lösningen.
Den stationära arbetsstationen mrq som alltså fått nya ansvarsområden hade sen tidigare sex diskar i storlekar mellan 200 och 500 GB. Genom att komplettera med fyra nyinköpta 1,5 TB-diskar och ytterligare en disk på 1 TB landar vi på 11 diskar med totalt knappt 10 TB. Det enklaste i det här läget hade kanske varit att låta mrq köra vidare med Ubuntu och lagt till lite fler ext4-filsystem (ev kompletterat med volymhanteraren LVM) men eftersom jag förstått att ZFS är vägen att gå och att detta lirar bäst på hemmaplan, dvs i Solaris, landade jag på en installation av OpenSolaris 2009.06 (vilken jag ju redan varit med att fira lanseringen av på CommunityOne dagen innan JavaOne…).
För mer information om ZFS rekommenderar jag wikipedia, BigAdmin och framför allt Simons artiklar om en filserver med ZFS för hemmabruk.
För att kunna ansluta de 11 diskarna till moderkortet behövdes ett separat SATA-kontrollerkort och då inte OpenSolaris har stöd för alla förekommande modeller la jag lite energi på att hitta ett som stöds. När pris, tillgänglighet och drivrutinstöd i OpenSolaris vägts samman föll valet på Lycom ST124-kort. Det använder Sil-3124-chipsetet vilket fungerar väl i OpenSolaris.
Själva installationen gick smärtfritt och jag valde att installera systemet på en av två identiska 300 GB-diskar. Efter installationen la jag till den andra 300 GB-disken till boot-poolen (“rpool”) så att denna är speglad på två diskar.
När väl installationen är på plats och det är klart att alla diskar hittas utan problem (kan konstateras exempelvis med “format”) är det läge att skapa de ZFS-pooler som ska användas. Här kan det vara lämpligt att fundera lite kring upplägget och jag valde göra två pooler, en döpt till “main” med de fyra nya 1,5 TB-diskarna som använder RAID-Z och ytterligare en pool “backup” med de resterande fem diskarna (två gick åt till det speglade systemet) som inte använder RAID-Z.
I ZFS skapar man filsystem (med mycket låg overhead, typ några kilobyte) inuti en viss pool och sen kan filsystemen växa inom ramarna för poolen. Eftersom användarna på webbservern (och även mitt eget konto) ska ha sina hemkataloger i egna filsystem i main-poolen utdelade via NFS satte jag attributet “sharenfs” på “/export/home” som därefter ärvs av underliggande filsystem. Genom att använda autofs på webbservern automatmonteras användarnas hemkataloger via NFS vid inloggning/åtkomst (exempelvis dokumenteras i CentOS-dokumentationen. Detta åstadkoms genom att autofs instrueras att montera hemkatalogerna från mrq.
När man har åstadkommit en nätverksgemensam hemkatalog kan det vara intressant att använda den även på de bärbara datorerna som man brukar använda oavsett om man befinner sig i sitt hemnätverk eller när man är ute på vift. Med detta i åtanke har jag tagit fram ett bash-skript som jag kör för att montera hemkatalogen från hemmanätverkets filserver (och montera om den lokala hemkatalogen i /mnt/localhome). Om filservern inte koms åt försöker den koppla upp sig via vpn (om inte openvpn redan är startat) vilket gör att det blir möjligt att arbeta mot sin hemkatalog oavsett geografisk position om man har internetuppkoppling (som inte är helt handikappad av märkliga brandväggsregler).
Genom att ha tillgång till den allenarådande samlingen dokument och övriga filer i hemkatalogen på filservern får jag tillgång till samma inställningar (tänk exempelvis Firefox och Opera) för de program jag använder eftersom de i de allra flesta fall sparar sina användarinställningar i .programnamn-kataloger i hemkatalogen.
Avslutningsvis kan man väl nämna att denna typ av lösning gör att man blir tämligen beroende av en viss maskin, i mitt fall filservern mrq. Säkerhetsmässigt känns denna lösning dock stabilare i och med att filerna återfinns på ett ställe vilket underlättar säkerhetskopieringen (som bör ske till ett eller flera system på annan ort).
Fortfarande rätt tomt under /home/andreas/.zfs/snapshot dock…
Tack för påminnelsen Andreas! Nu ska det vara ordnat så att det tas snapshots kl 6, 12, 18 och midnatt. Efter 60 snapshots, vilket borde bli 15 dagar, rullar vi runt och börjar skriva över gamla snapshots. Låter okej?
Lyckades du lägga upp nån DLNA-server på mrq??
Själv kör jag (i Opensolaris build 134) en Serviio, som i o f s funkar, men jag skulle vilja ha fler filformat stödda, t ex.
Och effektivare sätt att konfa transkodering.
Nej, nån DLNA-server har det inte blivit förutom den som ingår i MythTV och som körs på webbservern2. Behovet av en DLNA-server minskade i mitt fall betänkligt efter att jag adderat en HTPC (EB1501).
Jag har väl tänkt samma tanke: en EB1501 eller nåt ION-kort i en HF Micro-låda. Som då får montera data från Solaris/ZFS/CiFS, eller?
Det enda problem jag har i så fall är SVT Play Prima och BBC iPlayer HD….. (iPlayer ö h t, proxying verkar allt annat än säkert…) Eftersom jag drar mig för Windows på HTPCn
Ja, jag monterar NFS-utdelningarna från filservern på min HTPC som kör Ubuntu 10.04 och XBMC.
Funkar SVT Play Prima?
HTPC:n är nerplockad nu och två veckor framöver inför en flytt men det enda som krävs är väl Flash 9? Det finns ett plugin till XBMC för online-teve som funkar med svt play (som jag inte prövat ännu men kommer att titta närmare på): http://code.google.com/p/xot-uzg/