Przewodnik dotyczący instalowania i używania ZFS w CentOS 7

ZFS, krótka forma Zettabyte Filesystem to zaawansowany i wysoce skalowalny system plików. Został pierwotnie opracowany przez Sun Microsystems i jest teraz częścią projektu OpenZFS. Przy tak wielu systemach plików dostępnych na Linuksie, całkiem naturalne jest pytanie, co jest specjalnego w ZFS. W przeciwieństwie do innych systemów plików, nie jest to tylko system plików, ale także menedżer woluminów logicznych. Niektóre cechy ZFS, które sprawiają, że jest popularny:

  • Integralność danych - spójność i integralność danych zapewniają techniki kopiowania przy zapisie i sumy kontrolnej
  • Łączenie przestrzeni dyskowej - dostępne dyski pamięci masowej można połączyć w jedną pulę o nazwie zpool
  • Software RAID - Konfigurowanie tablicy raidz jest tak proste jak wydawanie pojedynczego polecenia.
  • Wbudowany menedżer woluminu - ZFS działa również jako menedżer wolumenu.
  • Snaphoty, klony, kompresja - oto niektóre z zaawansowanych funkcji, które zapewnia ZFS.

ZFS jest systemem plików 128-bit i ma możliwość przechowywania bajtów Zetta 256! W tym przewodniku dowiemy się, jak zainstalować, skonfigurować, a także używać niektórych ważnych poleceń ZFS na serwerze CentOS 7.

UWAGA: Część instalacyjna jest specyficzna dla serwera CentOS, podczas gdy polecenia są wspólne dla dowolnego systemu Linux

Terminologia

Zanim przejdziemy dalej, poznajmy niektóre z terminologii powszechnie używanej w ZFS.

pływacki

Logiczne grupowanie napędów pamięci. Jest to podstawowy element konstrukcyjny ZFS i stąd przestrzeń dyskowa jest przydzielana do zbiorów danych.

Zbiory danych

Składniki systemu plików ZFS, mianowicie system plików, klony, migawki i woluminy są nazywane zbiorami danych.

Lustro

Urządzenie wirtualne przechowujące identyczne kopie danych na dwóch lub więcej dyskach. W sytuacjach, gdy jeden dysk ulegnie awarii, te same dane są dostępne na innych dyskach tego lustra.

Resilvering

Proces kopiowania danych z jednego dysku na drugi w przypadku przywrócenia urządzenia.

Zarośla

Scrub jest używany do sprawdzania spójności w ZFS, np. W jaki sposób fsck jest używany w innych systemach plików

Instalowanie ZFS

Aby zainstalować ZFS w CentOS, musimy najpierw skonfigurować repozytorium EPEL do obsługi pakietów, a następnie repozytorium ZFS, aby zainstalować wymagane pakiety ZFS.

Uwaga: Proszę prefiksuj sudo do wszystkich poleceń, jeśli nie jesteś rootem.

yum localinstall -nogpgcheck http://epel.mirror.net.in/epel/7/x86_64/e/epel-release-7-5.noarch.rpm

yum localinstall -nogpgcheck http://archive.zfsonlinux.org/epel/zfs-release.el7.noarch.rpm

Teraz zainstaluj pakiety rozwojowe kernela i zfs. Pakiety rozwojowe jądra są potrzebne, ponieważ ZFS jest budowany jako moduł i wstawiany do jądra.

yum zainstaluj kernel-devel zfs

Sprawdź, czy moduł zfs został wstawiony do jądra za pomocą polecenia "lsmod", a jeśli nie, włóż to ręcznie za pomocą komendy "modprobe".

[root @ li1467-130 ~] # lsmod | grep zfs

[root @ li1467-130 ~] # modprobe zfs

[root @ li1467-130 ~] # lsmod | grep zfs
zfs 2790271 0
zunicode 331170 1 zfs
zavl 15236 1 zfs
zcommon 55411 1 zfs
znvpair 89086 2 zfs, zcommon
spl 92029 3 zfs, zcommon, znvpair

