Zalecenia dotyczące ZFS na FreeBSD jako serwer NAS?


9

Pamiętajcie, że odpowiedzi na tej stronie pochodzą z 2009 roku i nie należy na nich polegać jako ewangelii. Jeśli masz konkretne pytanie dotyczące kliknij przycisk Zadaj pytanie i zadaj konkretne pytanie.

Myślałem o zbudowaniu domowego systemu kopii zapasowych przy użyciu FreeBSD 7.2 i systemu plików ZFS. Czy ktoś miał jakieś doświadczenie z tym systemem plików?

Konkretnie:

  • Czy można uruchomić z ZFS? (Chciałbym?)
  • Jak łatwo jest dodać dysk?
  • Jak dobrze radzi sobie z dyskami o różnych rozmiarach?
  • Czy możesz dodawać nowe dyski w locie (a przynajmniej po prostu po ponownym uruchomieniu)?
  • Czy lepiej byłoby mi służyć czymś z półki?

Wszelkie inne przemyślenia i sugestie byłyby mile widziane.

Edytować:

Dla jasności przeczytałem stronę FreeBSD na ZFS . Szukam sugestii od osób z praktycznym doświadczeniem o konfiguracji podobnej do tego, czego chcę.

Odpowiedzi:


13

Buduję domowy serwer plików FreeBSD przy użyciu ZFS.

Jest to AMD X2 3200+ z 3 GB pamięci RAM. Ma kartę PCI Express Gig-E. Dysk rozruchowy to stary dysk o pojemności 400 GB, a ja mam 4 dyski Seagte o pojemności 750 GB (na wszelki wypadek jeden z inną wersją oprogramowania układowego).

Uruchamianie z ZFS byłoby fajne (uprościłoby to instalację), ale użyłem instrukcji ZFSOnRoot, aby skonfigurować dysk Root / OS za pomocą ZFS (jeśli wszystkie partycje to ZFS, to nie trzeba wykonywać fsck podczas rozruchu aby sprawdzić systemy plików UFS). Powodem, dla którego chcesz, abyś mógł następnie skonfigurować wszystkie swoje partycje (/ var, / usr, / tmp itp.) Z różnymi opcjami zgodnie z wymaganiami (takimi jak noatime i asynchroniczne dla / usr / obj, co przyspieszy jądro kompiluje), ale wszystkie będą dzielić przestrzeń ze wspólnej puli. Następnie możesz skonfigurować dysk danych i dać każdemu użytkownikowi własną partycję (z różnymi cytatami i ustawieniami). Następnie możesz robić migawki (które są tanie w ZFS).

My home server has a df that looks like:
/dev/ad0s1a           1.9G    744M    1.1G    41%    /
devfs                 1.0K    1.0K      0B   100%    /dev
dozer/data            1.8T     62G    1.7T     3%    /data
dozer/home            1.7T    9.6G    1.7T     1%    /home
dozer/home/walterp    1.9T    220G    1.7T    11%    /home/walterp
tank/tmp              352G    128K    352G     0%    /tmp
tank/usr              356G    4.4G    352G     1%    /usr
tank/var              354G    2.2G    352G     1%    /var

Pod względem wydajności kopiowanie plików jest naprawdę szybkie. Chciałbym zauważyć, że korzystałem z ZFS na systemach AMD64 FreeBSD, które mają 3-4 GB i działa dobrze, ale po przeczytaniu martwię się o uruchomienie go na systemie i386, który miał 2 GB lub mniej pamięci.

Skończyło mi się porty SATA na płycie głównej, więc nie próbowałem dodawać żadnych nowych dysków. Początkowa konfiguracja była prosta: polecenie utworzenia RAIDZ, a następnie polecenie utworzenia / home, które zostało sformatowane w sekundach (IIRC). Nadal używam starszej wersji ZFS (v6), więc ma pewne ograniczenia (nie wymaga dysków o równej wielkości, ale w przeciwieństwie do Drobo, jeśli masz 3 750 GB i 1 TB, efekt końcowy będzie tak, jakbyś miał 4 750 GB dysków).

