Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Budujemy nowy dom (dla plików), czyli własny serwer NAS z RAID 1

Do stworzenia tego “how to” natchnął mnie wpis Cyryllo, który opisał proces tworzenia domowego NAS’a. Wpis poruszył zagadnienia typowo sprzętowe a ja postaram się opisać taki proces od strony programowej - mam nadzieję w sposób kompletny. Można co prawda skorzystać z gotowca i zainstalować polecany przez niego OMV ale jak to mawiają: "Chcesz mieć coś dobrze zrobione, zrób to sam" :-)

W moim wpisie całkowicie pomijam proces instalacji systemu, skupiam się wyłącznie na konfiguracji odpowiednich programów.
Podstawą NAS’a może być właściwie dowolny system Linux lub któryś system z rodziny BSD ale ponieważ od jakiegoś czasu preferuję Debiana, na nim będę bazował podczas tworzenia tego tekstu.

Serwerem plików będzie demon Samba. Same pliki przechowywane będą na dwóch dyskach połączonych w programową macierz RAID 1. Pomimo, że większość płyt głównych posiada sprzętową obsługę macierzy, zdecydowałem się na wersję programową ze względu na to, że w razie awarii płyty głównej, dyski z plikami można zainstalować w dowolnym innym komputerze z Linuksem. Nie ma natomiast żadnej gwarancji, że nowy kontroler poradziłby sobie z macierzą utworzoną za pomocą starego kontrolera. Z testów, które można znaleźć w internecie (mi nie chciało się tego robić), wynika, że wydajność macierzy programowych niewiele odbiega od sprzętowych. Dotyczy to oczywiście tanich kontrolerów wlutowanych w płyty główne. Profesjonalne kontrolery są oczywiście bardziej wydajne i jeśli się taki posiada warto użyć raczej jego. Dodatkową uwagą na początek jest ostrzeżenie co do traktowania macierzy RAID 1 jako backup plików. Wielu administratorom wydaje się, że jeśli trzymają pliki na dwóch dyskach spiętych w macierz to nic tym plikom nie grozi. Owszem, pliki będą bezpieczne w przypadku awarii jednego z dysków, ale nic ich nie ochroni w przypadku nieumyślnego skasowania lub chęci powrotu do starszej wersji któregoś z nich. Wszelkie zmiany automatycznie odbywają się na wszystkich dyskach w macierzy. Tradycyjna forma backupu w innej lokalizacji jest wobec tego nieodzowna bo jak wiadomo: “Administratorzy serwerów dzielą się na dwie kategorie. Tych co robią kopie zapasowe i tych co będą je robić…” ;-)
Po co więc redundancja dysków? Myślę, że warto traktować ją jako dodatkową warstwę zabezpieczającą. Dyski lubią się psuć a przerwa w dostępie do ważnych plików w trakcie pracy (zarobkowej zwłaszcza) może kosztować znacznie więcej niż nadmiarowy dysk w komputerze.
No to do dzieła!

Najpierw musimy dodać dyski do puli. Są dwie możliwości: dodajemy całe dyski lub partycje. Jeśli dodamy całe dyski, możemy wykorzystać 100% dostępnego miejsca największego z dysków. Jednak jeśli zapełnimy cały dysk, system może mieć problem z defragmentacją. Pomimo tego, że linuksowe systemy plików bardzo dobrze radzą sobie z fragmentacją, warto nieco systemowi ułatwić pracę w tym zakresie. Dlatego zamiast dodać do macierzy całe dyski, lepiej jest utworzyć partycje mniejsze o kilka, kilkanaście GB niż wynosi pojemność dysku. Wolne miejsce będzie wykorzystywane do sprawniejszej defragmentacji.
W niemal każdej linuksowej dystrybucji jest co najmniej kilka programów do tworzenia partycji. Ja preferuję cfdisk ze względu na najprostszą chyba obsługę z pośród znanych mi programów partycjonujących działających z linii poleceń.
Nie jest łatwo rozeznać się w konsoli, który dysk jest który i trzeba trochę się nagimnastykować.
Poleceniefdisk -l wyświetli nam listę wszystkich partycji i dysków:

W tym przypadku widać, że w systemie istnieje 8 partycji: od sda1 do sda8.
Polecenie blkid wyświetli nam listę wszystkich dostępnych partycji.

Jak widać partycje 1, 5, 6, 7 i 8 są już zajęte a 2 to partycja rozszerzona.
cfdisk pokaże, że nieużywane są dwie partycje: sda3 i sda4.