Sprawdźmy, czy jesteśmy w stanie użyć poleceń zfs:

[root @ li1467-130 ~] # lista zfs
brak dostępnych zestawów danych

Administracja

ZFS ma dwa główne narzędzia: zpool i zfs. Podczas gdy zpool zajmuje się tworzeniem i utrzymywaniem pul przy użyciu dysków, narzędzie zfs jest odpowiedzialne za tworzenie i utrzymywanie zbiorów danych.

Narzędzie zpool

Tworzenie i niszczenie pul

Najpierw sprawdź dostępne dyski, aby utworzyć pulę pamięci.

[root @ li1467-130 ~] # ls -l / dev / sd *
brw-rw-- 1 root disk 8, 0 Mar 16 08: 12 / dev / sda
brw-rw-- 1 root disk 8, 16 Mar 16 08: 12 / dev / sdb
brw-rw-- 1 root disk 8, 32 Mar 16 08: 12 / dev / sdc
brw-rw-- 1 root disk 8, 48 Mar 16 08: 12 / dev / sdd
brw-rw-- 1 root disk 8, 64 Mar 16 08: 12 / dev / sde
brw-rw-- 1 root disk 8, 80 Mar 16 08: 12 / dev / sdf

Utwórz pulę z zestawu dysków.

zpool create <option> <nazwa puli. <napęd 1> <napęd 2> .... <napęd n>

[root @ li1467-130 ~] # zpool create -f zfspool sdc sdd sde sdf

Komenda "zpool status" wyświetla status dostępnych pul

[root @ li1467-130 ~] # status zpool
basen: zfspool
stan: ONLINE
scan: none requested requested
config:

NAME STAD CZYTAĆ NAPISZ CKSUM
zfspool ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
sdf ONLINE 0 0 0

błędy: brak znanych błędów danych

Sprawdź, czy tworzenie puli powiodło się.

[root @ li1467-130 ~] # df -h
Rozmiar systemu plików Wykorzystany Użyj% zamontowany na
/ dev / sda 19G 1.4G 17G 8% /
devtmpfs 488M 0 488M 0% / dev
tmpfs 497M 0 497M 0% / dev / shm
tmpfs 497M 50M 447M 11% / run
tmpfs 497M 0 497M 0% / sys / fs / cgroup
tmpfs 100M 0 100M 0% / run / user / 0
zfspool 3.7G 0 3.7G 0% / zfspool

Jak widać, zpool utworzył pulę o nazwie "zfspool" o rozmiarze 3.7 GB i również zamontował ją w / zfspool.

Aby zniszczyć pulę, użyj polecenia "zpool destroy"

zpool zniszcz <nazwa puli>

[root @ li1467-130 ~] # zpool destroy zfspool
[root @ li1467-130 ~] # status zpool
brak dostępnych pul

Spróbujmy teraz stworzyć prostą pulę lustrzaną.

zpool create <opcja> <nazwa puli> mirror <dysk 1> <dysk 2> ... <dysk n>

Możemy również tworzyć wiele kopii lustrzanych jednocześnie, powtarzając słowo kluczowe mirror, a następnie dyski.

[root @ li1467-130 ~] # zpool create -f mpool mirror sdc sdd mirror sde sdf
[root @ li1467-130 ~] # status zpool
basen: mpool
stan: ONLINE
scan: none requested requested
config:

NAME STAD CZYTAĆ NAPISZ CKSUM
mpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
mirror-1 ONLINE 0 0 0
sde ONLINE 0 0 0
sdf ONLINE 0 0 0

błędy: brak znanych błędów danych

W powyższym przykładzie stworzyliśmy pule lustrzane, każda z dwoma dyskami.

Podobnie możemy stworzyć pulę raidz.

[root @ li1467-130 ~] # zpool create -f rpool raidz sdc sdd sde sdf
[root @ li1467-130 ~] # status zpool
Basen: rpool
stan: ONLINE
scan: none requested requested
config:

NAME STAD CZYTAĆ NAPISZ CKSUM
rpool ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
sdf ONLINE 0 0 0

błędy: brak znanych błędów danych