Jednym z głównych powodów, dla których korzystałem z ZFS z RAIDZ, były kompleksowe sumy kontrolne. CERN opublikował artykuł, w którym udokumentował test, w którym wykrył ponad 200 nieskorygowanych błędów odczytu podczas przeprowadzania testu R / W przez okres kilku tygodni (oczekuje się, że ECC na dyskach detalicznych będzie mieć awarię raz na 12 TB). Chciałbym, aby dane na moim serwerze były poprawne. Miałem poważną awarię z powodu przerwy w zasilaniu (ktoś przeciążył UPS, podłączając do niego grzejnik), ale kiedy system może się wycofać, ZFS szybko wrócił, bez standardowych problemów z FSSP.

Podoba mi się, ponieważ mogłem dodać CUPS do Samby, aby uzyskać serwer wydruku. Dodałem pamięć podręczną DNS i mogę dodać inne oprogramowanie, które mi się podoba (myślę o dodaniu monitorowania SNMP do komputerów stacjonarnych w moim domu, aby zmierzyć wykorzystanie przepustowości). Jeśli chodzi o to, co wydałem na system, jestem pewien, że mógłbym kupić tanią skrzynkę NAS, ale wtedy nie miałbym 64-bitowego lokalnego systemu Unix do zabawy. Jeśli podoba ci się FreeBSD, powiedziałbym, że idź z nim. Jeśli wolisz Linuksa, polecam rozwiązanie Linux. Jeśli nie chcesz wykonywać żadnej administracji, wtedy wybrałbym samodzielne urządzenie NAS.

W kolejnej rundzie aktualizacji sprzętu planuję uaktualnić sprzęt, a następnie zainstalować aktualną wersję FreeBSD, która ma ZFS v13. V13 jest fajny, ponieważ mam dysk RAM z podtrzymaniem bateryjnym, którego mogę użyć do dziennika ZIL (to powoduje krzyk zapisu). Obsługuje także dyski SSD w celu przyspieszenia serwera plików (specyfikacje nowych serwerów plików Sun są słodkie i otrzymują je z systemu ZFS, który używa dysku SSD, aby system był bardzo szybki).

EDYCJA: (Nie można jeszcze dodawać komentarzy). Prawie postępowałem zgodnie z instrukcjami na stronie http://www.ish.com.au/solutions/articles/freebsdzfs . Jedną z głównych zmian w wersji 7.X od czasu napisania tych instrukcji było to, że 7.2 pojawiło się, a jeśli masz 2 GB, nie powinieneś dodawać następujących trzech wierszy w /boot/loader.conf:

vm.kmem_size_max="1024M"
vm.kmem_size="1024M"  
vfs.zfs.arc_max="100M"

Instrukcje wyjaśniają również, jak utworzyć kopię lustrzaną i jak przywrócić system do trybu odzyskiwania (podłącz z ZFS). Raz lub dwa razy bawiłem się jego instrukcjami, a następnie skorzystałem z instrukcji administratora ZFS firmy Sun http://opensolaris.org/os/community/zfs/docs/zfsadmin.pdf, aby lepiej zrozumieć, czym był ZFS. Aby utworzyć mój magazyn danych, użyłem zmodyfikowanej wersji polecenia na stronie 91, aby utworzyć pule ZFS. Będąc FreeBSD, musiałem wprowadzić małą zmianę:

zpool create dozer raidz /dev/ad4 /dev/ad6 /dev/ad8 /dev/ad10

Tam, gdzie znaleziono ad4-ad10, wykonując dmesg | grep 'ata. * Master', są to nazwy dysków twardych SATA w systemie, które będą używane dla partycji dużych zbiorów danych. Na mojej płycie głównej, pierwsze trzy porty ATA (AD0-3), w których 4 porty PATA, a następnie, ponieważ każdy port SATA jest urządzeniem głównym, nie ma starych numerów.

Aby utworzyć system plików, po prostu:

zfs create dozer/data
zfs set mountpoint=/data dozer/tank

Drugie polecenie jest wymagane, ponieważ wyłączyłem domyślne punkty montowania dla udziałów.


Czy przypadkiem masz notatki ze wszystkiego, co zrobiłeś? Czy zechciałbyś je opublikować? :)
smuć

