Подключение iSCSI-диска (ОС Linux)

ВАЖНО:

Если вы добавляете запись о диске в /etc/fstab, то необходимо, чтобы:

  1. Для записи с диском был указан параметр _netdev;
  2. IP диска и префикс были указаны в конфигурационном файле сети для соответствующего интерфейса.

После подготовки сетевого диска мы сообщим вам IP-адрес диска, который нужно добавить на сервер, и IP-адрес стораджа, к которому необходимо будет осуществлять подключение.

Далее для подключения диска вам необходимо выполнить следующие действия.

  1. Установить на сервер необходимые пакеты:
# Для Ubuntu/Debian
apt install open-iscsi

# Для CentOS
yum install -y iscsi-initiator-utils
  1. Добавить IP-адрес диска (не стораджа), выданный для вашего сервера, на сетевой интерфейс (будет работать до первой перезагрузки):
ip a add 172.18.%.%/24 dev eth1

Для того, чтобы после перезагрузки диск корректно инициировался в ОС, необходимо указать IP-адрес и /24 маску подсети на соответствующем интерфейсе.

# Для Ubuntu/Debian
vim /etc/netplan/*.yaml

network:
  version: 2
  ethernets:
    eno1:
      # здесь настройки сети на первом интерфейсе для доступа в интернет
    eno2:
      # далее идут настройки для сетевого диска
      dhcp4: no
      addresses: [ 172.18.%.%/24 ]
      # gateway4: указывать не нужно

# Для CentOS
vi /etc/sysconfig/network-scripts/ifcfg-enp1s0f1

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
NAME=enp1s0f1
UUID=21b81603-e485-4ff9-8394-19114b2983ad
DEVICE=enp1s0f1
ONBOOT=yes
IPADDR=172.18.%.%
PREFIX=24

где:

  • 172.18.%.% — IP-адрес диска (НЕ стораджа);
  • eno2/enp1s0f1 — отдельный сетевой интерфейс, отличный от того, на котором работает основной IP сервера.
  1. Выполнить перезагрузку сетевого демона:
# Для Ubuntu/Debian
sudo netplan apply

# Для CentOS
sudo systemctl restart network
  1. Перезапустить iSCSI:
systemctl restart iscsi
  1. Подключиться по предоставленному IP-адресу стораджа:
iscsiadm -m discovery -t st -p IP_адрес;iscsiadm -m node -l

где IP_адрес — выданный вам IP-адрес стораджа.

Пример успешного подключения к стораджу с IP-адресом 172.18.0.3:

1

  1. Включить автологин в /etc/iscsi/iscsid.conf, заменив значение параметра node.startup на:
node.startup = automatic

Это можно сделать командой:

sed -i 's/node.startup = manual/node.startup = automatic/' /etc/iscsi/iscsid.conf
  1. Проверить что в файлах в /etc/iscsi/nodes также указано значение automatic, например:
find /etc/iscsi/nodes/ -type f | xargs grep auto
node.startup = automatic

Если директория /etc/iscsi/nodes/ отсутствует, просто пропустите этот шаг. 

  1. Проверить наличие диска:
fdisk -l

# Или:
parted -l

В выводе должен быть отображен новый диск с новой меткой.

В нашем примере появился новый диск /dev/sdd:

2

  1. Убедившись в наличии диска, создать таблицу разделов:
fdisk /dev/DISK

где DISK — метка нового бэкапного диска.

Пример разметки с меткой диска sdd:

# fdisk /dev/sdd
Command (m for help): p
Disk /dev/sdd: 944.9 GB, 944892805120 bytes
255 heads, 63 sectors/track, 114876 cylinders, total 1845493760 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc4395aa1
   Device Boot      Start         End      Blocks   Id  System
Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
Using default value 1
First sector (2048-1845493759, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-1845493759, default 1845493759):
Using default value 1845493759
Command (m for help): p
Disk /dev/sdd: 944.9 GB, 944892805120 bytes
255 heads, 63 sectors/track, 114876 cylinders, total 1845493760 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc4395aa1
   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1            2048  1845493759   922745856   83  Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
  1. Создать файловую систему на разделе:
mkfs.ext4 /dev/DISK_N

где DISK_N — созданный раздел бэкапного диска.

  1. Создать директорию, куда будет смонтирован диск (например, /mnt/backup), и смонтировать раздел:
mkdir /mnt/backup
mount /dev/DISK_N /mnt/backup
  1. Посмотреть UUID диска и указать его в соответствующей записи в fstab (п. 13):
sudo blkid

В случае установленных в сервере накопителей SSD/HDD мы рекомендуем указывать запись о сетевом диске, ссылаясь на UUID раздела. В случае установленных только NVMe-дисков можно ссылаться на имя раздела (/dev/sdb и пр.)

  1. Добавить запись в fstab (после создания раздела на диске из п. 12):
echo "/dev/disk/by-uuid/<скопированный UUID> /mnt/backup ext4 defaults,_netdev 0 0" >> /etc/fstab

где:

  • /mnt/backup — точка монтирования;
  • _netdev — параметр, позволяющий проверять блочное устройство после инициализации сетевой части при загрузке ОС.