Сервер хранения · 8 min read · Nov 26, 2025

Как установить сервер хранения iSCSI на Ubuntu 22.04

Интерфейс малых компьютерных систем через Интернет (iSCSI) — это протокол, используемый в сетях хранения (SAN) для совместного использования ресурсов блочного хранения, таких как разделы жестких дисков (HDD) или твердотельных накопителей (SSD), разделы управления логическими томами (LVM) или блочные файлы по сети. Используя архитектуру клиент-сервер, iSCSI облегчает передачу команд SCSI по сетям TCP/IP между двумя основными компонентами: инициатором и целью. Цель iSCSI — это служба, размещенная на сервере iSCSI, отвечающая за предоставление доступа к совместно используемому хранилищу. Напротив, инициатор iSCSI функционирует как клиент, устанавливающий соединение с целью, чтобы использовать ресурсы совместного хранения.

Этот учебник является полным руководством по настройке как целей, так и инициаторов iSCSI на сервере с Ubuntu 22.04. Он охватывает шаги по настройке безопасного совместного использования хранилища в вашей сети.

Требования

  • Система с установленной Ubuntu 22.04 для цели iSCSI с 1 ГБ внешним HDD.
  • Система с новой установкой Ubuntu 22.04 для инициатора iSCSI.
  • Статический IP-адрес 192.168.1.10 настроен на цели iSCSI, и 192.168.1.20 настроен на инициаторе iSCSI.
  • Пароль root настроен на обоих серверах.

Обновление системы

Перед началом рекомендуется обновить вашу систему до последних пакетов. Вы можете обновить их с помощью следующей команды:

apt update -y  
apt upgrade -y

После обновления всех пакетов перезагрузите систему, чтобы применить изменения.

Установка цели iSCSI

Пакет цели iSCSI по умолчанию находится в репозитории по умолчанию Ubuntu 22.04. Вы можете установить его, выполнив следующую команду на сервере цели iSCSI:

apt install tgt -y

После установки цели iSCSI проверьте статус сервера с помощью следующей команды:

systemctl status tgt

Вы должны получить следующий вывод:

? tgt.service - (i)SCSI target daemon
     Loaded: loaded (/lib/systemd/system/tgt.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2024-01-03 11: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

Jan 03 11:13:04 ubuntu2204 systemd[1]: Starting (i)SCSI target daemon...
Jan 03 11:13:04 ubuntu2204 tgtd[7770]: tgtd: iser_ib_init(3431) Failed to initialize RDMA; load kernel modules?
Jan 03 11:13:04 ubuntu2204 tgtd[7770]: tgtd: work_timer_start(146) use timer_fd based scheduler
Jan 03 11:13:04 ubuntu2204 tgtd[7770]: tgtd: bs_init(387) use signalfd notification
Jan 03 11:13:04 ubuntu2204 systemd[1]: Started (i)SCSI target daemon.

На этом этапе цель iSCSI установлена на вашем сервере. Теперь вы можете перейти к следующему шагу.

Настройка цели iSCSI

Сначала создайте устройство LUN (Logical Unit Number) на вашем сервере iSCSI. LUN — это устройство хранения на заднем плане, которое является частью физического устройства SCSI. Все LUN, сопоставленные с целью iSCSI, виртуально подключены к операционной системе клиента. Поэтому инициаторы могут устанавливать и управлять файловыми системами на LUN iSCSI.

Вы можете настроить его, создав новый конфигурационный файл:

nano /etc/tgt/conf.d/iscsi.conf

Добавьте следующие строки:


     backing-store /dev/sdb
     initiator-address 192.168.1.20
    incominguser iscsi-user password
     outgoinguser iscsi-target secretpass

Сохраните и закройте файл, когда закончите.

Где:

  • Первая строка определяет имя LUN.
  • Вторая строка определяет местоположение и имя устройства хранения на сервере цели iSCSI.
  • Третья строка определяет IP-адрес инициатора iSCSI.
  • Четвертая строка определяет имя пользователя/пароль для входящих соединений.
  • Пятая строка определяет имя пользователя/пароль, которые цель предоставит инициатору для обеспечения взаимной аутентификации CHAP.

Далее перезапустите службу iSCSI, чтобы применить изменения:

systemctl restart tgt

Затем проверьте сервер цели iSCSI с помощью следующей команды:

tgtadm --mode target --op show

Вы должны получить следующий вывод:

Target 1: iqn.2024-01.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

На этом этапе сервер цели iSCSI установлен и настроен. Теперь вы можете перейти к следующему шагу.

Установка и настройка инициатора iSCSI

Далее перейдите на машину инициатора iSCSI и установите пакет инициатора iSCSI с помощью следующей команды:

apt install open-iscsi -y

После завершения установки обнаружьте сервер цели iSCSI, чтобы узнать о совместно используемых целях, используя следующую команду:

iscsiadm -m discovery -t st -p 192.168.1.10

Вы должны увидеть следующий вывод:

192.168.1.10:3260,1 iqn.2024-01.example.com:lun1

Далее вам нужно будет определить имя устройства LUN в файле initiatorname.iscsi:

nano /etc/iscsi/initiatorname.iscsi

Добавьте имя вашего LUN цели iSCSI, как показано ниже:

InitiatorName=iqn.2024-01.example.com:lun1

Сохраните и закройте файл, когда закончите.

Далее вам нужно будет определить информацию CHAP, которую вы настроили на цели iSCSI, чтобы получить доступ к цели iSCSI с инициатора iSCSI. Файл конфигурации узла будет находиться в каталоге ‘/etc/iscsi/nodes/‘ и будет иметь каталог для каждого доступного LUN.

Вы можете определить его, отредактировав следующий файл:

nano /etc/iscsi/nodes/iqn.2024-01.example.com\:lun1/192.168.1.10\,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 iscsid

Вы также можете проверить статус службы с помощью следующей команды:

systemctl status open-iscsi

Вы должны получить следующий вывод:

? 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 2024-01-03 11:33:13 UTC; 10s ago
       Docs: man:iscsiadm(8)
             man:iscsid(8)
    Process: 2861 ExecStart=/sbin/iscsiadm -m node --loginall=automatic (code=exited, status=0/SUCCESS)
    Process: 2867 ExecStart=/lib/open-iscsi/activate-storage.sh (code=exited, status=0/SUCCESS)
   Main PID: 2867 (code=exited, status=0/SUCCESS)

Jan 03 11:33:14 initiator systemd[1]: Starting Login to default iSCSI targets...
Jan 03 11:33:14 initiator iscsiadm[2861]: Logging in to [iface: default, target: iqn.2024-01.example.com:lun1, portal: 104.245.33.142,3260] (m>
Jan 03 11:33:14 initiator iscsiadm[2861]: Login to [iface: default, target: iqn.2024-01.example.com:lun1, portal: 104.245.33.142,3260] success>
Jan 03 11:33:14 initiator systemd[1]: Finished Login to default iSCSI targets.

Вы также можете проверить соединение iSCSI с помощью следующей команды:

iscsiadm -m session -o show

Вы должны получить следующий вывод:

tcp: [2] 192.168.1.10:3260,1 iqn.2024-01.example.com:lun1 (non-flash)

Вы также можете проверить устройство хранения, совместно используемое с цели iSCSI, с помощью следующей команды:

lsblk

Вы должны увидеть совместно используемое устройство sdb в следующем выводе:

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

Создание файловой системы на совместно используемом устройстве

Чтобы использовать совместно используемое устройство на инициаторе iSCSI, вам нужно будет создать файловую систему на совместно используемом устройстве (sdb) и смонтировать его, чтобы сделать это устройство полезным.

Сначала создайте файловую систему на совместно используемом устройстве (sdb) с помощью следующей команды:

fdisk /dev/sdb

Ответьте на все вопросы, как показано ниже, чтобы создать файловую систему:

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.

Затем отформатируйте раздел с помощью следующей команды:

mkfs.ext4 /dev/sdb1

Вы должны получить следующий вывод:

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

Затем смонтируйте раздел в каталог /mnt с помощью следующей команды:

mount /dev/sdb1 /mnt

Теперь вы можете проверить смонтированный раздел с помощью следующей команды:

df -h

Вы должны получить следующий вывод:

Filesystem      Size  Used Avail Use% Mounted on
udev            972M     0  981M   0% /dev
tmpfs           199M  528K  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

Часто задаваемые вопросы

Ниже приведены ответы на некоторые часто задаваемые вопросы о инициаторе и цели iSCSI.

Что такое iSCSI?

iSCSI, или интерфейс малых компьютерных систем через Интернет, — это сетевой протокол, который позволяет передавать данные по интранетам и управлять хранилищем на больших расстояниях. Он облегчает транспортировку данных на блочном уровне между инициатором iSCSI на сервере и целью iSCSI на оборудовании хранения.

Что такое цель и инициатор iSCSI?

Цель iSCSI выступает в качестве устройства хранения, такого как жесткий диск, доступного по сети. Инициатор iSCSI — это клиент, который подключается к хранилищу на Цели и взаимодействует с ним.

Могу ли я использовать iSCSI через WAN?

Да, iSCSI можно использовать через сеть с широкой полосой (WAN), но это требует стабильного и быстрого сетевого соединения для обеспечения производительности и надежности. Также важны соображения безопасности, такие как VPN или выделенные линии, при использовании iSCSI через WAN.

Чем iSCSI отличается от NFS или SMB?

В отличие от NFS (сетевой файловой системы) или SMB (протокол сервера сообщений), которые являются протоколами хранения на уровне файлов, iSCSI работает на уровне блоков. Это означает, что он позволяет системе взаимодействовать с удаленным хранилищем так, как если бы это был локальный жесткий диск, предоставляя большую гибкость в управлении хранилищем.

Безопасен ли iSCSI?

Сама по себе iSCSI не включает в себя высокоуровневые функции безопасности. Однако вы можете защитить свои соединения iSCSI, используя такие методы, как IPsec для безопасности сетевого уровня или настройку CHAP (протокол аутентификации с вызовом) для аутентификации.

Каковы соображения по производительности для iSCSI?

Производительность iSCSI зависит от скорости сети, задержки, производительности устройств хранения и конфигурации сети. Обеспечение высокоскоростного сетевого соединения и минимальной задержки имеет решающее значение для оптимальной производительности.

Нужны ли мне специальные аппаратные средства для iSCSI?

Для iSCSI не требуется специальное оборудование. Он может работать на стандартном сетевом оборудовании. Однако для улучшения производительности могут использоваться выделенные HBA (адаптеры шины хоста) iSCSI.

Как мне устранить проблемы с соединением iSCSI на Ubuntu?

Устранение неполадок может включать проверку сетевого подключения, проверку конфигурационных файлов как инициатора, так и цели, просмотр системных журналов и обеспечение правильного экспорта устройств хранения целью. Кроме того, использование таких инструментов, как iscsiadm, может помочь диагностировать и управлять соединениями iSCSI.

Заключение

Вышеуказанное руководство научило вас, как настроить цель и инициатор iSCSI на сервере Ubuntu 22.04. Вы также узнали, как совместно использовать устройство на сервере Цели и получить к нему доступ с инициатора.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.