Jak udostępnić objętości ZFS za pośrednictwem ISCSI

Jak udostępnić objętości ZFS za pośrednictwem ISCSI

Objętości ZFS to urządzenia do przechowywania bloków, które działają jak każde inne urządzenie pamięci (HDD/SSD). Możesz tworzyć tabele partycji, tworzyć nowe partycje, sformatować te partycje, tworzyć systemy plików i zamontować je na komputerze.

Możesz także udostępniać objętości ZFS za pośrednictwem protokołu ISCSI i uzyskać dostęp do nich ze zdalnych komputerów.

W tym artykule pokażę ci, jak udostępnić tomy ZFS za pośrednictwem ISCSI i uzyskać dostęp do nich ze zdalnych komputerów. Będę używać Ubuntu 20.04 LTS System operacyjny do demonstracji. Jednak kroki pokazane w tym artykule powinny również działać na innych rozkładach Linux z pewnymi korektami.

Zacznijmy.

Spis treści:

  1. Internetowy diagram
  2. Instalowanie TGT na serwerze ISCSI
  3. Instalowanie Open-ISCSI na kliencie ISCSI
  4. Tworzenie puli ZFS
  5. Tworzenie woluminów ZFS
  6. Tworzenie celów ISCSI
  7. Dodawanie objętości ZFS do celów ISCSI
  8. Konfigurowanie uwierzytelniania ISCSI (opcjonalnie)
  9. Generowanie konfiguracji serwera ISCSI
  10. Dostęp do wspólnych objętości ZFS za pośrednictwem ISCSI
  11. Automatycznie montaż wspólnych wolumenów ZFS za pośrednictwem ISCSI
  12. Wniosek
  13. Bibliografia

Internetowy diagram:

W tym artykule utworzę dwa Ubuntu 20.04 Komputery LTS: ISCSI-SERVER i ISCSI-CLIENT. Zainstaluję ZFS i oprogramowanie serwera ISCSI na komputer ISCSI-SERVER i skonfiguruj go tak, aby udostępniać objętości ZFS za pośrednictwem ISCSI.

Zainstaluję Oprogramowanie klienta ISCSI na komputer iSCSI-CLIENT i skonfiguruj go, aby uzyskuje dostęp do objętości ZFS wyeksportowanych z komputer ISCSI-Server przez ISCSI.

Cała konfiguracja jest wizualizowana na poniższym rysunku:

Instalowanie TGT na serwerze ISCSI:

W tej sekcji pokażę Ci, jak zainstalować pakiet serwera ISCSI TGT na komputerze ISCSI-Server.

Najpierw zaktualizuj pamięć podręczną repozytorium pakietów Apt w następujący sposób:

Aktualizacja $ sudo apt

Następnie zainstaluj pakiet TGT na komputerze ISCSI-Server za pomocą następującego polecenia:

$ sudo apt instal tgt -y

Jeśli nie masz już ZFS na komputerze ISCSI-Server, możesz zainstalować go za pomocą następującego polecenia:

$ sudo apt Zainstaluj Zfsutils -Linux -y

Instalowanie Open-ISCSI na kliencie ISCSI:

W tej sekcji pokażę ci, jak zainstalować pakiet klientów ISCSI Open-ISCSI na ISCSI-CLIENT komputer.

Najpierw zaktualizuj pamięć podręczną repozytorium pakietów Apt za pomocą następującego polecenia:

Aktualizacja $ sudo apt

Następnie zainstaluj Pakiet Open-ISCSI na komputer iSCSI-CLIENT Z następującym poleceniem:

$ sudo apt instinst instaluj otwarte

Tworzenie puli ZFS:

W przypadku demonstracji utworzę pulę ZFS, pulę1, na ISCSI-SERVER komputer za pomocą pamięć VDB i VDC urządzenia:

$ sudo lsblk -e7 -d

Utwórz pulę ZFS, pula 1, używając urządzeń pamięci VDB i VDC w konfiguracji lustrzanej w następujący sposób:

$ sudo zpool Utwórz -f pula 1 lustro vdb vdc

Na komputerze ISCSI-Server powinien być utworzony nową pulę ZFS.

Lista $ sudo zfs

Tworzenie tomów ZFS:

W tej sekcji pokażę ci, jak utworzyć ZFS Volumes Vol1 i Vol2 na Basen ZFS, basen1, abyś mógł je wyeksportować za pośrednictwem ISCSI.

