Jakiś czas temu zastanawiałem się czy budowanie NAS-a do zastosowań domowych opartego o zewnętrzne dyski USB 3.0 ma jakikolwiek sens ;-) Mam w domu działający mały serwerek (i3-6100, 16GB RAM) z ESXi na pokładzie i plan był taki, żeby postawić VM-kę, podpiąć 3 przenośne dyski 1TB USB 3.0, dorzucić kontroler PCI 4x USB 3.0 i w trybie passthrough przerzucić urządzenia dyski USB do VM-ki i zestawić na tym RAID-5.

Koszt

Kontrol PCI 4x USB 3.0 (PEXUSB3S4V) udało mi się kupić na Allegro za 119 PLN, każdy z dysków to koszt ~200 PLN za sztukę (ciekawe jest to, że ten sam dysk w obudowie zewnętrznej i kabelkiem USB 3.0, często jest tańszy niż „goła” wersja…). Resztę miałem gotową, została więc instalacja samej VMki, zestawienie RAID-a i trochę konfiguracji.

Setup

Na OS użyłem CentOS-a (nie przepadam specjalnie za RPMopodobnymi dystrybucjami) ale CentOS najlepiej ogarnął kontroler i UASP-a), wyglądało to tak, jakby nowsze wersje Kernel-a które były w Ubuntu miały jakiś bug i zamiast zyskać trochę wydajności, to kontroler zupełnie nie był w stanie dogadać się z dyskami.

Do zestawienia RAID-5 użyłem Linux-owego mdadm, macierz łącznie ma 2TB i jest odporna na utratę jednego dysku… i takie bezpieczeństwo mi w zupełności wystarcza. Trzymam tam głównie backup danych (time machine + cifs + nfs), oraz trochę kontentu video, który mount-uję po CIFS na RaspberryPi z KODI.

Wydajność

Myślę, że ta część powinna Was zainteresować najbardziej, bo to wydajność tego rozwiązania jest najczęstszym pytaniem… Macierz RAID zestawiłem 8 miesięcy temu,

Creation Time : Tue May 17 09:12:41 2016

i od tamtej pory nie mam żadnego problemu… Raz na kilka miesięcy wybieram jeden dysk i celowo wyrzucam go z macierzy… zapisuję śmieciami i odbudowuję RAID, żeby sprawdzić czy wszystko działa prawidłowo. A co z szybkością? Wykonałem kilka bardzo prostych testów żeby mieć trochę danych,

Test z użyciem iozone-a dla bloków 4kB, 512k, 1024k.

$ iozone -e -I -a -s 256M -r 4k -r 512k -r 1M -i 0 -i 1 -i 2 /mnt/raid5/Backups/

iozone

iozone storage raid5

Kolejny test to zapis danych z laptopa po WiFi (CIFS) na zamontowanym wolumenie, uruchomiłem dd if=/dev/zero na ~1 godzinę,

$ dd if=/dev/zero of=/Volumes/jamzed/1024MB
140234753+0 records in
140234752+0 records out
71800193024 bytes transferred in 3448.078600 secs (20823247 bytes/sec)

co w wyniku dało szybkość zapisu ~19MB/s, wiem, że nie jest to test wydajności samej macierzy, ale chciałem pokazać wyniki przy realnym codziennym użyciu. Kolejny test to też dd, w trybie direct, uruchomione z VMki uruchomionej na tym samym ESXi ale po mouncie NFSowym,

$ dd count=10240 bs=1M if=/dev/zero of=10240 conv=fsync
10240+0 records in
10240+0 records out
10737418240 bytes (11 GB, 10 GiB) copied, 104.656 s, 103 MB/s

Nie tak źle ;-) 103MB/s uważam za całkiem sensowny wynik.

Podsumowanie

Osobiście jestem zadowolony z tego rozwiązania, spełnia moje oczekiwania, na pewno nie jest to rozwiązanie które powinno się rozważać do wdrożenia w jakiejkolwiej firmie ;-) ale do zastosowań domowych na backup dlaczego nie? Każdy backup nawet na przenośnych dyskach USB będzie dużo lepszy niż żaden. ;-)