Zarządzanie urządzeniami w pulach ZFS

Po utworzeniu puli można dodawać lub usuwać gorące części zapasowe i urządzenia pamięci podręcznej z puli, dołączać lub odłączać urządzenia od lustrzanych pul i zastępować urządzenia. Ale nie nadmiarowe i raidz nie można usunąć z puli. Zobaczymy, jak wykonać niektóre z tych operacji w tej sekcji.

Najpierw tworzę pulę o nazwie "testpool" składającą się z dwóch urządzeń: sdc i sdd. Następnie do tego zostanie dodane inne urządzenie sde.

[root @ li1467-130 ~] # zpool create -f testpool sdc sdd

[root @ li1467-130 ~] # zpool add testpool sde
[root @ li1467-130 ~] # status zpool
basen: testpool
stan: ONLINE
scan: none requested requested
config:

NAME STAD CZYTAĆ NAPISZ CKSUM
testpool ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0

błędy: brak znanych błędów danych

Jak wspomniano wcześniej, nie mogę usunąć tego nowo dodanego urządzenia, ponieważ nie jest to zbędna lub raidzowa pula.

[root @ li1467-130 ~] # zpool usuń testpool sde
nie można usunąć sde: można wyłączyć tylko nieaktywne hot spare, cache, najwyższy poziom lub urządzenia logu

Ale mogę dodać dysk zapasowy do tej puli i usunąć go.

[root @ li1467-130 ~] # zpool add test spare spare sdf
[root @ li1467-130 ~] # status zpool
basen: testpool
stan: ONLINE
scan: none requested requested
config:

NAME STAD CZYTAĆ NAPISZ CKSUM
testpool ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
części zamienne
sdf AVAIL

błędy: brak znanych błędów danych
[root @ li1467-130 ~] # zpool remove testpool sdf
[root @ li1467-130 ~] # status zpool
basen: testpool
stan: ONLINE
scan: none requested requested
config:

NAME STAD CZYTAĆ NAPISZ CKSUM
testpool ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0

błędy: brak znanych błędów danych

Podobnie możemy użyć polecenia dołączania, aby dołączyć dyski do puli lustrzanej lub nie dublowanej i odłączyć polecenie, aby odłączyć dyski od puli lustrzanej.

zpool attach <opcje> <nazwa puli> <urządzenie> <nowe urządzenie>

zpool odłącz <nazwa puli> <urządzenie>

Gdy urządzenie ulegnie awarii lub ulegnie uszkodzeniu, możemy je zastąpić za pomocą polecenia "zamień".

zpool replace <opcje> <nazwa puli> <urządzenie> <nowe urządzenie>

Testujemy to przez wymuszone uszkodzenie urządzenia w konfiguracji lustrzanej.

[root @ li1467-130 ~] # zpool create -f testpool mirror sdd sde

Tworzy to pulę lustrzaną zawierającą dyski sdd i sde. Teraz, celowo zniszczmy napęd sdd, wpisując w nim zera.

[root @ li1467-130 ~] # dd if = / dev / zero of = / dev / sdd
dd: zapis na "/ dev / sdd": Na urządzeniu nie ma już miejsca
2048001 + 0 rejestruje się w
2048000 + 0 nagrywa
Liczba kopii 1048576000 (1.0 GB), 22.4804 s, 46.6 MB / s

Do wykrywania tego uszkodzenia użyjemy polecenia "scrub".

[root @ li1467-130 ~] # zpool scrub testpool
[root @ li1467-130 ~] # status zpool
basen: testpool
stan: ONLINE
status: Nie można użyć jednego lub więcej urządzeń, ponieważ brakuje etykiety lub
nieważny. Występuje wystarczająca liczba replik do kontynuowania puli
funkcjonowanie w stanie zdegradowanym.
Działanie: Wymień urządzenie, używając "zpool replace".
patrz: http://zfsonlinux.org/msg/ZFS-8000-4J
scan: Peeling naprawiony 0 w 0h0m z błędami 0 na Fri Mar 18 09: 59: 40 2016
config:

NAME STAD CZYTAĆ NAPISZ CKSUM
testpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sdd UNAVAIL 0 0 0 uszkodzone dane
sde ONLINE 0 0 0

błędy: brak znanych błędów danych

Zamienimy teraz sdd na sdc.

[root @ li1467-130 ~] # zpool zamień testpool sdd sdc; status zpool
basen: testpool
stan: ONLINE
scan: resilvered 83.5K w 0h0m z błędami 0 na Fri Mar 18 10: 05: 17 2016
config:

NAME STAD CZYTAĆ NAPISZ CKSUM
testpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
zastępowanie - 0 UNAVAIL 0 0 0
sdd UNAVAIL 0 0 0 uszkodzone dane
sdc ONLINE 0 0 0
sde ONLINE 0 0 0

błędy: brak znanych błędów danych

[root @ li1467-130 ~] # status zpool
basen: testpool
stan: ONLINE
scan: resilvered 74.5K w 0h0m z błędami 0 na Fri Mar 18 10: 00: 36 2016
config:

NAME STAD CZYTAĆ NAPISZ CKSUM
testpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sdc ONLINE 0 0 0
sde ONLINE 0 0 0

błędy: brak znanych błędów danych

Migracja basenów

Możemy migrować pule pamięci między różnymi hostami za pomocą poleceń eksportu i importu. W tym celu dyski używane w puli powinny być dostępne z obu systemów.

[root @ li1467-130 ~] # zpool export testpool
[root @ li1467-130 ~] # status zpool
brak dostępnych pul

Polecenie "zpool import" zawiera listę wszystkich pul, które są dostępne do importowania. Wykonaj to polecenie z systemu, w którym chcesz zaimportować pulę.

[root @ li1467-131 ~] # zpool import
basen: testpool
id: 3823664125009563520
stan: ONLINE
akcja: Pula może zostać zaimportowana przy użyciu jej nazwy lub identyfikatora numerycznego.
config:

testpool ONLINE
sdc ONLINE
sdd ONLINE
sde ONLINE

Teraz zaimportuj wymaganą pulę

[root @ li1467-131 ~] # zpool import testpool
[root @ li1467-131 ~] # status zpool
basen: testpool
stan: ONLINE
scan: none requested requested
config:

NAME STAD CZYTAĆ NAPISZ CKSUM
testpool ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0

błędy: brak znanych błędów danych

iostat

Można zweryfikować statystyki io ​​urządzeń puli za pomocą komendy iostat.

[root @ li1467-130 ~] # zpool iostat -v testpool
przepustowość operacji przepustowości
przydział puli wolne czytać pisać czytaj pisz
---- - - - - - -
testpool 1.80M 2.86G 22 27 470K 417K
sdc 598K 975M 8 9 200K 139K
sdd 636K 975M 7 9 135K 139K
sde 610K 975M 6 9 135K 139K
---- - - - - - -

Narzędzie zfs

Przejdziemy teraz do narzędzia zfs. Tutaj przyjrzymy się, jak tworzyć, niszczyć zbiory danych, kompresję systemu plików, przydziały i migawki.

Tworzenie i niszczenie systemu plików

System plików ZFS można utworzyć za pomocą polecenia zfs create

zfs utworzy <system plików>

[root @ li1467-130 ~] # zfs create testpool / students
[root @ li1467-130 ~] # zfs create testpool / professors
[root @ li1467-130 ~] # df -h
Rozmiar systemu plików Wykorzystany Użyj% zamontowany na
/ dev / sda 19G 1.4G 17G 8% /
devtmpfs 488M 0 488M 0% / dev
tmpfs 497M 0 497M 0% / dev / shm
tmpfs 497M 50M 447M 11% / run
tmpfs 497M 0 497M 0% / sys / fs / cgroup
testpool 2.8G 0 2.8G 0% / testpool
tmpfs 100M 0 100M 0% / run / user / 0
testpool / studenci 2.8G 0 2.8G 0% / testpool / studenci
testpool / profesorowie 2.8G 0 2.8G 0% / testpool / profesorowie