Tak wygląda sytuacja jeśli dokładamy dyski do już istniejącego systemu.
Skoro wiemy już który dysk będzie w puli RAID możemy działać.
Instalujemy program mdadm obsługujący macierze:aptitude install mdadmTworzymy nową macierz RAID 1:mdadm --create --verbose /dev/mdX --level=1 --raid-devices=2 /dev/sdaX /dev/sdbX

Uwaga! Powyższe polecenie sprawi, że wszystkie dane zapisane na wymienionych partycjach ulegną destrukcji!

W miejsce X należy wstawić odpowiednie wartości, przy czym wartość dla mdX jest dowolna. raid-devices to ilość dysków dodawanych do macierzy. Można oczywiście dodać więcej niż dwa. Wówczas kolejne dodane dyski będą traktowane jako zapasowe.
W tym konkretnym przypadku powyższe polecenie wygląda tak:mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda3 /dev/sda4

Komendacat /proc/mdstatpokaże status utworzonej macierzy:

Wszystko OK? To zapisujemy konfigurację macierzy:mdadm --detail --scan >> /etc/mdadm/mdadm.confTeraz po każdym restarcie komputera mdadm automatycznie poskłada dyski w macierz.
Polecenie fdisk -l pokaże, że w systemie pojawił się nowy dysk o nazwie takiej samej jak nasza macierz czyli md0. Możemy potraktować go jak zwykły dysk. Zacznijmy od utworzenia systemu plików. Jako, że jeszcze nigdy mnie nie zawiódł ext, zwykle jemu powierzam pieczę nad plikami.mkfs.ext4 /dev/md0

Teraz trzeba już tylko przygotować miejsce pod nasze cenne pliki. Tworzymy folder w którym zamontujemy macierz:mkdir /media/sambaZe względu na to, że oznaczenia dysków sdaX, sdbX itp. mogą zmienić się po dodaniu kolejnego dysku do systemu, lepiej jest korzystać ze znaczników UUID. Znaczniki te są unikalne i nie zmieniają się nigdy ale za to są bardzo długie i nie ma co bawić się w ich przepisywanie. Jednym poleceniem dodamy odpowiedni znacznik UUID do pliku /etc/fstab:blkid | grep md >> /etc/fstabW żadnym przypadku nie wolno się pomylić i zamiast >> wpisać >. Po takiej operacji cała zawartość pliku fstab zostanie zastąpiona. >> tylko dopisuje do pliku.
Edytujemy plik fstab:nano /etc/fstabi poprawiamy wpis dotyczący md0 do takiej postaci:UUID=d95593bf-c879-4719-9733-2eded63fc06f /media/samba ext4 defaults

Dzięki temu zabiegowi podczas każdego startu system automatycznie zamontuje naszą macierz.
Skoro macierz skonfigurowana, instalujemy serwer plików:aptitude install sambaRazem z serwerem samba instaluje się niepotrzebny nam do niczego demon rpcbind.
Poleceniaupdate-rc.d rpcbind disableiupdate-rc.d nfs-common disablezałatwiają sprawę (skoro korzystamy z Samby to i nfs raczej nam się nie przyda).

Teraz przystępujemy do konfiguracji Samby. W pliku /etc/samba/smb.conf dopisujemy:[shared] path = /media/samba available = yes valid users = nazwa_użytkownika read only = no browseable = yes public = no writable = yes guest ok = no] create mode = 0660 directory mode = 0770Powyższe instrukcje należy oczywiście dopasować do swoich potrzeb. shared określa nazwę udziału jaki pojawi się w sieci lokalnej. valid users określa którzy użytkownicy będą mogli korzystać z udostępnionych zasobów. Potrzebne do tego będzie hasło.smbpasswd -a nazwa_użytkownikaPowyższym poleceniem dodaje się użytkowników wymienionych w sekcji valid users. Polecenie poprosi o podanie hasła które będzie w parze z loginem.
Należy jeszcze zmienić uprawnienia do plików na serwerze:chown -R nazwa_właściela /media/sambaRestartujemy serwer plików:/etc/init.d/samba restarti w sieci lokalnej pojawia się nowy folder:

Oprócz udziału, który stworzyliśmy, pojawił się folder nazywający się tak samo jak folder domowy w Linuksie. Jeśli przeszkadza nam ten widok, w pliku /etc/samba/smb.conf usuwamy lub zaznaczamy jako komentarz sekcję nazwaną jako [homes].
Podajemy login i hasło podane w poleceniu smbpasswd i już mamy własny działający serwer plików lub co może lepiej brzmi: NAS :-)

Ufff!! Na dziś wystarczy. W kolejnej części opiszę jak stworzyć macierz RAID z wykorzystaniem dysku z danymi. Powiadomienie mailowe o ewentualnej awarii macierzy to też fajny bajer więc zajmiemy się i tym.

P.S. Już po opublikowaniu wpisu natrafiłem na ciekawe narzędzie do identyfikacji dysków w systemie. W związku z tym spora część tekstu nieco traci na znaczeniu ale jako, że mimo to w dalszym ciągu jest aktualna, zdecydowałem się ją zostawić.
Tym ciekawym narzędziem jest lsblk a jego wynik wygląda następująco:

 

linux porady serwery

Komentarze

0 nowych
dhor   8 #1 05.04.2015 21:11

Fajny opis. Jednak preferuję NFS zamiast Samby. Oczywiście nie wiem, czy Windows umie NFS, dlatego to nie jest rozwiązanie dla każdego :)

formoza   3 #2 05.04.2015 21:13

Fajny poradnik :) Przyda mi się ponieważ może niedługo będę takie coś robił.

Ostatnio wojowałem z samba trochę bo nie wczytywał dobrej konfiguracji, a jak już wczytał to nie miałem dostępu, na końcu mi się udało dopiero a z Twoim configiem samby mi to szybciej pójdzie bo jest 'sprawdzony' :D

parranoya   8 #3 05.04.2015 21:51

@formoza: Sprawdzony, bo specjalnie na potrzeby tego wpisu wszystko dla pewności jeszcze raz przerobiłem w virtualboksie ;-)

szydl0   6 #4 05.04.2015 21:52

Sam ostatnio jestem w temacie budowy domowego NASa, obecnie na etapie kompletowania sprzętu. Poleci ktoś małą obudowę ITX(nie głębszą jak ~25cm) która pomieści przynajmniej dwa dyski 3.5? Najlepiej o możliwie minimlistycznym wykończeniu, bez świecidełek i bajerów. :)

parranoya   8 #5 05.04.2015 22:16

@szydl0: 2x3,5" w obudowie itx? Lekko nie będzie...
Jak ja szukałem obudowy to nic takiego nie widziałem. Na jeden duży dysk owszem. Trudno znaleźć taką obudowę na dwa dyski 2,5" a co dopiero na 3,5" ale może się uda :-)

szydl0   6 #6 05.04.2015 23:00

@parranoya: Są takie konstrukcje ITX, np. Obsidian 250D ma 2x3.5+1x5.25, zaś Node 304 ma nawet 6x3.5. Problem w tym, że są głębokie na prawie 40cm i zajęłyby jednak sporo miejsca na biurku.

Obecnie przyglądam się Cooltek C3, gdyby tylko mogłaby być te pare cm niższa...

  #7 06.04.2015 00:42

@dhor: A jest jakieś gui które to obsługuje?bo nie jestem w tym za mocny,w sambie wszystko działa,a mam kompy z linuxem:)

marrrysin   6 #8 06.04.2015 11:19

Strasznie brakuje mi NASa, ale - porządny to duży koszt, byle-jaki ma niewielkie możliwości. Co myślisz o zakupie 2-3 dysków 750GB+ i zrobieniu RAID 1 / RAID 5 w wirtualce w stacji roboczej (Dell t3500, xeon quad)? Powinno wszystko śmigać, energochłonność mnie nie obchodzi - akademik :) Najwyżej sobie ramu dokupię, bo przy 6gb może zacząć go brakować. Dodam, że korzystałoby z tego dwu użytkowników, pewnie każdy z 2-4 urządzeń góra.

parranoya   8 #9 06.04.2015 13:19

@marrrysin: Mój domowy NAS pracuje na płycie ITX z procesorem Celeron J1800 z wyłączonym 1 rdzeniem i wyciąga ~90 MB/s (720 Mbit/s). Obciążenie procesora to 100%. Gdybym włączył drugi rdzeń to pewnie byłbym blisko 1 Gb/s. Maszyna ze specyfikacją, którą podałeś wystarczy na kilka NASów :-)

emigrant   1 #10 06.04.2015 14:46