Aby utworzyć objętość ZFS Vol1 o rozmiarze 1 GB na puli ZFS, pula 1, uruchom następujące polecenie:

$ sudo zfs Utwórz -v 1G puli1/vol1

Aby utworzyć objętość ZFS Vol2 o rozmiarze 2 GB w puli ZFS, Pool1, uruchom następujące polecenie:

$ sudo zfs Utwórz -v 2G puli1/vol2

ZFS VOLUMES VOL1 i VOL2 powinny być tworzone w puli ZFS, puli1.

Lista $ sudo zfs

Tworzenie celów ISCSI:

Cel ISCSI jest jak nazwany pojemnik. Możesz umieścić tam jeden lub więcej tomów ZFS. Po uzyskaniu dostępu do celu od innych komputerów, wszystkie tomy ZFS, które umieściłeś w tym pojemniku, zostaną zamontowane.

Nazwy docelowych ISCSI mają standardowy format:

IQN.-.:

Tutaj:

- Rok w 4-cyfrowym formacie. I.mi. 2021, 2018

- Miesiąc numeryczny w 2-cyfrowym formacie. Powinno znajdować się w zakresie 01-12. I.mi. 01 (dla stycznia), 08 (za sierpień), 12 (grudzień)

- W pełni kwalifikowana nazwa domeny w formacie odwrotnym. I.mi. ISCSI.Linuxhint.com powinien być napisany jako com.Linuxhint.ISCSI.

- Może to być wszystko wyjątkowe w twojej konfiguracji. Do konfiguracji małego domu i biura możesz użyć nazwy i nazwy puli ZFS i nazwy woluminu (I.mi., Pool1.Vol1, Pool1.Vol2) lub nazwa działu/oddziału (I.mi., Inżynieria.PC1, konto.PC2, inżynieria.US-1, konto.UK-2) klientów, którzy będą korzystać z tych wspólnych tomów. To powinno być wystarczająco wyjątkowe. W dużej firmie możesz użyć unikalnego UUID dla każdego celu.

W tej sekcji pokażę ci, jak stworzyć Dwa cele ISCSI: IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1 I IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2. W następnej sekcji pokażę, jak dodać tomy ZFS do tych celów.

Aby utworzyć ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1 i ustaw identyfikator 1 dla celu, uruchom następujące polecenie:

$ sudo tgtadm --lld iscsi --op new -Mode Target -Tid 1 - -celname iqn.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1

W ten sam sposób uruchom następujące polecenie, aby utworzyć ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2 i ustaw identyfikator 2 dla celu:

$ sudo tgtadm --lld iscsi --op new -Mode Target -Tid 2 - -TargetName IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2

Aby wymienić wszystkie utworzone cele, uruchom następujące polecenie:

$ sudo tgtadm --lld iscsi --op show -Mode Target

Utworzone cele powinny być wymienione, jak widać na zrzucie ekranu poniżej:

Dodawanie objętości ZFS do celów ISCSI:

Wolume ZFS, które dodasz do celu, są wywoływane Luns (jednostki logiczne).

Jak wspomniano wcześniej, możesz dodać jeden lub więcej objętości ZFS w celu ISCSI. Ale jeśli to zrobisz, gdy uzyskasz dostęp do celu z innych komputerów, wszystkie tomy ZFS, które dodałeś do tego celu, zostaną zamontowane. Tak więc, jeśli chcesz umożliwić dostęp do jednego Objętość ZFS na cel ISCSI, Dodaj tylko jeden objętość ZFS do jednego celu ISCSI.

W tej sekcji pokazuję, jak dodać objętości ZFS Vol1 i Vol2 do celów IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1 i IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2, odpowiednio.

Każdy z Luns w celu ISCSI ma identyfikator od 0. Więc pierwszy Lun nazywa się Lun 0. Następnie drugi Lun nazywa się Lun 1, podczas Trzeci Lun nazywa się Lun 2, i tak dalej.

Domyślnie, Lun 0 każdego ISCSI cel będzie zajęty przez kontroler ISCSI, jak pokazano na zrzucie ekranu poniżej. Więc będziesz musiał użyć Lun 1, Lun 2, i tak dalej, aby dodać objętości ZFS do celów ISCSI.

$ sudo tgtadm --lld iscsi --op show -Mode Target

