Co to jest ZFS i w jaki sposób? (+FreeNAS) | FN 2

W tym odcinku znajdziecie prawdziwe kompedium wiedzy na temat systemu plików ZFS. Tłumaczę, co takiego wyróżnia ZFS na tle konkurencji, kto powinien rozważyć wykorzystanie go, opowiadam nieco o historii i omawiam najciekawsze funkcje i właściwości. Na wszystko nie starczyło niestety czasu, gdyż jest to temat na długą książkę 🙂 Na początku odpowiadam na kilka pytań, które pojawiły się w związku z odcinkiem o budowie serwera plików z FreeNAS, który opublikowaliśmy jakiś czas temu pod banderą „Command Line”. Przytaczam też zagrożenia związane z bezpieczeństwem IT, jakie ujrzały światło dzienne od czasu nagrania poprzedniego odcinka.

Ten odcinek pomoże każdemu kto:

  • jeszcze o ZFS nie słyszał lub ZFS jedynie obił mu się o uszy, a chciałby się dowiedzieć więcej na temat tego nowoczesnego systemu plików,
  • interesuje się sposobami przechowywania danych czy planuje kupno lub budowę NASa,
  • zastanawia się nad korzystaniem z FreeNASa i chce wiedzieć, czy to dobry pomysł

W nawiązaniu do tematów poruszanych w odcinku pierwszym:

Lista fuck-upów związanych z bezpieczeństwem informacji, jakie doszły do mnie od czasu poprzedniego odcinka, czyli od dwóch tygodni:

  1. Wyciek danych z Ubera:
    • Informacje osobiste, imiona, numery telefonów, adresy email 57 mln użytkowników,
    • W tym 600 tyś kierowców, razem z numerami prawa jazdy,
    • Ukrywali to przez ponad rok,
    • Zapłacili hakerom 100 tys USD żeby pomóc zatrzeć ślady,
    • CEO Ubera powiedział, że to się nie powinno nigdy wydarzyć i że nie będzie nawet próbował szukać usprawiedliwień,
    • http://www.jupiterbroadcasting.com/120206/eggcellent-recommendations-user-error-36/
    • https://www.bloomberg.com/news/articles/2017-11-21/uber-concealed-cyberattack-that-exposed-57-million-people-s-data
    • https://www.uber.com/newsroom/2016-data-incident/
  2. Przez prawie 2 miesiące, w 2014, serwery rosyjskiego producenta antywirusów, firmy Kaspersky, odbierały ściśle tajne dane z kiepsko zabezpieczonego komputera Amerykańskiej Agencji Bezpieczeństwa, NSA. Antywirus po prostu wykrył zagrożenie i zaczął wysyłać do domu zarażone pliki w celu analizy i poprawy jakości. Co ciekawe, wirus był autorstwa organizacji pracującej dla NSA. Wpadli we własne sidła.
    • https://arstechnica.com/information-technology/2017/11/kaspersky-yes-we-obtained-nsa-secrets-no-we-didnt-help-steal-them/
  3. Google od początku 2017 kolekcjonowało dane na temat lokalizacji wszystkich urządzeń z Androidem, nawet, jeżeli karta SIM była wyjęta a usługi lokalizacji wyłączone. Twierdzą, że to dla poprawy jakości doręczania notyfikacji push ale jest to technicznie mało możliwe,
    • http://pocketnow.com/2017/11/22/google-collected-location-information-unaware-android-users
  4. OSX High Sierra – klikając na „kłódkę” wpisujemy login „root” i klikamy kilka razy enter. I jesteśmy rootem.

