iSCSI znamená Internet Small Computer System Interface je protokol Storage Area Network, který lze použít ke sdílení blokových zařízení, jako jsou oddíly HDD/SSD nebo oddíly LVM, nebo blokování souborů na síť. iSCSI pracuje v modelu klient-server a spoléhá na sítě TCP/IP při odesílání příkazů SCSI mezi iniciátorem a cílem. iSCSI Target je služba na serveru iSCSI, která poskytuje přístup ke sdílenému úložišti, a iSCSI Initiator je klient iSCSI, který se připojuje k cíli a přistupuje ke sdílenému úložišti.
V tomto tutoriálu vysvětlíme, jak nastavit cíle iSCSI a iniciátor iSCSI na serveru Ubuntu 20.04.
Požadavky
- Systém se systémem Ubuntu 20.04 pro cíl iSCSI s 1 GB externího pevného disku.
- Systém s novým Ubuntu 20.04 pro iniciátor iSCSI.
- Statická IP adresa 192.168.1.10 je nakonfigurována v cíli iSCSI a 192.168.1.20 je nakonfigurována v iniciátoru iSCSI.
- Na obou serverech je nakonfigurováno heslo uživatele root.
Aktualizujte systém
Než začnete, je dobré aktualizovat váš systém nejnovějšími balíčky. Můžete je aktualizovat pomocí následujícího příkazu:
apt-get update -y
apt-get upgrade -y
Jakmile jsou všechny balíčky aktualizovány, restartujte systém, aby se změny projevily.
Instalovat iSCSI Target
Ve výchozím nastavení je balíček iSCSI Target dostupný ve výchozím úložišti Ubuntu 20.04. Můžete jej nainstalovat spuštěním následujícího příkazu na serveru iSCSI Target:
apt-get install tgt -y
Po instalaci iSCSI Target ověřte stav serveru pomocí následujícího příkazu:
systemctl status tgt
Měli byste získat následující výstup:
? tgt.service - (i)SCSI target daemon Loaded: loaded (/lib/systemd/system/tgt.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2020-07-11 07:13:04 UTC; 23s ago Docs: man:tgtd(8) Main PID: 7770 (tgtd) Status: "Starting event loop..." Tasks: 1 Memory: 1.1M CGroup: /system.slice/tgt.service ??7770 /usr/sbin/tgtd -f Jul 11 07:13:04 ubuntu2004 systemd[1]: Starting (i)SCSI target daemon... Jul 11 07:13:04 ubuntu2004 tgtd[7770]: tgtd: iser_ib_init(3431) Failed to initialize RDMA; load kernel modules? Jul 11 07:13:04 ubuntu2004 tgtd[7770]: tgtd: work_timer_start(146) use timer_fd based scheduler Jul 11 07:13:04 ubuntu2004 tgtd[7770]: tgtd: bs_init(387) use signalfd notification Jul 11 07:13:04 ubuntu2004 systemd[1]: Started (i)SCSI target daemon.
V tomto okamžiku je na vašem serveru nainstalován iSCSI Target, nyní můžete přejít k dalšímu kroku.
Konfigurovat cíl iSCSI
Nejprve budete muset vytvořit LUN (Logical Unit Number) zařízení na vašem serveru iSCSI. LUN je koncové úložné zařízení, které je součástí fyzického zařízení SCSI. Všechny logické jednotky namapované na cíl iSCSI Target jsou virtuálně připojeny k operačnímu systému klienta. Proto mohou iniciátoři zakládat a spravovat systémy souborů na iSCSI LUN.
Můžete jej nakonfigurovat vytvořením nového konfiguračního souboru:
nano /etc/tgt/conf.d/iscsi.conf
Přidejte následující řádky:
<target iqn.2020-07.example.com:lun1> backing-store /dev/sdb initiator-address 192.168.1.20 incominguser iscsi-user password outgoinguser iscsi-target secretpass </target>
Po dokončení uložte a zavřete soubor.
Kde:
- První řádek definuje název logické jednotky.
- Druhý řádek definuje umístění a název úložného zařízení na serveru iSCSI Target.
- Třetí řádek definuje IP adresu iniciátoru iSCSI.
- Čtvrtý řádek definuje příchozí uživatelské jméno/heslo.
- Pátý řádek definuje uživatelské jméno/heslo, které cíl poskytne iniciátorovi, aby bylo možné provést vzájemné ověření CHAP.
Poté restartujte službu iSCSI, aby se změny projevily:
systemctl restart tgt
Dále ověřte cílový server iSCSI pomocí následujícího příkazu:
tgtadm --mode target --op show
Měli byste získat následující výstup:
Target 1: iqn.2020-07.example.com:lun1 System information: Driver: iscsi State: ready I_T nexus information: LUN information: LUN: 0 Type: controller SCSI ID: IET 00010000 SCSI SN: beaf10 Size: 0 MB, Block size: 1 Online: Yes Removable media: No Prevent removal: No Readonly: No SWP: No Thin-provisioning: No Backing store type: null Backing store path: None Backing store flags: Account information: iscsi-user iscsi-target (outgoing) ACL information: 192.168.1.10
V tomto okamžiku je nainstalován a konfigurován cílový server iSCSI. Nyní můžete přejít k dalšímu kroku.
Instalace a konfigurace iSCSI iniciátoru
Dále přejděte na počítač s iniciátorem iSCSI a nainstalujte balíček iniciátoru iSCSI pomocí následujícího příkazu:
apt-get install open-iscsi -y
Po dokončení instalace vyhledejte cílový server iSCSI a zjistěte sdílené cíle pomocí následujícího příkazu:
iscsiadm -m discovery -t st -p 192.168.1.10
Měli byste vidět následující výstup:
192.168.1.10:3260,1 iqn.2020-07.example.com:lun1
Dále budete muset definovat název LUN zařízení v souboru initiatorname.iscsi:
nano /etc/iscsi/initiatorname.iscsi
Přidejte svůj název iSCSI Target LUN, jak je znázorněno níže:
InitiatorName=iqn.2020-07.example.com:lun1
Po dokončení uložte a zavřete soubor.
Dále budete muset definovat informace CHAP, které jste nakonfigurovali pro cíl iSCSI pro přístup k cíli iSCSI z iniciátoru iSCSI. Konfigurační soubor uzlu bude existovat v adresáři „/etc/iscsi/nodes/“ a bude mít k dispozici adresář pro každou LUN.
Můžete jej definovat úpravou následujícího souboru:
nano /etc/iscsi/nodes/iqn.2020-07.example.com\:lun1/192.168.1.10\,3260\,1/default
Přidejte/upravte následující řádky:
node.session.auth.authmethod = CHAP node.session.auth.username = iscsi-user node.session.auth.password = password node.session.auth.username_in = iscsi-target node.session.auth.password_in = secretpass node.startup = automatic
Uložte a zavřete soubor a poté restartujte službu iniciátoru iSCSI pomocí následujícího příkazu:
systemctl restart open-iscsi iscsid
Stav služby můžete také ověřit pomocí následujícího příkazu:
systemctl status open-iscsi
Měli byste získat následující výstup:
? open-iscsi.service - Login to default iSCSI targets Loaded: loaded (/lib/systemd/system/open-iscsi.service; enabled; vendor preset: enabled) Active: active (exited) since Sat 2020-07-11 07:24:19 UTC; 10s ago Docs: man:iscsiadm(8) man:iscsid(8) Process: 3861 ExecStart=/sbin/iscsiadm -m node --loginall=automatic (code=exited, status=0/SUCCESS) Process: 3867 ExecStart=/lib/open-iscsi/activate-storage.sh (code=exited, status=0/SUCCESS) Main PID: 3867 (code=exited, status=0/SUCCESS) Jul 11 07:24:19 initiator systemd[1]: Starting Login to default iSCSI targets... Jul 11 07:24:19 initiator iscsiadm[3861]: Logging in to [iface: default, target: iqn.2020-07.example.com:lun1, portal: 104.245.33.142,3260] (m> Jul 11 07:24:19 initiator iscsiadm[3861]: Login to [iface: default, target: iqn.2020-07.example.com:lun1, portal: 104.245.33.142,3260] success> Jul 11 07:24:19 initiator systemd[1]: Finished Login to default iSCSI targets.
Připojení iSCSI můžete také ověřit pomocí následujícího příkazu:
iscsiadm -m session -o show
Měli byste získat následující výstup:
tcp: [2] 192.168.1.10:3260,1 iqn.2020-07.example.com:lun1 (non-flash)
Úložné zařízení sdílené z cíle iSCSI můžete také ověřit pomocí následujícího příkazu:
lsblk
Sdb sdíleného zařízení byste měli vidět v následujícím výstupu:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 80G 0 disk ??sda1 8:1 0 80G 0 part / sdb 8:16 0 1000M 0 disk
Vytvoření systému souborů na sdíleném zařízení
Abyste mohli používat sdílené zařízení na iniciátoru iSCSI, budete muset na sdíleném zařízení vytvořit systém souborů (sdb) a připojit jej, aby bylo toto zařízení užitečné.
Nejprve vytvořte souborový systém na sdíleném zařízení (sdb) pomocí následujícího příkazu:
fdisk /dev/sdb
Chcete-li vytvořit systém souborů, odpovězte na všechny níže uvedené otázky:
Welcome to fdisk (util-linux 2.34). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table. Created a new DOS disklabel with disk identifier 0x9743ddcf. Command (m for help): n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): Using default response p. Partition number (1-4, default 1): First sector (2048-2047999, default 2048): Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-2047999, default 2047999): Created a new partition 1 of type 'Linux' and of size 999 MiB. Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.
Dále naformátujte oddíl pomocí následujícího příkazu:
mkfs.ext4 /dev/sdb1
Měli byste získat následující výstup:
mke2fs 1.45.5 (07-Jan-2020) Creating filesystem with 255744 4k blocks and 64000 inodes Filesystem UUID: e7f06605-a0f5-41e1-b1b2-e85bd7a2d6a3 Superblock backups stored on blocks: 32768, 98304, 163840, 229376 Allocating group tables: done Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: done
Dále připojte oddíl do adresáře /mnt pomocí následujícího příkazu:
mount /dev/sdb1 /mnt
Nyní můžete ověřit připojený oddíl pomocí následujícího příkazu:
df -h
Měli byste získat následující výstup:
Filesystem Size Used Avail Use% Mounted on udev 981M 0 981M 0% /dev tmpfs 199M 588K 199M 1% /run /dev/sda1 79G 1.8G 74G 3% / tmpfs 994M 0 994M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 994M 0 994M 0% /sys/fs/cgroup tmpfs 199M 0 199M 0% /run/user/0 /dev/sdb1 968M 2.5M 899M 1% /mnt
Závěr
Ve výše uvedené příručce jste se naučili, jak nastavit cíl a iniciátor iSCSI na serveru Ubuntu 20.04. Také jste se naučili, jak sdílet zařízení na cílovém serveru a jak k němu přistupovat od iniciátora. Pokud máte nějaké dotazy, neváhejte se mě zeptat.