Aby dodać ZFS Volume Vol1 z ZFS Pool Pool1 jako LUN 1 do celu docelowego 1 (IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1), Uruchom następujące polecenie:

$ sudo tgtadm --lld iscsi --op new-tryb logicalUnit-TID 1-lun 1--backing-sklep/dev/pula1/vol1

Aby dodać ZFS Volume Vol2 z Basen ZFS, pula 1, jako LUN 1 do docelowego id 2 (IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2), Uruchom następujące polecenie:

$ sudo tgtadm --lld iscsi --op new-tryb logicalUnit-Tid 2-lun 1--backing-sklep/dev/pula1/vol2

ZFS Volume Vol1 należy dodać do ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1 jako Lun 1, Jak zaznaczono w zrzucie ekranu poniżej:

$ sudo tgtadm --lld iscsi --op show -Mode Target

ZFS Volume Vol2 należy dodać do ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2 jako Lun 1, Jak zaznaczono w zrzucie ekranu poniżej:

Konfigurowanie uwierzytelniania ISCSI (opcjonalnie):

W tej sekcji pokażę, jak włączyć podstawową nazwę użytkownika i uwierzytelnianie hasła dla ISCSI celuje w IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1 I IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2.

Możesz z radością pominąć tę sekcję, jeśli nie chcesz włączyć uwierzytelnienia dla celów ISCSI.

Najpierw stwórz nowe Użytkownik ISCSI Linuxhint1 Z hasłem manekina 123456 (Będziesz musiał to zmienić później) z następującym poleceniem:

$ sudo tgtadm --lld ISCSI --P NOWOŚĆ -Konto Mode -User Linuxhint1 - -Password 123456

W ten sam sposób stwórz inną Użytkownik ISCSI Linuxhint2 Z hasłem manekina 456789 (Będziesz musiał to zmienić później) z następującym poleceniem:

$ sudo tgtadm --lld ISCSI --P NOWOŚĆ -Konto mode -User Linuxhint2 - -Password 456789

Użytkownicy ISCSI Linuxhint1 i Linuxhint2 należy utworzyć, jak widać na zrzucie ekranu poniżej:

$ sudo tgtadm --lld iscsi --op show -konto mode

Aby umożliwić tylko dostęp użytkownika Linuxhint1 do ISCSI Target ID 1 (IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1) Od zdalnych klientów ISCSI uruchom następujące polecenie:

$ sudo tgtadm --lld ISCSI --P BIND -Konto -Mode -TID 1 -User Linuxhint1

W ten sam sposób, aby umożliwić Użytkownik Linuxhint2 dostęp do ISCSI Target ID 2 (IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2) Od zdalnych klientów ISCSI uruchom następujące polecenie:

$ sudo tgtadm --lld ISCSI --P BIND -Konto -Mode -TID 2 -User Linuxhint2

Konto użytkownika Linuxhint1 należy dodać do ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1, Jak widać na zrzucie ekranu poniżej:

$ sudo tgtadm --lld iscsi --op show -Mode Target

Konto użytkownika Linuxhint2 należy również dodać do ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2, Jak widać na zrzucie ekranu poniżej:

Generowanie konfiguracji serwera ISCSI:

W tej sekcji pokażę, jak wygenerować plik konfiguracyjny dla serwera ISCSI, aby wprowadzone zmiany były trwałe i ponownie uruchomić system Survive.

Najpierw zezwól na dostęp do ISCSI Target ID 1 (IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1) Od dowolnego klienta ISCSI w następujący sposób:

$ sudo tgtadm --lld ISCSI --P BIND-MODE Target-TID 1-Initiator-Address All

W ten sam sposób pozwól na dostęp do ISCSI Target ID 2 (IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2) Od dowolnego klienta ISCSI w następujący sposób:

$ sudo tgtadm --lld ISCSI --P BIND-MODE Target-Tid 2-Initiator-Address All

Teraz zrzuć bieżącą konfigurację serwera ISCSI do pliku konfiguracyjnego serwera ISCSI /etc/tgt/cele.conf następująco:

$ sudo tgt-admin-dump | sudo tee/etc/tgt/cele.conf

Obecna konfiguracja serwera ISCSI powinna być zapisana do /etc/tgt/cele.conf plik.

Hasło użytkownika nie zostanie zapisane. Więc będziesz musiał wymienić Proszę_correct_the_password String z hasłem użytkownika w /etc/tgt/cele.plik CONF.