Puffy w avatarze i jakieś luniksy? ;] Powinien być opisany FreeBSD + RAIDZ albo jak ktoś woli gotowca to FreeNAS.

awangardowy   7 #11 06.04.2015 16:58

mam zrobiony od jakiegoś czasu server na pendrive , tzn podpięty pendrive 32gb do USB i zamieniony na "server plików" przez lan/połączenie ethernet. Z zewnątrz wygląda jak samba.

wbrew pozorom bardzo dobre rozwiązanie, bo pendrive mało energii bierze a te zwykłe dyski talerzowe pożerają prąd.

domowa samba to bardzo wygodna rzecz, każdemu polecam pobawic sie w "domowy serwer z wymianą plików", naprawdę warto.
jeden z najtanszych sposobów na zrobienie tego to jakiś lepszy router, z wieloma funkcjami dodatkowymi (i właśnie zamienia się ten router w sambę).

Autor edytował komentarz.
Pablo.C   3 #12 06.04.2015 18:23

@dhor: Nie tylko umie, ma oficjalnego klienta NFS od MS

parranoya   8 #13 06.04.2015 18:41

@emigrant: Ech BSD... Kiedyś zachłysnąłem się OpenBSD ale im jestem starszy a serwerów więcej tym staję się leniwszy. Reinstalacja co pół roku (zalecany sposób przejścia na nową wersję) w pewnym momencie stała się zbyt uciążliwa ale sentyment pozostał. Z przyzwyczajenia w dalszym ciągu regularnie sprawdzam sekcję "Patches" ;-)

parranoya   8 #14 06.04.2015 18:43

@awangardowy: Nie przesadzaj. Dysk 2,5" pobiera ok. 1-2 W.

moh3r   10 #15 06.04.2015 18:50

@Pablo.C: Co z tego, skoro dołącząny jest jedynie do edycji Ultimate i Enterprise, na które w domu pozwolić mogą sobie jedynie piraci?

awangardowy   7 #16 06.04.2015 20:02

2,5 cala
kontra
pendrive powiedzmy 256 gb? --> cena pendrive tej wielkości na allegro to np. teraz 75 zł niefirmowy, a firmowe to pewnie ze stówę.

jak komus wystarczy taka wielkosc - bo np. ma same dokumenty bez zadnych multimediów typu filmy - to wtedy pendrive jest lepszy. Ważne żęby USB 3,0 było.

talerzowe hdd są dobre jak ktoś zbiera multimedia, albo produkuje niewiadomo jakie dane.

Mniej prądu to żre, wystarczy tylko do USB 2.0 lub 3.0 sobie podpiąć żeby ładnie śmigało. Niby nic, ale wolę jak mi chodzi sam router bez żadnych procesorów/dysków/ramów. Mówimy tylko o wymianie plików, a nie przetwarzaniu danych.
A w 1-2 W nie wierzę.
W dodatku pendrive mogę wypiąć i schować do kieszeni i już nie ma samby widocznej ;-)

Autor edytował komentarz.
moh3r   10 #17 06.04.2015 20:07

@awangardowy: Pendrive 256GB za 100zł? Chyba chiński fake z 8/16GB realnej pojemności.

awangardowy   7 #18 06.04.2015 20:13

a nie wiem, nie chce mi się analizować teraz allegro, ale polecam pendrivy. :)

co do routerów to fajne jest openwrt , na tym forum duzo informacji:
http://eko.one.pl/forum/index.php
ale to wtedy jak ktos ma czas grzebac w routerach i firmware.

mam jakis bez openwrt i nawet nie wiem z jakim softem, robi mi sambę z pendrive, ale to tylko USB 2.0.
Chcę router z usb 3.0.

Autor edytował komentarz.
moh3r   10 #19 06.04.2015 20:25

@awangardowy: Maksymalne zużycie w dyskach 2.5" to 2.5-3W, a przecież przez większość czasu dysk i tak się "nudzi" (wtedy zużycie spada poniżej 1W). Pendrive opłaca się tylko w bardzo specyficznych zastosowaniach.

Autor edytował komentarz.
gaijin   4 #20 07.04.2015 08:01

Z własnego doświadczenia dodam iż po komendzie: mdadm --detail --scan >> /etc/mdadm/mdadm.conf należałoby jeszcze wykonać dpkg-reconfigure mdadm aby mieć pewność że po restarcie raid prawidłowo podmontuje

parranoya   8 #21 07.04.2015 09:16

