Żyjemy w czasach, w których produkujemy i konsumujemy coraz więcej treści cyfrowych. Coraz więcej z nas posiada także wiele urządzeń multimedialnych takich jak smartfony, tablety, laptopy, „inteligentne” telewizory i wiele więcej. I to właśnie na tych urządzeniach chcemy owe treści konsumować. Tylko jak te treści konsumować, jeśli znajdują się na różnych urządzeniach? W takich przypadkach idealnie sprawdzi się centrum multimedialne, które pozwoli na odtwarzanie naszych treści na dowolnym urządzeniu w domu, i nie tylko. Na rynku istnieje wiele gotowych, i nieraz bardzo rozbudowanych, rozwiązań. Ja postanowiłem podejść do problemu nieco inaczej.
Co to jest NAS i czym to się je?
NAS (ang. Network Attached Storage) jak sama nazwa wskazuje to ni mniej, ni więcej magazyn danych podłączony pod sieć. Takie urządzenie umożliwia przechowywanie i uzyskiwanie dostępu do danych na nim zgromadzonych z dowolnego miejsca w sieci domowej, a po odpowiedniej konfiguracji, także z zewnątrz. Nie ma tu też znaczenia jakiej platformy korzysta użytkownik, gdyż takie urządzenie często wspiera wiele protokołów komunikacyjnych do udostępnienia danych.
Wspomniałem już wyżej o tworzeniu i konsumpcji treści cyfrowych, ale NAS nie musi być tylko i wyłącznie magazynem danych. Takie urządzenie może udostępniać także inne usługi – może być serwerem stron WWW, baz danych czy też umożliwiać dostęp do sieci lokalnej z zewnątrz za pomocą technologii wirtualnych sieci prywatnych (ang. VPN, Virtual Private Network).
Dlaczego nie gotowe rozwiązanie?
Głównie ze względów ekonomicznych. Gotowe magazyny sieciowe to koszt kilkuset złotych za sprzęt z procesorem ARM. Do kosztu samego urządzenia musimy doliczyć także koszt dysków twardych, jeśli ich nie posiadamy. Koszt urządzeń z procesorami opartymi o architekturę x86 jest prawie dwukrotnie wyższy. Rozpocząłem więc poszukiwania urządzenia, które może działać jako NAS, będzie pobierać rozsądną ilość energii, a przy tym zapewni jak najwyższą wydajność.
Poszukiwania czas zacząć
Na samym początku myślałem o wykorzystaniu platformy na kształt Raspberry Pi, ale z wbudowanym portem SATA. Po przeprowadzeniu rozeznania okazało się, że bardzo mało urządzeń ma wbudowany port SATA i większość z nich wyposażona jest w porty USB 2.0. Teoretyczna maksymalna przepustowość interfejsu USB 2.0 wynosi 480 Mb/s (megabitów), co przekłada się na 60MB (megabajtów) na sekundę. Niestety, jak to bywa w rzeczywistości, teoria mija się z praktyką i tak też jest w tym przypadku. USB 2.0 działa w trybie półdupleksu, czyli wysyłanie i odbieranie danych najczęściej odbywa się naprzemiennie, więc najczęściej spotykane prędkości przy przesyłaniu danych poprzez USB 2.0 to 25-30 MB/s. Taka prędkość może byłaby zadowalająca w przypadku przesyłania niedużych plików, jednak w przypadku wysyłania dużej ilości danych, np. kopii zapasowej, jest nie do zaakceptowania.
Pomijając prędkość transferu, niektóre platformy posiadają do tej samej magistrali, na której działałby dysk, podłączony kontroler sieci (tak jest w przypadku Raspberry Pi 3 i starszych). Wówczas prędkość byłaby współdzielona pomiędzy dysk i kontroler sieci, a więc jeszcze niższa. Kolejnym problemem, który wówczas się pojawia jest szybkość samego kontrolera sieci. Bardzo często tego typu platformy są wyposażone w interfejs o maksymalnej przepustowości 100Mb/s.
Co więcej, dużo platform, które mają port SATA, to jest on połączony z portem USB poprzez specjalny konwerter USB↔SATA (np. Orange Pi). Wówczas i tak jesteśmy ograniczeni prędkościami magistrali USB. Z kolei jeśli nawet procesor jest wyposażony we wbudowaną obsługę interfejsów SATA (np. Banana Pi), to prędkość też nie jest zadowalająca (patrz: test Banana Pi w porównaniu do Raspberry Pi)
Rozwiązaniem całej tej sytuacji mogłaby być platforma, która posiada osobny kontroler sieci o przepustowości 1GBps i osobny kontroler SATA lub porty USB bez podłączonych żadnych urządzeń wewnętrznych. Platform wyposażonych w porty USB 3.0 jest jak na lekarstwo i są one bardzo drogie (np. Odroid XU4, który kosztuje ponad 400 zł). Gdy zrezygnujemy z portów USB 3.0 i postawimy na platformę z natywnym portem SATA to i tak w przypadku architektury ARM nie wygląda to różowo (patrz link wyżej).
Po przeanalizowaniu wszystkich tych informacji zrezygnowałem z platform opartych o architekturę ARM i zacząłem szukać czegoś innego. I tak trafiłem na tzw. cienkie klienty. W dużym skrócie, patrząc pod kątem architektury, są to najczęściej zwyczajne, okrojone komputery, wyposażone w komponenty spotykane raczej w urządzeniach przenośnych (np. laptopach) i które posiadają zubożone systemy operacyjne wyposażone w narzędzia służące do komunikacji z innymi zdalnymi usługami lub systemami operacyjnymi.
Pierwszym modelem, którego rozważyłem zakup, był używany HP ThinClient T5740. Komputer ten, w zależności od konfiguracji, wyposażony jest w procesor Intel Atom N280 o taktowaniu 1,66 GHz, 1-2 GB pamięci RAM, gigabitowy interfejs sieciowy i co najważniejsze posiada port SATA. Koszt takiego terminala oscyluje w okolicach 100 zł. Jakież było moje rozczarowanie, gdy okazało się, że aby umieścić w środku dysk twardy trzeba się nieźle nagimnastykować. Konieczny był zakup specjalnego przedłużacza, którego wtyczkę z jednej strony należało przyciąć, ponieważ kolidował z portem PCI obok. Co więcej, dysku nie da się nigdzie przykręcić więc konieczne jest wywiercenie dodatkowych otworów w obudowie urządzenia.
Nie poddałem się tak łatwo i zacząłem szukać dalej. Przejrzałem naprawdę wiele urządzeń i w końcu natrafiłem na Dell Optiplex FX160.
Bingo!
Zacząłem przeglądać specyfikację. Terminal ten sprzedawany był w różnych konfiguracjach, ale najczęściej spotykana to: procesor Intel Atom 230, 2 GB pamięci RAM DDR2, 2 GB pamięci flash oraz to, co wywołało ogromny uśmiech na mojej twarzy – fabrycznie zainstalowany dysk twardy 80GB. Taki też model zakupiłem na jednym z portali aukcyjnych. Terminal przyszedł po kilku dniach.
Swoją przygodę z FX160 rozpocząłem z podmianą wbudowanego twardego dysku 80 GB na 500 GB, ponieważ aktualnie taki posiadałem i dotychczas służył jako dysk przenośny. Dla niektórych minusem może być fakt, że terminal obsługuje tylko dyski w formacie 2,5 cala – ja akurat w zasadzie tylko takie dyski posiadam „na stanie”, więc nie był to dla mnie żaden problem.
Sprzęt już mamy, czas dobrać system operacyjny
Sprzęt już miałem. Pozostał wybór systemu operacyjnego. Możliwe było obranie jednej z dwóch dróg: zainstalować samemu system operacyjny, a następnie instalować i ręcznie konfigurować wszystkie usługi lub skorzystać z gotowego rozwiązania, które posiada wstępnie skonfigurowane usługi i udostępni panel sterowania do łatwiejszego i szybszego zarządzania. Postanowiłem wybrać to drugie rozwiązanie, ze względu na to, że ma być szybko, prosto i działać od razu. Na rynku dostępnych jest wiele systemów operacyjnych stworzonych z myślą o takich zastosowaniach. Na wstępie pominąłem oczywiście rozwiązania komercyjne, ponieważ zależało mi na niskich kosztach. Najpopularniejsze na rynku darmowe rozwiązania to:
- openmediavault – dystrybucja oparta o Debiana
- FreeNAS – oparty o FreeBSD
- nas4free – jw.
Dobór systemu zależy od tego, czego potrzebujemy i co oferuje sam sprzęt.
2 GB pamięci flash oraz 2 GB pamięci RAM to dosyć mocne ograniczenia. O ile RAM można w łatwy sposób rozbudować, ponieważ zastosowano tradycyjne moduły DDR2, to jeśli chodzi o pamięć flash już tak łatwo nie jest.
FreeNAS i nas4free to dystrybucje bardzo rozbudowane, gdzie oprócz prostych rzeczy takich jak udostępnianie plików i strumieniowanie multimediów możemy stworzyć np. własny kontroler domeny oparty o Active Directory, ustawić serwer DNS oraz DHCP czy nawet uruchomić serwer pocztowy.
FreeNAS ze względu na użycie systemu plików ZFS wymaga minimum 4 GB pamięci operacyjnej i 4 GB miejsca na dysku (patrz: wymagania FreeNAS), nas4free wymaga tylko 1-2 GB pamięci RAM i minimum 2 GB miejsca na dysku (patrz: wymagania nas4free), a openmediavault (patrz: wymagania openmediavault) 1 GB RAM i 2 GB miejsca na dysku.
Ze względu na fakt, że z FreeBSD nie miałem w zasadzie do czynienia postanowiłem postawić na openmediavault. Jest to dystrybucja oparta o Debiana, więc system mi znany. Na pewno będzie łatwiej nim zarządzać niż FreeBSD. Wbudowanych funkcji jest mniej, ale resztę można, co prawda ręcznie, doinstalować i skonfigurować. Tematyka systemu i jego instalacji zostanie poruszona w osobnym wpisie.
Co ze zużyciem energii?
Cienkie klienty to urządzenia zazwyczaj bardzo energoooszczędne i tak jest również w tym przypadku. Postanowiłem dokonać kilku pomiarów podczas korzystania z mojego NASa. Oto wyniki:
Stan | Zużycie energii (W) |
Wyłączone (karta sieciowa nieaktywna) | 1.1 |
Wyłączone (karta sieciowa aktywna) | 1.8 |
Stan wstrzymania | 3.3-3.5 |
Stan bezczynności | 17.5-18.5 |
Wysoka aktywność | 19-20 |
Stan bezczynności (dysk wyłączony) | 16.5-17.5 |
Jak widać, zużycie energii w większości wypadków wynosi mniej niż 20W. Zakładając scenariusz, w którym nasz NAS miałby działać 24 godziny na dobę przez cały rok, a całkowity koszt 1 kWh to 0,60 zł (koszt energii i koszt usługi dystrybucji) to rocznie wyniesie nas to około 105 zł. Czy dużo, czy mało – ocenę pozostawiam wam.
Do czego służył mi będzie taki NAS?
Przede wszystkim, jak już wyżej wspomniałem, jako sieciowe centrum multimediów. Nie bardzo mam ochotę za każdym razem kopiować dane na pamięć USB czy dysk zewnętrzny i wpinać do telewizora, bo chcę obejrzeć film czy przeglądać zdjęcia w większym gronie rodzinnym. Kolejnym zastosowaniem będzie magazyn danych i zapasowy magazyn kopii zapasowych (onsite). Dodatkowym zastosowaniem będzie serwer WWW z PHP i MySQL do celów programistycznych.
I na koniec podgląd tego, jak prezentuje się Dell Optiplex FX160 (już skonfigurowany) na moim biurku 🙂