Ja, tak jak wielu innych użytkowników MacBooka Pro, napotkałem problem niedoboru pamięci wewnętrznej. Mówiąc dokładniej, mój codziennie używany rMBP był wyposażony w SSD o pojemności zaledwie 256 GB, co oczywiście szybko okazało się niewystarczające.
A kiedy zacząłem dodatkowo nagrywać wideo podczas moich lotów, sytuacja tylko się pogorszyła. Ilość zarejestrowanego materiału po takich lotach wynosiła 50+ GB, a mój nieszczęsny SSD o pojemności 256 GB bardzo szybko się wypełnił, zmuszając mnie do zakupu zewnętrznego dysku o pojemności 1 TB. Niemniej jednak, po roku i on przestał radzić sobie z generowanymi przeze mnie ilościami danych, nie mówiąc już o tym, że brak nadmiarowości i kopii zapasowych czynił go nieodpowiednim do przechowywania ważnych informacji.
W pewnym momencie postanowiłem zbudować dużą pamięć NAS z nadzieją, że ten system przetrwa co najmniej kilka lat, nie wymagając kolejnej aktualizacji.
Ten artykuł napisałem przede wszystkim jako przypomnienie o tym, co dokładnie robiłem, na wypadek gdybym musiał to zrobić ponownie. Mam nadzieję, że będzie on pomocny także dla Was, jeśli zamierzacie robić to samo.
Może lepiej kupić?
Tak więc, wiemy, czego chcemy uzyskać, pozostaje pytanie, jak to osiągnąć?
Najpierw zapoznałem się z komercyjnymi rozwiązaniami i rozważyłem, w szczególności firmę Synology, która, jak przypuszczano, oferuje najlepsze konsumenckie systemy NAS na rynku. Jednak koszt tej usługi okazał się dość wysoki. Najtańszy system z 4 zatokami kosztuje ponad 300 USD, a dodatkowo dyski twarde nie są w zestawie. Co więcej, sama wewnętrzna konstrukcja takiego zestawu nie wydaje się imponująca, co podważa jej rzeczywistą wydajność.
Wtedy pomyślałem: a dlaczego nie zbudować serwera NAS samodzielnie?
Wyszukiwanie odpowiedniego serwera
Jeśli zamierzasz skompletować taki serwer, przede wszystkim musisz znaleźć odpowiedni sprzęt. Do tej budowy nada się używany serwer, ponieważ do zadań magazynowych nie potrzebujemy szczególnej wydajności. Z niezbędnych rzeczy warto zaznaczyć dużą ilość pamięci RAM, kilka złączy SATA oraz dobre karty sieciowe. Ponieważ mój serwer będzie działał w miejscu mojego stałego zamieszkania, istotny jest również poziom hałasu.
Moje poszukiwania rozpocząłem od eBay. Mimo że znalazłem tam wiele używanych Dell PowerEdge R410/R210 w cenie poniżej 100 dolarów, mając doświadczenie w pracy w serwerowni, wiedziałem, że te jednostki 1U generują zbyt dużo hałasu i nie nadają się do użytku domowego. Generalnie serwery w formacie tower są zwykle mniej hałaśliwe, ale niestety na eBay było ich niewiele, a wszystkie były albo drogie, albo mało wydajne.
Kolejnym miejscem, w którym szukałem, była strona Craiglist, gdzie znalazłem osobę sprzedającą używanego HP ProLiant N40L za jedyne 75 dolarów! Byłem zaznajomiony z tymi serwerami, które nawet w używanym stanie zwykle kosztują około 300 dolarów, więc wysłałem do sprzedawcy wiadomość w nadziei, że ogłoszenie jest nadal aktualne. Dowiedziawszy się, że tak jest, nie czekając długo udałem się do San Mateo, aby odebrać ten serwer, który od pierwszego wejrzenia mnie bardzo ucieszył. Miał minimalne ślady użycia i, poza niewielką warstwą kurzu, wszystko wyglądało świetnie.