Świetny post na FreeNAS + ZFS. Byłem tym ciekawy. Dziękuję za informację!
osij2is

11

Wprowadzenie: W końcu zbudowałem swój system i oto moje notatki, na wypadek, gdyby pomógł komukolwiek innemu.

Cele:

  • Zbuduj domową skrzynkę NAS, która może również pełnić funkcję mojej kontroli źródła i wewnętrznego serwera WWW.
  • Utrzymaj koszt poniżej 1000 USD

Dane techniczne:

  • Musi mieć co najmniej jeden terabajt pamięci
  • Musi mieć nadmiarowość danych (RAID lub coś podobnego)
  • Musi być w stanie zastąpić mój obecny starzejący się serwer kontroli kodu źródłowego

Projekt:

  • FreeBSD 7.2 (ewentualnie do aktualizacji do wersji 8.0).
  • System operacyjny znajduje się na własnym dysku rozruchowym, w tym przypadku na jednym dysku IDE
  • Dane są przechowywane na sześciu dyskach SATA.

Używamy ZFS jako systemu plików, ponieważ uzyskał on tak pozytywne recenzje. ZFS wymaga prawie 64-bitowego systemu operacyjnego i lubi dużo pamięci, więc powinienem uzyskać minimum 4 Gb

Sprzęt komputerowy:

Oprogramowanie: FreeBSD 7,2 - 1 @ 0,00 $ http://www.freebsd.org/

Całkowity koszt: 874,81 USD

Konfiguracja sprzętu: Podstawowa wersja komputera z trzema drobnymi problemami.

  1. Sprawa, którą kupiłem, miała gniazda na 6 dysków twardych i dwie wnęki 3.5. Zakładałem, że IDE może zmieścić się w jednej z 3.5 zatok. To było złe założenie i nie było żadnego rozsądnego sposobu, aby to zadziałało. Poszedłem do Fry's i kupiłem adapter za około 17,00 $ i wszystko działało dobrze.

  2. Kupione przeze mnie kable Sata miały złącza 90 stopni, co było miłe, poza sześcioma dyskami nie było sposobu, aby wykonać pracę. Podłączenie jednego kabla spowodowało, że nieelastyczna część złącza zawiesiła się na następnym dysku twardym. Musiałem iść do Fry'ego i 5 zwykłymi kablami SATA. Niestety te, które kupiłem w Newegg, były tak tanie, że nie warto ich odsyłać.

  3. Obudowa skierowana jest z tyłu dysków twardych w bok obudowy, a kable zasilające z zasilacza mają sztywne złącze, które wystaje poza krawędź obudowy. To nie pozwoliło mi zsunąć bocznej osłony z powrotem na miejsce. Musiałem się trochę z tym pobawić, aby go uruchomić, i ostatecznie skończyło się na tym, że dwa modułowe kable zasilające (mają po cztery wtyczki SATA na każdym) przeplatane między dyskami, tak że pierwsze dyski zasilane kablem 0, 2 i 4, a drugi zasilany 1, 3 i 5. To pozwoliło na wystarczającą elastyczność, że mogłem je rozpiąć.

