Как настроить сервер хранения iSCSI в Ubuntu 18.04 LTS
Это руководство существует для этих версий ОС
- Ubuntu 20.04 (Focal Fossa)
- Ubuntu 18.04 (Bionic Beaver)
На этой странице
- Требования
- Начало работы
- Установить цель iSCSI
- Настройка цели iSCSI
- Установка и настройка инициатора iSCSI
iSCSI (Internet Small Computer System Interface) — это протокол сети хранения данных (SAN), который можно использовать для онлайн-управления хранилищем. Это стандарт сети хранения данных на основе IP, который обеспечивает доступ к устройствам хранения на уровне блоков, передавая команды SCSI по сети TCP/IP.
iSCSI состоит из двух компонентов: цели iSCSI и инициатора iSCSI. Цель iSCSI — это служба на сервере iSCSI, которая предлагает доступ к общему хранилищу, а инициатор iSCSI — это клиент iSCSI, который подключается к цели и получает доступ к общему хранилищу.
В этом руководстве мы покажем вам, как настроить цель iSCSI и инициатор iSCSI на сервере Ubuntu 18.04.
Требования
- Новый сервер Ubuntu 18.04 для цели iSCSI с внешним жестким диском на 2 ГБ.
- Новый сервер Ubuntu 18.04 для инициатора iSCSI.
- Статический IP-адрес 192.168.0.103 настроен для цели iSCSI, а 192.168.0.102 настроен для инициатора iSCSI.
- На обоих серверах настроен пароль root.
Начиная
Перед запуском вам нужно будет обновить оба сервера до последней версии. Вы можете обновить их, выполнив следующую команду на обоих $
apt-get update -y
apt-get upgrade -y
После обновления обоих серверов перезапустите их, чтобы изменения вступили в силу.
Установить цель iSCSI
Во-первых, вам необходимо установить пакет Target Framework (TGT) на целевой сервер iSCSI. Вы можете установить его с помощью следующей команды:
apt-get install tgt -y
После установки TGT проверьте состояние TGT, выполнив следующую команду:
systemctl status tgt
Вы должны увидеть следующий вывод:
? tgt.service - (i)SCSI target daemon Loaded: loaded (/lib/systemd/system/tgt.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2019-11-08 07:40:28 UTC; 27s ago Docs: man:tgtd(8) Main PID: 2343 (tgtd) Status: "Starting event loop..." Tasks: 1 CGroup: /system.slice/tgt.service ??2343 /usr/sbin/tgtd -f Nov 08 07:40:28 ubuntu systemd[1]: Starting (i)SCSI target daemon... Nov 08 07:40:28 ubuntu tgtd[2343]: tgtd: iser_ib_init(3431) Failed to initialize RDMA; load kernel modules? Nov 08 07:40:28 ubuntu tgtd[2343]: tgtd: work_timer_start(146) use timer_fd based scheduler Nov 08 07:40:28 ubuntu tgtd[2343]: tgtd: bs_init(387) use signalfd notification Nov 08 07:40:28 ubuntu systemd[1]: Started (i)SCSI target daemon.
Как только вы это сделаете, вы можете перейти к следующему шагу.
Настройка цели iSCSI
Затем вам нужно будет создать устройство LUN (логический номер устройства) на вашем сервере iSCSI. LUN — это внутренние устройства хранения, к которым инициатор будет подключаться и использовать позже.
Вы можете сделать это, создав файл конфигурации в каталоге /etc/tgt/conf.d:
nano /etc/tgt/conf.d/iscsi.conf
Добавьте следующие строки:
<target iqn.2019-11.example.com:lun1> # Provided device as an iSCSI target backing-store /dev/sdb1 initiator-address 192.168.0.102 incominguser iscsi-user password outgoinguser iscsi-target secretpass </target>
Сохраните и закройте файл, когда закончите. Затем перезапустите службу TGT, чтобы применить изменения конфигурации:
systemctl restart tgt
Вот краткое объяснение каждого параметра:
target : это имя конкретной цели.
backing-store : этот параметр указывает диск для хранения, который будет использоваться инициатором.
адрес инициатора: это IP-адрес инициатора.
incominguser : это входящее имя пользователя/пароль для защиты LUN.
outgoinguser : исходящие имя пользователя/пароль для взаимной аутентификации CHAP.
После перезапуска службы TGT проверьте целевой сервер iSCSI с помощью следующей команды:
tgtadm --mode target --op show
Вы должны увидеть, что цель iSCSI становится доступной:
Target 1: iqn.2019-11.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: LUN: 1 Type: disk SCSI ID: IET 00010001 SCSI SN: beaf11 Size: 2146 MB, Block size: 512 Online: Yes Removable media: No Prevent removal: No Readonly: No SWP: No Thin-provisioning: No Backing store type: rdwr Backing store path: /dev/sdb1 Backing store flags: Account information: iscsi-user iscsi-target (outgoing) ACL information: 192.168.0.102
Установка и настройка инициатора iSCSI
Далее вам потребуется установить пакет инициатора iSCSI на сервер инициатора iSCSI. Вы можете установить его с помощью следующей команды:
apt-get install open-iscsi -y
После завершения установки запустите обнаружение целей на нашем целевом сервере iSCSI, чтобы узнать общие цели.
iscsiadm -m discovery -t st -p 192.168.0.103
Вы должны увидеть доступную цель в следующем выводе:
192.168.0.103:3260,1 iqn.2019-11.example.com:lun1
Приведенная выше команда также создает два файла с информацией о LUN. Вы можете увидеть их с помощью следующей команды:
ls -l /etc/iscsi/nodes/iqn.2019-11.example.com\:lun1/192.168.0.103\,3260\,1/ /etc/iscsi/send_targets/192.168.0.103,3260/
Вы должны увидеть следующие файлы:
/etc/iscsi/nodes/iqn.2019-11.example.com:lun1/192.168.0.103,3260,1/: total 4 -rw------- 1 root root 1840 Nov 8 13:17 default /etc/iscsi/send_targets/192.168.0.103,3260/: total 8 lrwxrwxrwx 1 root root 66 Nov 8 13:17 iqn.2019-11.example.com:lun1,192.168.0.103,3260,1,default -> /etc/iscsi/nodes/iqn.2019-11.example.com:lun1/192.168.0.103,3260,1 -rw------- 1 root root 547 Nov 8 13:17 st_config
Затем вам нужно будет отредактировать файл по умолчанию и определить информацию CHAP, которую вы настроили для цели iSCSI, чтобы получить доступ к цели iSCSI от инициатора iSCSI.
nano /etc/iscsi/nodes/iqn.2019-11.example.com\:lun1/192.168.0.103\,3260\,1/default
Добавьте/измените следующие строки:
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
Сохраните и закройте файл, когда закончите. Затем перезапустите службу инициатора iSCSI, чтобы применить изменения конфигурации:
systemctl restart open-iscsi
Вы должны увидеть следующий вывод:
* Unmounting iscsi-backed filesystems [ OK ] * Disconnecting iSCSI targets iscsiadm: No matching sessions found [ OK ] * Stopping iSCSI initiator service [ OK ] * Starting iSCSI initiator service iscsid [ OK ] * Setting up iSCSI targets Logging in to [iface: default, target: iqn.2019-11.example.com:lun1, portal: 192.168.0.103,3260] (multiple) Login to [iface: default, target: iqn.2019-11.example.com:lun1, portal: 192.168.0.103,3260] successful. [ OK ] * Mounting network filesystems [ OK ]
Теперь вы можете проверить диск хранилища, к которому предоставлен общий доступ из цели iSCSI, с помощью следующей команды:
lsblk
Вы должны увидеть, что диск хранилища теперь доступен инициатору как sdb:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 465.8G 0 disk ??sda1 8:1 0 93.1G 0 part / ??sda2 8:2 0 1K 0 part ??sda5 8:5 0 186.3G 0 part /home ??sda6 8:6 0 181.6G 0 part /Data ??sda7 8:7 0 4.8G 0 part [SWAP] sdb 8:16 0 2G 0 disk
Вы также можете проверить соединения iSCSI с помощью следующей команды:
tgtadm --mode conn --op show --tid 1
Вы должны получить следующий результат:
Session: 1 Connection: 0 Initiator: iqn.1993-08.org.debian:01:2e1e2383de41 IP Address: 192.168.0.102
Затем вам нужно будет создать файловую систему на этом общем устройстве (sdb) и смонтировать ее, чтобы это устройство можно было использовать.
Сначала создайте файловую систему на общем устройстве (sdb) с помощью следующей команды:
fdisk /dev/sdb
Вы должны увидеть следующий вывод:
Welcome to fdisk (util-linux 2.31.1). 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 0x06091fe8. Command (m for help): n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): p Partition number (1-4, default 1): First sector (2048-4194303, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2048-4194303, default 4194303): Created a new partition 1 of type 'Linux' and of size 2 GiB. Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.
Затем отформатируйте этот раздел с помощью следующей команды:
mkfs.ext4 /dev/sdb1
Затем смонтируйте этот раздел в каталоге /mnt с помощью следующей команды:
mount /dev/sdb1 /mnt
Теперь вы можете проверить смонтированное устройство с помощью следующей команды:
df -h
Вы должны увидеть следующий вывод:
Filesystem Size Used Avail Use% Mounted on udev 1.9G 4.0K 1.9G 1% /dev tmpfs 384M 1.2M 383M 1% /run /dev/sda1 92G 36G 51G 42% / none 4.0K 0 4.0K 0% /sys/fs/cgroup none 5.0M 0 5.0M 0% /run/lock none 1.9G 54M 1.9G 3% /run/shm none 100M 48K 100M 1% /run/user /dev/sda5 184G 96G 79G 55% /home /dev/sda6 179G 32G 138G 19% /Data /dev/sdb1 2.0G 3.0M 1.9G 1% /mnt
Поздравляем! вы успешно установили целевой сервер iSCSI и подключились к нему от инициатора iSCSI. Теперь вы можете использовать это совместно используемое устройство iSCSI как обычный подключенный диск.