Blog (22)
Komentarze (997)
Recenzje (0)

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

@parranoyaBudujemy nowy dom (dla plików), czyli własny serwer NAS z RAID 105.04.2015 19:30

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ć. Polecenie

[code=]fdisk -l [/code]

wyświetli nam listę wszystkich partycji i dysków:

fdisk -l
fdisk -l

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

blkid
blkid

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.

cfdisk
cfdisk

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:

[code=]aptitude install mdadm[/code]

Tworzymy nową macierz RAID 1:

[code=]mdadm --create --verbose /dev/mdX --level=1 --raid-devices=2 /dev/sdaX /dev/sdbX[/code]

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:

[code=]mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda3 /dev/sda4[/code]

Komenda

[code=]cat /proc/mdstat[/code]

pokaże status utworzonej macierzy:

mdstat
mdstat

Wszystko OK? To zapisujemy konfigurację macierzy:

[code=]mdadm --detail --scan >> /etc/mdadm/mdadm.conf[/code]

Teraz 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.

[code=]mkfs.ext4 /dev/md0[/code]

Teraz trzeba już tylko przygotować miejsce pod nasze cenne pliki. Tworzymy folder w którym zamontujemy macierz:

[code=]mkdir /media/samba[/code]

Ze 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:

[code=]blkid | grep md >> /etc/fstab[/code]

W ż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:

[code=]nano /etc/fstab[/code]

i poprawiamy wpis dotyczący md0 do takiej postaci:

[code=]UUID=d95593bf-c879-4719-9733-2eded63fc06f /media/samba ext4 defaults[/code]

Dzięki temu zabiegowi podczas każdego startu system automatycznie zamontuje naszą macierz. Skoro macierz skonfigurowana, instalujemy serwer plików:

[code=]aptitude install samba[/code]

Razem z serwerem samba instaluje się niepotrzebny nam do niczego demon rpcbind. Polecenia

[code=]update-rc.d rpcbind disable[/code]

i

[code=]update-rc.d nfs-common disable[/code]

zał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:

[code=][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 = 0770[/code]

Powyż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.

[code=]smbpasswd -a nazwa_użytkownika[/code]

Powyż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:

[code=]chown -R nazwa_właściela /media/samba[/code]

Restartujemy serwer plików:

[code=]/etc/init.d/samba restart[/code]

i w sieci lokalnej pojawia się nowy folder:

workgroup
workgroup

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:

lsblk
lsblk
Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.