Konfiguracja systemu operacyjnego:

  1. Nagrano ISO FreeBSD 7.2 na CD. Mógłbym użyć pojedynczego DVD, ale nie miałem żadnego leżącego w pobliżu.

  2. Nagrano memtest86 + ( http://www.memtest.org/ ) na płycie CD.

  3. Podłączyłem świeżo zbudowany komputer i przeszedłem do biografii, aby upewnić się, że widział wszystkie 7 napędów i DVD-ROM. Tak się stało. Zmieniono kolejność uruchamiania, aby CDROM był pierwszy.

  4. Włóż płytę memtest86 + CD do świeżo zbudowanego komputera, uruchomiłem ponownie i pozwól mu działać przez noc. Przeszedł bez błędów.

  5. Zainstalowałem FreeBSD 7.2, jeśli nie jesteś tego zaznajomiony, polecam lekturę: http://www.freebsd.org/doc/en/books/handbook/install.html Wyjaśnia, co należy zrobić, niż ja mogą. Oto moje określone ustawienia:

    • Wykonano instalację standardową
    • Używał całego dysku IDE dla systemu operacyjnego
      • użył domyślnego układu systemu plików
      • pozostawiono 6 dysków SATA nietkniętych
    • Deweloper instaluje bez X-Windowsa, ponieważ pudełko będzie bezgłowe
    • System nie jest klientem ani serwerem NFS
    • FTP i inetd wyłączone
    • SSH dozwolone
    • Nie dodano żadnych pakietów (zostaną dodane później).
    • Dodano jednego użytkownika
  6. Po instalacji i ponownym uruchomieniu zauważyłem, że wykryto tylko 4 z 6 napędów SATA. Poszedłem do BIOS-u i pod zintegrowanymi urządzeniami peryferyjnymi zmieniłem typ OnChip SATA na AHCI, a typ OnChip SATA typ 4/5 na „SATA” Zapisano ustawienia i uruchomiono ponownie.

  7. W tym momencie FreeBSD wykrył wszystkie sześć dysków jako: ad4 ad6 ad8 ad10 ad12 ad14

  8. Pobierz najnowszą wersję z cvs za pomocą csup: csup -g -L 2 stable-supfile Edytowałem już plik, aby użyć hosta: cvsup11.us.FreeBSD.org, pozostawiając wszystkie inne informacje bez zmian.

  9. Odbudowałem i zainstalowałem najnowsze jądro i świat, jak opisano tutaj: http://www.freebsd.org/doc/en/books/handbook/makeworld.html Dostosuj moje jądro (patrz ZFSNAS). Wyłączyłem duży zestaw urządzeń, ponieważ nigdy nie planuję używać SCSI, USB, PCMCIA, Szeregowego, Równoległego itp., Dodałem następujące elementy do /etc/make.conf: CPUTYPE = athlon64 CFLAGS = -O2 -fno-strict-aliasing -pipe make -j8 buildworld

Konfiguracja NAS:

  1. Utwórz pulę ZFS dla naszego magazynu: zpool utwórz magazyn raidz2 ad4 ad6 ad8 ad10 ad12 ad14

  2. Utwórz domowy system plików na nowo utworzonej pamięci:

    zfs create storage/home
    cp -rp /home/* storage/home
    rm -rf /home /usr/home
    zfs set mountpoint=/home storage/home
    
  3. edytuj /etc.rc/conf i dodaj:

    zfs_enable="YES"
    

    To instaluje systemy plików ZFS podczas uruchamiania.

  4. Utworzono katalogi root, samba i perforce

    zfs create storage/root
    cp -rp /root/* storage/root
    rm -rf /root 
    zfs set mountpoint=/root storage/root
    zfs create storage/fileshare
    zfs create storage/perforce
    

    O ile nie potrzebujesz więcej systemów plików w swojej puli, prawie skończyłeś z częścią ZFS. Aby uzyskać więcej informacji, zobacz: http://www.freebsd.org/doc/en/books/handbook/filesystems-zfs.html http://opensolaris.org/os/community/zfs/docs/zfsadmin.pdf

Zainstalowane porty:

/usr/ports/shells/bash
    make install
/usr/ports/editors/vim
    make install
/usr/ports/net/samba33
    make
    make install
    // Use all defaults un-check cups.
/usr/ports/devel/perforce
    make
    make install PERFORCE_PORT=XXXX PERFORCE_USER=p4user PERFORCE_GROUP=p4
    rm -rf /usr/local/perforce
    cd /storage/perforce/
    mkdir root
    mkdir log
    chown p4user:p4user *
    cd /storage
    chown p4user:p4user perforce 

Edited /usr/local/etc/perforce.conf as follows:
    #
    # Perforce FreeBSD configuration file
    #
    #
    # $FreeBSD: ports/devel/perforce/files/perforce.conf.in,v 1.3 2005/01/18 15:43:36 lth Exp $

    #
    # Perforce ROOT
    #
    PERFORCE_ROOT="/storage/perforce/root"

    #
    # Perforce user (it is recommended to run p4d as a non-root user)
    #
    PERFORCE_USER="p4user"

    #
    # p4d/p4p port (default: 1666)
    #
    PERFORCE_PORT="XXXX"

    #
    # p4p cache directory
    #
    PERFORCE_PROXY_CACHE="/usr/local/perforce/cache"

    #
    # p4p target server (default: perforce:1666)
    #
    PERFORCE_PROXY_TARGET="perforce:1666"

    #
    # p4d options (see man p4d)
    #
    PERFORCE_OPTIONS="-d -p $PERFORCE_PORT -v server=1 -L /storage/perforce/logs/p4d.log"

    #
    # Uncomment this line to have the server started automatically
    #
    PERFORCE_START=yes

Dodano użytkowników:

user1
user2

Grupy utworzone:

sambashare
    Added user1 and user2 as members

chgrp sambashare /storage/fileshare
chmod 775 /storage/fileshare
chmod g+s /storage/fileshare

Konfiguracja Samby:

Samba configuration file:
#################
    [global]
       workgroup = USERLAN
       server string = ZFS NAS
       security = user
       hosts allow = 192.168.1. 127.
       log file = /usr/local/samba/var/log.%m
       max log size = 50
       passdb backend = tdbsam
       dns proxy = no

    [user1share]
       comment = user1 share
       path = /storage/fileshare
       valid users = user1 user2
       public = no
       writable = yes
       printable = no
       create mask = 0765
#################

pdbedit -a -u user1 
    # followed prompts
pdbedit -a -u user2 
    # followed prompts

Fantastyczna odpowiedź! Głosuj ... sprawdź!
Mei

5
  • Czy można uruchomić z ZFS? (Chciałbym?)

Nie widzę powodu, dla którego chciałbyś, sądzę, że obsługa Snapshot jest wystarczająco dojrzała w OpenSolarisa, abyś mógł przełączyć się z powrotem na starszą wersję i uruchomić ją (ale to właściwie tylko zgadywanie).

  • Jak łatwo jest dodać dysk?

Dodać jak w rozwinąć basen w paski? Po prostu dodaj dysk do puli, to wszystko. Zastanów się, jakie będą konsekwencje twojego następnego pytania.

  • Jak dobrze radzi sobie z dyskami o różnych rozmiarach?

Możesz użyć go jako paska i powiedzieć ZFS, aby zachował n kopii pliku. Abyś mógł korzystać z pełnej dostępnej przestrzeni dyskowej i nadal uzyskać przyzwoitą redundancję

  • Czy możesz dodawać nowe dyski w locie (a przynajmniej po prostu po ponownym uruchomieniu)?

Zastępowanie urządzeń w puli pamięci Myślę, że jest to zalecane rozwiązanie, najprostszym sposobem, aby dowiedzieć się, jak dobrze działa to we FreeBSD, jest prawdopodobnie próba.

  • Czy lepiej byłoby mi służyć czymś z półki?

Czy zastanawiałeś się nad wydaniem FreeNAS (Roadmap) 0.70 i będzie on obsługiwał ZFS.

Zaoszczędzisz sobie kłopotów ze strukturą i uzyskasz stosunkowo przyjemne w użyciu GUI za darmo.


Używam FreeNAS 0.7RC1, a konfiguracja za pomocą ZFS to pestka.
Joseph

3

Mam serwery z FreeBSD + ZFS (w wersji 7.2-STABLE i 8.0-CURRENT), a nie w produkcji.

Ładowanie z ZFS opisano tutaj http://lulf.geeknest.org/blog/freebsd/Setting_up_a_zfs-only_system/

Dodawanie dysków w locie jest tak proste, jak pisanie „zpool add mypool da7”, zaraz potem można użyć nowego dysku; możesz także dodać całą masę napędów w paski, lustro, raidz (ulepszony raid-5) lub raidz2 (ulepszony raid-6)

Dyski o różnych rozmiarach można umieszczać w puli, ale nie można ich używać w trybie lustrzanym / paskowym / rajdowym (o ile dobrze pamiętam, wtedy będzie można użyć tylko najmniejszej przestrzeni na dysku twardym)

(Otwarte) Solaris ma obsługę ZFS od razu po wyjęciu z pudełka



Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.