Notatki o ZFS:

  1. Co to jest ZFS?
    • System plików i zarządca dysków. Optymalnie wykorzystuje wszystkie dyski. Tradycyjny system plików mógł istnieć tylko w obrębie jednego dysku.
    • Pochodzi z Solarisa, przeniesiony na FreeBSD, Linuxa, OSX. Używany we FreeNAS.
    • Słownictwo:
      • Pula
      • Vdev
      • Dataset
    • Założenia:
      • To jest ostatni system jakiego potrzebujesz 🙂
      • Spójność danych. Nigdy nie zwróci złych danych
      • Dyski w jednej póli, która później jest wspólna dla konkretnych datasetów
      • Elastyczny w korzystaniu i skryptowalny.
      • Administracja może odbywać się bez wyłączania dostępu do puli
      • 128-bitowe wewnętrzne identyfikatory. Praktycznie nieograniczone rozmiary wszystkiego. For instance, fully populating a single zpool with 2128 bits of data would require 1024 3 TB hard disk drives.
  2. Licencje: Free vs open vs komercyjna
  3. Krótka historia
    • Wynaleziony w Sun dla Solaris, i otwarty 4 lata po powstaniu
    • Oracle kupuje Sun, zamyka zrodlo ZFS, powstaje fork – open ZFS
    • Open ZFS zrzesza porty na FreeBSD, Linux, od niedawna OSX
    • Fork jest bardziej funkcjonalny, niz wersja zamknieta
  4. Dla kogo i po co ten ZFS? Kiedy NAS z półki a kiedy FreeNAS? Różne licencje na software, darmowe vs wolne vs otwarte zrodlo.
  5. Funkcje/właściwości ZFS:
    • COW
    • Bardzo rozbudowane cacheowanie:
    • ZIL (ZFS intent log), SLOG (Separate intent log)- write cache do synchronicznych zapisow, np baza danych.
    • ARC – adaptacyjny cache odczytu, w RAM. Bardzo inteligentny. 64GB ARC in 32 GB/RAM 🙂
    • L2ARC
    • Scrub – odpowiednik fsck, scandisk. Dziala online na puli.
    • Scrub of death
    • Quota, rezerwacja
    • Resilvering – szybki, dzieki znajomosci zawartosci
    • Zarządzanie dyskami – najszybszy dysk dostaje najwiecej do zapisu. Im pełniejszy dysk, tym wolniejszy, więc z czasem obłożenie poszczególnych dysków się balansuje.
    • Boot enironment – rodem z Solaris, przeniesione fo FreeBSD
    • Sumy kontrolne trzymane w parent bloku, co separuje je fizycznie
    • Szyfrowanie i dlaczego True Crypt jest bee.
    • Kompresja LZ4, gzip. Przyspiesza!!! Szybka, ok 1GB/s/core. Dekompresja 1.8GB/s/core szybsza. 2:1 na kompresowalnych plikach. Kompresja sama się wyłącza, jeżel dany plik się nie kompresuje. Z-standard. Mocny jak GZIP ale bardzo szybki.
    • Dynamic block size: By default, the recordsize on ZFS is 128KiB, which means it will dynamically allocate blocks of any size from 512B to 128KiB depending on the size of file being written.
    • Hot spare
    • Deduplikacja, czy to działa?
    • Snapshot, send, receive
  6. Czym się różni RAID od RAID-Z?
    • Latwosc przeniesienia puli na inny hardware
    • Brak problemu dziury zapisu – operacja zapisu jest atomowa + COW
    • Na RAID system plików myśli, że działa na jednym dysku
    • Można tworzyć nowe datasety na jednej, wielkiej, współdzielonej puli. Nie musisz decydować z góry o rozmiarze partycji.
    • RAID z dystrybuuje informacje wg. Uznania, niekoniecznie na wszystkie dyski
    • Wyeliminowano problem read-modify-write przy zapisach na niepełny stripe, są tylko full-stripe write’y. Każdy blok to osobny stripe.
  7. Jaka maszyna?
    • FreeNAS zaleca 8GB Ram. Absolutne min – 1GB. Zalecane 1GB/TB. Deduplikacja – 5GB mem/1TB storage
    • Nowoczesny procesor
    • Pamięć ECC – czy jest potrzebna czy nie?
    • NAS to nie jest backup
  8. Czego nie robić?
    • Raid + ZFS
    • Striping bez redundancji
    • Więcej niż 80% zapełnienia
  9. Best practices:
    • A general consideration is whether your goal is to maximum disk space or maximum performance. A RAIDZ configuration maximizes disk space and generally performs well when data is written and read in large chunks (128K or more). A RAIDZ-2 configuration offers better data availability, and performs similarly to RAIDZ. RAIDZ-2 has significantly better mean time to data loss (MTTDL) than either RAIDZ or 2-way mirrors. A RAIDZ-3 configuration maximizes disk space and offers excellent availability because it can withstand 3 disk failures. A mirrored configuration consumes more disk space but generally performs better with small random reads. If your I/Os are large, sequential, or write-mostly, then ZFS’s I/O scheduler aggregates them in such a way that you’ll get very efficient use of the disks regardless of the data replication model. For better performance, use a mirror
    • Sun™ recommends no more than nine disks in a single vdev. If the configuration has more disks, it is recommended to divide them into separate vdevs and the pool data will be striped across them.
    • It is recommended that a scrub is run at least once every three months.
  10. ZFS ma w sobie 100 inżyniero-lat 🙂

Pomogli:

Paweł Malicki, Michał Kulling, koledzy z grupy FB SysOps/DevOps Polska, Allan Jude swoją pracą i podkastami.

Odcinek odpowiada na pytania zadane przez:

Blebleble Blablabla (YT, pytanie o TC), Marcin Pawłowicz (yt, prosba o pokazanie instalacji), skaniaPhotography (Freenas vs. NAS z półki)

Zasoby/Linki:

  • FreeBSD Mastery: ZFS, Allan Jude, Michael Lucas, https://www.amazon.com/FreeBSD-Mastery-ZFS-Book-ebook/dp/B00Y32OHNM
  • Arch wiki: https://wiki.archlinux.org/index.php/ZFS
  • Niezalecane praktyki: https://www.ixsystems.com/blog/freenas-worst-practices/
  • Terminologia: http://www.allanjude.com/bsd/zfs-term.html
  • Zalecane praktyki: http://maxim.int.ru/stuff/zfs/fmzfs%20twp%202015-05-21.pdf
  • Dokumentacja Arch: https://wiki.archlinux.org/index.php/ZFS
  • Dokumentacja FreeBSD: http://www.allanjude.com/bsd/zfs.html
  • Wiki: https://en.wikipedia.org/wiki/ZFS
  • Trochę o “zwykłym” RAID: http://www.infostor.com/index/articles/display/107505/articles/infostor/volume-5/issue-7/features/special-report/raid-revisited-a-technical-look-at-raid-5.html

Komentarze