Z powyższego wyniku należy zauważyć, że chociaż nie podano punktu podłączenia w momencie tworzenia systemu plików, punkt montowania jest tworzony przy użyciu tej samej relacji ścieżki, co w puli.

zfs create pozwala na użycie -o z tym, przy pomocy którego możemy określić opcje takie jak mountpoint, compression, quota, exec itp.

Można wyświetlić listę dostępnych systemów plików przy użyciu listy zfs:

[root @ li1467-130 ~] # lista zfs
NAZWA UŻYWANA NADAJE SIĘ ODBIERAĆ MOUNTPOINT
testpool 100M 2.67G 19K / testpool
testpool / profesorowie 31K 1024M 20.5K / testpool / profesorowie
testpool / studenci 1.57M 98.4M 1.57M / testpool / studenci

Możemy zniszczyć system plików za pomocą opcji niszczenia

Zfs zniszcz <system plików>

Kompresja

Teraz zrozumiemy, jak działa kompresja w ZFS. Zanim zaczniemy używać kompresji, musimy ją włączyć za pomocą "kompresji zestawu"

zfs set <compression = value> <system plików | volume | snapshot>

Po wykonaniu tej czynności kompresja i dekompresja odbywa się w systemie plików w locie w sposób przezroczysty.

W naszym przykładzie włączam kompresję w katalogu studentów przy użyciu algorytmu kompresji lz4.

[root @ li1467-130 ~] # zfs set compression = lz4 testpool / students

Teraz skopiuję plik o rozmiarze 15M do tego systemu plików i sprawdzam rozmiar po skopiowaniu.

[root @ li1467-130 /] # cd / var / log
[root @ li1467-130 log] # du -h secure
15M bezpieczne

[root @ li1467-130 ~] # cp / var / log / secure / testpool / students /

[root @ li1467-130 students] # ​​df -h.
Rozmiar systemu plików Wykorzystany Użyj% zamontowany na
testpool / studenci 100M 1.7M 99M 2% / testpool / studenci

Zwróć uwagę, że rozmiar używany w systemie plików to tylko 1.7M, a rozmiar pliku to 15M. Możemy również sprawdzić współczynnik kompresji.

[root @ li1467-130 ~] # zfs get compressratio testpool
ŹRÓDŁO ZMIAN WŁASNOŚCI
testpool compressratio 9.03x -

Kwoty i rezerwacja

Pozwól mi wyjaśnić kwoty z rzeczywistym przykładem życia. Załóżmy, że na uniwersytecie istnieje wymóg ograniczenia przestrzeni dyskowej używanej przez system plików dla profesorów i studentów. Załóżmy, że musimy wyznaczyć 100MB dla studentów i 1GB dla profesorów. Możemy wykorzystać "kwoty" w ZFS, aby spełnić ten wymóg. Przydziały zapewniają, że ilość miejsca na dysku używanego przez system plików nie przekracza ustawionych limitów. Rezerwacja pomaga w przydzieleniu i zagwarantowaniu, że wymagana ilość miejsca na dysku jest dostępna dla systemu plików.

zfs set quota = <wartość> <system plików | wolumin | migawka>

zfs set reservation = <wartość> <system plików | volume | snapshot>

[root @ li1467-130 ~] # zfs set quota = 100M testpool / studenci
[root @ li1467-130 ~] # zfs set reservation = 100M testpool / studenci
[root @ li1467-130 ~] # lista zfs
NAZWA UŻYWANA NADAJE SIĘ ODBIERAĆ MOUNTPOINT
testpool 100M 2.67G 19K / testpool
testpool / profesorowie 19K 2.67G 19K / testpool / profesorowie
testpool / studenci 1.57M 98.4M 1.57M / testpool / studenci

[root @ li1467-130 ~] # zfs set quota = 1G testpool / professors
[root @ li1467-130 ~] # lista zfs
NAZWA UŻYWANA NADAJE SIĘ ODBIERAĆ MOUNTPOINT
testpool 100M 2.67G 19K / testpool
testpool / profesorowie 19K 1024M 19K / testpool / profesorowie
testpool / studenci 1.57M 98.4M 1.57M / testpool / studenci