Zdjęcie serwera zaraz po zakupie
A oto specyfikacja zakupionego przeze mnie zestawu:
- CPU: Procesor AMD Turion(tm) II Neo N40L Dual-Core (64-bit)
- RAM: 8 GB RAM non-ECC (zainstalowane przez poprzedniego właściciela)
- Flash: Dysk USB 4 GB
- Złącza SATA: 4 + 1
- NIC: Karta NIC 1 Gbps na pokładzie
Nie trzeba mówić, że mimo kilkuletniego wieku, specyfikacja tego serwera wciąż przewyższa większość dostępnych na rynku systemów NAS, szczególnie pod względem pamięci operacyjnej. Chwilę później nawet dokonałem aktualizacji do 16 GB ECC z większym buforem i zwiększoną ochroną danych.
Wybór dysków twardych
Teraz mamy świetnie działający system, pozostaje tylko dobrać dla niego dyski twarde. Oczywiście za te 75 dolarów otrzymałem tylko sam serwer bez HDD, co mnie nie zdziwiło.
Po przeprowadzeniu małego badania odkryłem, że do pracy z systemami NAS w trybie 24/7 najlepiej nadają się HDD WD Red. Na ich zakup udałem się na Amazon, gdzie nabyłem 4 egzemplarze o pojemności 3 TB każdy. W zasadzie możesz podłączyć dowolny preferowany HDD, ale zwróć uwagę, aby miały tę samą pojemność i prędkość. To pomoże uniknąć potencjalnych problemów z wydajnością RAID w przyszłości.
Konfiguracja systemu
Myślę, że wielu będzie korzystać w swoich zestawieniach NAS z systemu , i w tym nie ma nic złego. Niemniej jednak, mimo że miałem możliwość zainstalowania tego systemu na swoim serwerze, zdecydowałem się na użycie CentOS, ponieważ system ZFS na Linuksie jest od samego początku przygotowany do środowiska produkcyjnego, a zarządzanie serwerem w Linuksie jest mi znane. Poza tym nie interesował mnie modny interfejs i funkcje oferowane przez FreeNAS – wystarczył mi macierz RAIDZ oraz udostępnianie AFP.
Instalacja CentOS na USB jest dość prosta – wystarczy wskazać USB jako źródło rozruchowe, a podczas uruchamiania kreator instalacji poprowadzi cię przez wszystkie jego etapy.
Budowanie RAID
Po pomyślnej instalacji CentOS zainstalowałem również ZFS na Linuksie, postępując zgodnie z wymienionymi .
Po zakończeniu tego procesu załadowałem moduł ZFS Kernel:
$ sudo modprobe zfs I stworzyłem macierz RAIDZ1 za pomocą polecenia 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 Zauważ, że tutaj używam ID dysków twardych zamiast ich wyświetlanych nazw (sdx), aby zmniejszyć szansę na niepowodzenie ich montowania po uruchomieniu z powodu zmiany literowego oznaczenia.
Dodałem również ZIL i cache L2ARC, działające na oddzielnym SSD, dzieląc ten SSD na dwie partycje: 5GB na ZIL i resztę na L2ARC.
Co do RAIDZ1, może on wytrzymać awarię 1 dysku. Wiele osób twierdzi, że ten wariant puli nie powinien być używany z powodu prawdopodobieństwa awarii drugiego dysku podczas rekonstrukcji RAID, co może prowadzić do utraty danych. Ja zlekceważyłem tę rekomendację, ponieważ regularnie wykonywałem kopie zapasowe ważnych danych na zdalnym urządzeniu, a awaria całej macierzy może wpłynąć jedynie na dostępność danych, ale nie na ich bezpieczeństwo. Jeśli nie masz możliwości robienia kopii zapasowych, lepiej użyć rozwiązań, takich jak RAIDZ2 lub RAID10.
Aby upewnić się o pomyślnym utworzeniu puli, można wykonać:
$ sudo zpool statusi
$ sudo zfs list
NAZWA UŻYTY DOSTĘPNY ODNIESIENIE PUNKT MONTAŻU
data 510G 7.16T 140K /mnt/data Domyślnie ZFS montuje świeżo utworzoną pulę bezpośrednio w /, co zazwyczaj jest niepożądane. Można to zmienić, wykonując:
zfs set mountpoint=/mnt/data dataZ tego miejsca możesz wybrać utworzenie jednego lub kilku zbiorów danych do przechowywania danych. Stworzyłem dwa: jeden na kopię zapasową Time Machine i drugi do wspólnego przechowywania plików. Pojemność zbioru danych Time Machine ograniczyłem do kwoty 512 GB, aby zapobiec jego niekończącemu się wzrostowi.
Optymalizacja
zfs set compression=on dataTo polecenie włącza obsługę kompresji ZFS. Kompresja zużywa minimalną moc CPU, ale może znacznie poprawić przepustowość I/O, dlatego zawsze zaleca się jej użycie.
zfs set relatime=on data Dzięki temu poleceniu zmniejszamy liczbę aktualizacji do atime, aby zredukować generację IOPS podczas dostępu do plików.
Domyślnie ZFS na Linuksie używa 50% pamięci fizycznej dla ARC. W moim przypadku, gdy całkowita liczba plików jest niewielka, tę wartość można bezpiecznie zwiększyć do 90%, ponieważ na serwerze nie będą działały inne aplikacje.
$ cat /etc/modprobe.d/zfs.conf
options zfs zfs_arc_max=14378074112Następnie za pomocą można sprawdzić, czy zmiany weszły w życie:
$ python arc_summary.py
...
Rozmiar ARC: 100.05% 11.55 GiB
Docelowy rozmiar: (Adaptacyjny) 100.00% 11.54 GiB
Minimalny rozmiar (twardy limit): 0.27% 32.00 MiB
Maksymalny rozmiar (wysoka woda): 369:1 11.54 GiB
...Konfiguracja powtarzających się zadań
Użyłem do skonfigurowania timerów systemd, aby wykonywały czyszczenie raz w tygodniu oraz do automatycznego tworzenia zrzutów stanu co 15 minut, 1 godzinę i 1 dzień.
Instalacja Netatalk
to otwarta implementacja AFP (). Postępując zgodnie z S, w dosłownie kilka minut otrzymałem zbudowany i zainstalowany pakiet RPM.
Konfiguracja
$ cat /etc/netatalk/afp.conf
[datong@Titan ~]$ cat /etc/netatalk/afp.conf
;
; Plik konfiguracyjny Netatalk 3.x
;
[Global]
; Ustawienia globalne serwera
mimic model = TimeCapsule6,106
; [Homes]
; regex podstawowy = /home
; [Mój Wolumin AFP]
; ścieżka = /path/to/volume
; [Mój Wolumin Time Machine]
; ścieżka = /path/to/backup
; time machine = tak
[Pliki Datonga]
ścieżka = /mnt/data/datong
ważni użytkownicy = datong
[Backups Time Machine Datonga]
ścieżka = /mnt/data/datong_time_machine_backups
time machine = tak
ważni użytkownicy = datong Zauważ, że vol dbnest stanowi w moim przypadku poważne ulepszenie, ponieważ domyślnie Netatalk zapisuje bazę danych CNID w głównym katalogu systemu plików, co było całkowicie niepożądane, ponieważ mój podstawowy system plików działa na USB, co czyni go stosunkowo wolnym. Włączenie tej opcji vol dbnest prowadzi do zapisania bazy danych w głównym katalogu Woluminu, który w tym przypadku odnosi się do puli ZFS i oferuje znacznie lepszą wydajność.
Włączenie portów w Firewall
$ 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
Jeśli wszystko zostało skonfigurowane poprawnie, Twoja maszyna powinna być widoczna w Finderze, a Time Machine również powinna działać.
Dodatkowe ustawienia
Monitoring S.M.A.R.T
Zaleca się monitorowanie stanu dysków w celu zapobiegania ich awarii.
$ sudo yum install smartmontools
$ sudo systemctl start smartdDemon do UPS
Monitoruje naładowanie UPS APC i wyłącza system, gdy ładunek staje się krytycznie niski.
$ sudo yum install epel-release
$ sudo yum install apcupsd
$ sudo systemctl enable apcupsdAktualizacja sprzętowa
Tydzień po skonfigurowaniu systemu zaczynałem coraz bardziej martwić się, że w serwerze zainstalowana jest pamięć bez ECC. Ponadto w przypadku ZFS dodatkowa pamięć do buforowania będzie bardzo przydatna. Dlatego ponownie zwróciłem się do Amazonu, gdzie kupiłem 2x Kingston DDR3 8GB ECC RAM za 80$ każdy i wymieniłem pamięć RAM desktopową, zainstalowaną przez poprzedniego właściciela. System uruchomił się za pierwszym razem bez żadnych problemów, i upewniłem się, że wsparcie ECC zostało aktywowane:
$ dmesg | grep ECC
[ 10.492367] EDAC amd64: DRAM ECC enabled.Wynik
Wynik bardzo mnie ucieszył. Teraz mogę nieprzerwanie obciążać łącze LAN 1Gbps serwera kopiowaniem plików, a Time Machine działa bez zarzutu. Ogólnie rzecz biorąc, jestem zadowolony z konfiguracji.
Całkowity koszt:
- 1 * HP ProLiant N40L = 75$
- 2 * 8 GB RAM ECC = 174$
- 4 * WD Red 3 TB HDD = 440$
Podsumowując = $689
Teraz mogę powiedzieć, że cena była tego warta.
Czy samodzielnie budujesz serwery NAS?
Źródło: habr.com