@gaijin: Z mojego doświadczenia wynika, że nie trzeba a robiłem to już wielokrotnie.

  #22 07.04.2015 12:44

"Polecenie blkid wyświetli nam listę wszystkich zamontowanych partycji."
To niestety jest błędna informacja. Do pokazania jakie są zamontowane partycje służy polecenie 'mount'. Polecenie 'blkid' pokazuje tzw. UUID - niezależnie czy partycja jest zamontowana czy nie.

  #23 07.04.2015 14:15

@dhor: Kurde ! następny ! nie wiem ale sie wypowiem ! gościu, proste hasło w google --> windows nfs i se wybierz co chcesz bo az 3 pierwsze linki są bezpośrednio od samego microsoftu.

parranoya   8 #24 07.04.2015 17:42

@kanar123 (niezalogowany): Racja, poprawiam.

  #25 09.04.2015 10:51

Z tym softwerowym RAID-em to raczej bym uważał. Niestety nie jest tak różowo przy awarii jednego z dysków jak autor pisze - niestety przetrenowalem na włsnej skórze. Na koniec wpisu proponuję zamieściś metodę kopiowania (dublowania) OS na drugi dysk. Chodzi o to, aby system był na obydwu dyskach połączonych w softwerowym RAID-ie i w razie awarii potrofił wystartować każdy z osobna.

parranoya   8 #26 09.04.2015 15:07

@pawcioja (niezalogowany): A co takiego się wydarzyło? Jestem ciekawy bo jeszcze nigdy programowy raid mnie nie zawiódł chociaż dopuszczam taką możliwość.

Marek607   2 #27 10.04.2015 16:25

Też jestem ciekawy co było konkretnym problemem - stawiam że instalacja na raidzie i "grub install /dev/sda" i jak on padł to system nie wstał ;)
Raid programowy idealny nie jest ale wole go niż hardwarowy.

Pudel89   7 #28 11.04.2015 21:11

@awangardowy: Uuu kolega się zachłysnął Allegro? Nie polecam...
Masa podróbek Samsunga, SanDiska i innych. A pendrive 256GB za 75 PLN to rzecz niemożliwa...
Wystarczy przejrzeć oferty z kilku sklepów by mieć pewność, że taka cena i pojemność to jakiś totalny smród.
Poza tym pendrive na dysk pod Sambe?
Takim dyskom brakuje IOPSów. Szybkość zapisu/odczytu przy dużym pliku to nie wszystko niestety.

anakkin   5 #29 13.04.2015 09:39

A ma ktoś pojęcie czy da się zrobić takiego RAIDa (lub podobne), aby można było odpiąć jeden dysk, wsadzić do maszyny z Windowsem i żeby windows poprawnie wszystko odczytywał?

  #30 04.05.2015 14:50

@parranoya: Umarł dysk na którym był cały boot (gdzie leżą także sterowniki do softwerowych raidów itp), a na mirrorze nie było go. Więc dopóki sterowniki i konfiguracja RAID były w pamięci wszystko hulało. Po restarcie na zdrowym dysku brakowało bootloadera jak i zresztą całego katalogu boot (specjalna procedura o której pisałem aby zdublować cały bootloader i boot) a po podłączeniu do innego linuxa md nie widział w jaki sposób skonfigurowany jest RAID.
Proponuję dla pewności po uruchomieniu po prostu uruchomić system raz z jednego a raz z drugiego dysku symulując awarię jednego z nich poprzez wypięcie go fizycznie.

parranoya   8 #31 04.05.2015 18:09

@pawcioja (niezalogowany): W mojej konfiguracji system jest na osobnym dysku właśnie po to, żeby w razie jego awarii można było macierz zaimportować w innym systemie.
Przy okazji nowego Debiana zmieniłem dysk systemowy i zrobiłem "czystą" instalację. Okazało się, że macierz była już gotowa automatycznie - wystarczyło tylko ją zamontować.
W przypadku CentOS'a było podobnie. Instalacja mdadm -> import macierzy -> zamontowanie i wszystko hula. Zero problemów.

  #32 16.10.2015 21:05

@pawcioja (niezalogowany): Czyli przyczyną był nieprawidłowo skonfigurowany mirror. Używam serwera plików na mdadm (w wirtualce pod Hyper-V, więc dosyć hardcoreowo ;) od kilku lat, działa bez zająknięcia. Wymiana dysków to też nie problem.