W powyższym przykładzie przydzieliliśmy 100MB dla studentów i 1GB dla profesorów. Obserwuj kolumnę "AVAIL" w "liście zfs". Początkowo miały one rozmiar 2.67GB i po ustawieniu limitu wartości zmieniły się odpowiednio.

Migawki

Migawki są tylko do odczytu kopią systemu plików ZFS w danym momencie. Nie zużywają dodatkowej przestrzeni w puli zfs. Możemy powrócić do tego samego stanu na późniejszym etapie lub wyodrębnić tylko jeden lub zestaw plików zgodnie z wymaganiami użytkownika.

Teraz utworzę katalogi i plik pod "/ testpool / professors" z naszego poprzedniego przykładu, a następnie zrobię migawkę tego systemu plików.

[root @ li1467-130 ~] # cd / testpool / professors /

[root @ li1467-130 professors] # mkdir matematyka chemia fizyczna

[root @ li1467-130 professors] # cat> qpaper.txt
Papier do dyskusji na rok 2016-17
[root @ li1467-130 professors] # ls -la
Razem 4
drwxr-xr-x Korzeń główny 5 6 Mar 19 10: 34.
drwxr-xr-x Korzeń główny 4 4 Mar 19 09: 59 ..
drwxr-xr-x Korzeń główny 2 2 Mar 19 10: chemia 33
drwxr-xr-x Korzeń główny 2 2 Mar 19 10: 32 matematyki
drwxr-xr-x Korzeń główny 2 2 Mar 19 10: fizyka 32
-rw-r-r- Korzeń główny 1 36 Mar 19 10: 35 qpaper.txt

Aby wykonać migawkę, użyj następującej składni:

migawka zfs <system plików | volume @ <snap >>

[root @ li1467-130 professors] # zfs snapshot testpool / professors @ 03-2016
[root @ li1467-130 professors] # zfs list -t snapshot
NAZWA UŻYWANA NADAJE SIĘ ODBIERAĆ MOUNTPOINT
testpool / professors @ 03-2016 0 - 20.5K -

Teraz usunę plik, który został utworzony i wydobędzie go z migawek

[root @ li1467-130 professors] # rm -rf qpaper.txt
[root @ li1467-130 professors] # ls
chemia matematyka chemii
[root @ li1467-130 professors] # cd .zfs
[root @ li1467-130 .zfs] # cd snapshot / 03-2016 /
[root @ li1467-130 03-2016] # ls
chemia matematyka fizyka qpaper.txt

[root @ li1467-130 03-2016] # cp -a qpaper.txt / testpool / professors /
[root @ li1467-130 03-2016] # cd / testpool / professors /
[root @ li1467-130 professors] # ls
chemia matematyka fizyka qpaper.txt

Usunięty plik powraca na swoje miejsce.

Możemy wyświetlić wszystkie dostępne migawki za pomocą listy zfs:

[root @ li1467-130 ~] # zfs list -t migawka
NAZWA UŻYWANA NADAJE SIĘ ODBIERAĆ MOUNTPOINT
testpool / professors @ 03-2016 10.5K - 20.5K -

Na koniec zniszczmy migawkę za pomocą polecenia zfs destroy:

Zfs zniszcz <system plików | volume @ <snap >>

[root @ li1467-130 ~] # zfs destroy testpool / professors @ 03-2016

[root @ li1467-130 ~] # zfs list -t migawka
brak dostępnych zestawów danych

Wnioski

W tym artykule nauczyłeś się instalować ZFS na CentOS 7 i używać podstawowych i ważnych poleceń z narzędzi zpool i zfs. To nie jest pełna lista. ZFS ma znacznie więcej możliwości i możesz je odkrywać dalej oficjalna strona.

Dodaj komentarz

Ta strona używa Akismet do redukcji spamu. Dowiedz się, jak przetwarzane są dane komentarza.

GTranslate Your license is inactive or expired, please subscribe again!