Otwórz plik konfiguracyjny serwera ISCSI /etc/tgt/cele.conf z edytorem tekstu Nano w następujący sposób:

$ sudo nano/etc/tgt/cele.conf

Wymień struny Proszę_correct_the_password Z odpowiednim hasłem użytkownika tutaj:

Dla Użytkownik Linuxhint1, Ustawę hasło Secret1 i dla Użytkownik Linuxhint2, Poniżej ustawię hasło Secret2, jak zaznaczono na zrzucie ekranu.

Po zakończeniu naciśnij + X, a następnie y i Aby uratować /etc/tgt/cele.plik CONF:

Aby zmiany zaczęły się uruchomić komputer ISCSI-SERVER:

$ sudo restart

Kiedyś Buty komputerowe ISCSI-SERVER, serwer ISCSI powinien być działany Port 3260, Jak pokazano na zrzucie ekranu poniżej:

$ sudo ss -tlpn

Dostęp do wspólnych objętości ZFS za pośrednictwem ISCSI:

Po ustawieniu serwer ISCSI na komputer ISCSI-SERVER, Możesz uzyskać dostęp do ZFS VOLUMES VOL1 i VOL2 przez ISCSI na komputerze iSCSI-klient.

Aby uzyskać dostęp do cele ISCSI z komputer ISCSI-SERVER, musisz znać adres IP komputer ISCSI-SERVER. W moim przypadku adres IP mojego komputer ISCSI-SERVER Jest 192.168.122.98. Będzie dla Ciebie inaczej. Dlatego upewnij się, że zastąpię go od teraz.

$ hostName -i

Aby odkryć wszystkie cele ISCSI z ISCSI-SERVER (adres IP 192.168.122.98), Uruchom następujące polecenie:

$ sudo ISCSIADM -Discovery -Mode -Type SendTargets -Portal 192.168.122.98

Jak widać, ISCSI celuje w IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1 i IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2 są wymienione.

Jeśli nie skonfigurowałeś uwierzytelnienia, powinieneś mieć dostęp do ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1 Z następującym poleceniem:

$ sudo ISCSIADM -MODE Węzeł - -celname iqn.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1 -Login

W ten sam sposób możesz uzyskać dostęp do ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2 Z następującym poleceniem:

$ sudo ISCSIADM -MODE Węzeł - -celname iqn.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2 -login

Jeśli włączyłeś uwierzytelnianie dla ISCSI celuje w IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1 i IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2, Powinieneś otrzymać komunikat o awarii autoryzacji, jak zaznaczono na zrzucie ekranu poniżej.

Aby skutecznie zalogować się do celów ISCSI z obsługą uwierzytelniania, ustaw metodę uwierzytelniania, nazwę użytkownika i hasło dla każdego celu ISCSI z obsługą uwierzytelniania.

Możesz ustawić metodę uwierzytelniania ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1 do rozdz Z następującym poleceniem:

$ sudo ISCSIADM -MODE Węzeł - -celname iqn.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1 --p aktualizacja -Node Node.sesja.Auth.AuthMethod --value Chap

Możesz ustawić nazwę użytkownika logowania ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1 do Linuxhint1 Z następującym poleceniem:

$ sudo ISCSIADM -MODE Węzeł - -celname iqn.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1 --p aktualizacja -Node Node.sesja.Auth.Nazwa użytkownika -wartość Linuxhint1

Możesz ustawić hasło logowania ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1 do Secret1 Z następującym poleceniem:

$ sudo ISCSIADM -MODE Węzeł - -celname iqn.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1 --p aktualizacja -Node Node.sesja.Auth.hasło -wartość secret1

Po zakończeniu konfigurowania metody uwierzytelniania, logowania nazwy użytkownika i hasła dla ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1, Powinieneś być w stanie z powodzeniem zalogować się do ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1:

$ sudo ISCSIADM -MODE Węzeł - -celname iqn.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1 -Login

Po pomyślnym zalogowaniu się do ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1, Nowy dysk SCSI powinien być przymocowany do komputer iSCSI-CLIENT. Uwaga, może być inaczej w twoim przypadku:

$ sudo dmesg | Grep -i dołączone

Jak widać, do nowego urządzenia pamięci SDA o rozmiarze 1 GB jest dodawane do ISCSI-CLIENT komputer. Jest to wolumen ZFS Vol1, który udostępniłeś za pośrednictwem ISCSI:

$ sudo lsblk -e7 -d

W ten sam sposób ustaw metodę uwierzytelniania ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2 do rozdz Z następującym poleceniem:

$ sudo ISCSIADM -MODE Węzeł - -celname iqn.2021-08.com.Linuxhint.ISCSI: Pool1.vol2 --p aktualizacja -węzeł nazwy.sesja.Auth.AuthMethod --value Chap

Ustaw nazwę użytkownika logowania ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2 do Linuxhint2 Z następującym poleceniem:

$ sudo ISCSIADM -MODE Węzeł - -celname iqn.2021-08.com.Linuxhint.ISCSI: Pool1.vol2 --p aktualizacja -węzeł nazwy.sesja.Auth.Nazwa użytkownika -wartość Linuxhint2

Ustaw hasło logowania ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2 do Secret2 Z następującym poleceniem:

$ sudo ISCSIADM -MODE Węzeł - -celname iqn.2021-08.com.Linuxhint.ISCSI: Pool1.vol2 --p aktualizacja -węzeł nazwy.sesja.Auth.hasło -wartość secret2

Zaloguj się do ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2 Z następującym poleceniem:

$ sudo ISCSIADM -MODE Węzeł - -celname iqn.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2 -Login

Powinieneś być w stanie z powodzeniem zalogować się do ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2:

Po pomyślnym zalogowaniu się do ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2, Nowy dysku SCSI SDB powinien być przymocowany do komputer iSCSI-CLIENT. Uwaga, może być inaczej w twoim przypadku.

$ sudo dmesg | Grep -i dołączone

Jak widać, do nowego urządzenia pamięci SDB rozmiaru 2 GB jest dodawane do komputer iSCSI-CLIENT. Jest to wolumen ZFS Vol2, który udostępniłeś za pośrednictwem ISCSI:

$ sudo lsblk -e7 -d

Automatycznie montaż wspólnych wolumenów ZFS za pośrednictwem ISCSI:

Aby automatycznie zalogować się do celu ISCSI, będziesz musiał ustawić węzeł.właściwość uruchamiania celu ISCSI do automatycznego.

Ustawić węzeł.nieruchomość startupowa z ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1 Aby automatycznie, uruchom następujące polecenie:

$ sudo ISCSIADM -MODE Węzeł - -celname iqn.2021-08.com.Linuxhint.ISCSI: Pool1.Vol1 --p aktualizacja -Node Node.Startup -wartość automatyczna

Ustawić węzeł.Własność uruchamiania ISCSI Target IQN.2021-08.com.Linuxhint.ISCSI: Pool1.Vol2 do automatycznego, Uruchom następujące polecenie:

$ sudo ISCSIADM -MODE Węzeł - -celname iqn.2021-08.com.Linuxhint.ISCSI: Pool1.vol2 --p aktualizacja -węzeł nazwy.Startup -wartość automatyczna

Wreszcie, włącz Usługa systemu Open-ISCSI Aby uruchamia się automatycznie w czasie rozruchu z następującym poleceniem:

$ sudo systemCtl włącza Open-ISCSI

Aby zmiany zaczęły się uruchomić komputer iSCSI-CLIENT Z następującym poleceniem:

$ sudo restart

Kiedyś Buty komputerowe ISCSI-CLIENT, Powinieneś zobaczyć Urządzenia pamięci SDA i SDB na komputer iSCSI-CLIENT Jak zaznaczono w zrzucie ekranu poniżej:

$ sudo lsblk -e7 -d

Wniosek:

W tym artykule pokazałem, jak tworzyć tomy ZFS i udostępniać je za pośrednictwem ISCSI. Pokazałem też, jak skonfigurować uwierzytelnianie dla celów ISCSI. Pokazałem ci, jak zdalnie zalogować się do celów ISCSI i uzyskać dostęp do wspólnych wolumenów ZFS.

Bibliografia:

[1] Ubuntu Manpage: TGTADM - Linux SCSI Cel Administration Narzędzie

[2] Ubuntu Manpage: TGT -Admin - Linux SCSI Cel Configuration Tool

[3] Ubuntu Manpage: ISCSIADM - Narzędzie administracyjne Open -ISCSI

[4] Service - ISCSI | Ubuntu

[5] Konwencje nazewnictwa ISCSI