iSCSI Ubuntu · 8 min read · Feb 07, 2026

Использование iSCSI на Ubuntu 9.04 (Инициатор и Цель)

Использование iSCSI на Ubuntu 9.04 (Инициатор и Цель)

Версия 1.0
Автор: Фалко Тимме

Это руководство объясняет, как вы можете настроить iSCSI цель и iSCSI инициатор (клиент), оба работающие на Ubuntu 9.04. Протокол iSCSI — это протокол сети хранения (SAN), который позволяет iSCSI инициаторам использовать устройства хранения на (удаленной) iSCSI цели, используя обычные Ethernet-кабели. Для iSCSI инициатора удаленное хранилище выглядит как обычный локально подключенный жесткий диск.

Я не даю никаких гарантий, что это сработает для вас!

1 Предварительная заметка

Я использую два сервера Ubuntu 9.04:

  • server1.example.com (Инициатор): IP-адрес 192.168.0.100
  • server2.example.com (Цель): IP-адрес 192.168.0.101

Поскольку мы будем выполнять все шаги из этого руководства с правами root, мы можем либо добавлять строку sudo ко всем командам в этом руководстве, либо стать root прямо сейчас, набрав

sudo su 

2 Настройка цели (server2)

server2:

Сначала мы настраиваем цель (server2):

aptitude install iscsitarget

Откройте /etc/default/iscsitarget…

vi /etc/default/iscsitarget

… и установите ISCSITARGET_ENABLE в true:

| ISCSITARGET_ENABLE=true |

Мы можем использовать неиспользуемые логические тома, файлы образов, жесткие диски (например, /dev/sdb), разделы жестких дисков (например, /dev/sdb1) или RAID-устройства (например, /dev/md0) для хранения. В этом примере я создам логический том размером 20 ГБ с именем storage_lun1 в группе томов vg0:

lvcreate -L20G -n storage_lun1 vg0 

(Если вы хотите использовать файл образа, вы можете создать его следующим образом:

mkdir /storage
dd if=/dev/zero of=/storage/lun1.img bs=1024k count=20000

Это создаст файл образа /storage/lun1.img размером 20 ГБ.

)

Далее мы редактируем /etc/ietd.conf…

vi /etc/ietd.conf

… и закомментируем все в этом файле. В конце мы добавляем следующий фрагмент:

| [...] Target iqn.2001-04.com.example:storage.lun1 IncomingUser someuser secret OutgoingUser Lun 0 Path=/dev/vg0/storage_lun1,Type=fileio Alias LUN1 #MaxConnections 6 |

Имя цели должно быть глобально уникальным, стандарт iSCSI определяет “iSCSI Qualified Name” следующим образом: iqn.yyyy-mm.<обратное доменное имя>[:идентификатор]; yyyy-mm — это дата, на которую домен действителен; идентификатор выбирается произвольно. Строка IncomingUser содержит имя пользователя и пароль, чтобы только инициаторы (клиенты), которые предоставляют это имя пользователя и пароль, могли войти и использовать устройство хранения; если вам не нужна аутентификация, не указывайте имя пользователя и пароль в строке IncomingUser. В строке Lun мы должны указать полный путь к устройству хранения (например, /dev/vg0/storage_lun1, /storage/lun1.img, /dev/sdb и т. д.).

Теперь мы сообщаем цели, что хотим разрешить подключения к устройству iqn.2001-04.com.example:storage.lun1 с IP-адреса 192.168.0.100 (server1.example.com)…

vi /etc/initiators.allow

| [...] iqn.2001-04.com.example:storage.lun1 192.168.0.100 |

… и запускаем цель:

/etc/init.d/iscsitarget start  

3 Настройка инициатора (server1)

server1:

На server1 мы устанавливаем инициатор:

aptitude install open-iscsi

Далее мы открываем /etc/iscsi/iscsid.conf…

vi /etc/iscsi/iscsid.conf

… и устанавливаем node.startup в automatic:

| [...] node.startup = automatic [...] |

Затем мы перезапускаем инициатор:

/etc/init.d/open-iscsi restart

Теперь мы подключаемся к цели (server2) и проверяем, какие устройства хранения она предлагает:

iscsiadm -m discovery -t st -p 192.168.0.101

server1:~# iscsiadm -m discovery -t st -p 192.168.0.101
192.168.0.101:3260,1 iqn.2001-04.com.example:storage.lun1
server1:~#

iscsiadm -m node

server1:~# iscsiadm -m node
192.168.0.101:3260,1 iqn.2001-04.com.example:storage.lun1
server1:~#

Настройки для устройства хранения iqn.2001-04.com.example:storage.lun1 на 192.168.0.101:3260,1 хранятся в файле /etc/iscsi/nodes/iqn.2001-04.com.example:storage.lun1/192.168.0.101,3260,1/default. Мы должны установить имя пользователя и пароль для цели в этом файле; вместо того, чтобы редактировать этот файл вручную, мы можем использовать команду iscsiadm, чтобы сделать это за нас:

iscsiadm -m node –targetname “iqn.2001-04.com.example:storage.lun1” –portal “192.168.0.101:3260” –op=update –name node.session.auth.authmethod –value=CHAP
iscsiadm -m node –targetname “iqn.2001-04.com.example:storage.lun1” –portal “192.168.0.101:3260” –op=update –name node.session.auth.username –value=someuser
iscsiadm -m node –targetname “iqn.2001-04.com.example:storage.lun1” –portal “192.168.0.101:3260” –op=update –name node.session.auth.password –value=secret

Теперь мы можем войти, либо запустив…

iscsiadm -m node --targetname "iqn.2001-04.com.example:storage.lun1" --portal "192.168.0.101:3260" --login

server1:~# iscsiadm -m node –targetname “iqn.2001-04.com.example:storage.lun1” –portal “192.168.0.101:3260” –login
Вход в [iface: default, target: iqn.2001-04.com.example:storage.lun1, portal: 192.168.0.101,3260]
Вход в [iface: default, target: iqn.2001-04.com.example:storage.lun1, portal: 192.168.0.101:3260]: успешный
server1:~#

… или перезапустив инициатор:

/etc/init.d/open-iscsi restart 

(Если вы хотите выйти, вы можете выполнить

iscsiadm -m node --targetname "iqn.2001-04.com.example:storage.lun1" --portal "192.168.0.101:3260" --logout

)

В выводе команды

fdisk -l 

вы теперь должны найти новый жесткий диск (/dev/sdb в этом примере); это наше устройство хранения iSCSI:

server1:~# fdisk -l
Диск /dev/sda: 32.2 ГБ, 32212254720 байт
255 голов, 63 сектора/трек, 3916 цилиндров
Единицы = цилиндры по 16065 * 512 = 8225280 байт
Идентификатор диска: 0x00031334

Устройство Загрузка Начало Конец Блоки Id Система
/dev/sda1 * 1 3749 30113811 83 Linux
/dev/sda2 3750 3916 1341427+ 5 Расширенный
/dev/sda5 3750 3916 1341396 82 Linux swap / Solaris

Диск /dev/sdb: 21.4 ГБ, 21474836480 байт
64 голов, 32 сектора/трек, 20480 цилиндров
Единицы = цилиндры по 2048 * 512 = 1048576 байт
Идентификатор диска: 0x00000000

Диск /dev/sdb не содержит действительной таблицы разделов
server1:~#

Чтобы использовать это устройство, мы должны отформатировать его:

fdisk /dev/sdb

server1:~# fdisk /dev/sdb
Устройство не содержит ни действительной таблицы разделов DOS, ни метки диска Sun, SGI или OSF
Создание новой таблицы диска DOS с идентификатором диска 0x882944df.
Изменения останутся в памяти только до тех пор, пока вы не решите их записать.
После этого, конечно, предыдущий контент не будет восстановим.

Количество цилиндров для этого диска установлено на 20480.
С этим нет ничего плохого, но это больше, чем 1024,
и может в некоторых настройках вызвать проблемы с:

  1. программным обеспечением, которое работает во время загрузки (например, старые версии LILO)
  2. загрузкой и программным обеспечением для разбиения диска из других ОС
    (например, DOS FDISK, OS/2 FDISK)
    Предупреждение: недопустимый флаг 0x0000 таблицы разделов 4 будет исправлен с помощью w(rite)

Команда (m для помощи): <– m
Действие команды
a переключить флаг загрузки
b редактировать метку диска bsd
c переключить флаг совместимости dos
d удалить раздел
l перечислить известные типы разделов
m напечатать это меню
n добавить новый раздел
o создать новую пустую таблицу разделов DOS
p напечатать таблицу разделов
q выйти без сохранения изменений
s создать новую пустую метку диска Sun
t изменить идентификатор системы раздела
u изменить единицы отображения/ввода
v проверить таблицу разделов
w записать таблицу на диск и выйти
x дополнительная функциональность (только для экспертов)

Команда (m для помощи): <– n
Действие команды
e расширенный
p основной раздел (1-4)
<– p
Номер раздела (1-4): <– 1
Первый цилиндр (1-20480, по умолчанию 1): <– ENTER
Использование значения по умолчанию 1
Последний цилиндр или +размер или +размерM или +размерK (1-20480, по умолчанию 20480): <– ENTER
Использование значения по умолчанию 20480

Команда (m для помощи): <– t
Выбранный раздел 1
Шестнадцатеричный код (тип L для перечисления кодов): <– L

0 Пустой 1e Скрытый W95 FAT1 80 Старый Minix be Загрузочный Solaris
1 FAT12 24 NEC DOS 81 Minix / старый Lin bf Solaris
2 XENIX root 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 84 OS/2 скрытый C: c6 DRDOS/sec (FAT-
5 Расширенный 41 PPC PReP Boot 85 Linux расширенный c7 Syrinx
6 FAT16 42 SFS 86 NTFS volume set da Неподходящие данные
7 HPFS/NTFS 4d QNX4.x 87 NTFS volume set db CP/M / CTOS / .
8 AIX 4e QNX4.x 2nd part 88 Linux plaintext de Dell Utility
9 AIX загрузочный 4f QNX4.x 3rd part 8e Linux LVM df BootIt
a OS/2 Boot Manag 50 OnTrack DM 93 Amoeba e1 DOS доступ
b W95 FAT32 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O
c W95 FAT32 (LBA) 52 CP/M 9f BSD/OS e4 SpeedStor
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi eb BeOS fs
f W95 Ext’d (LBA) 54 OnTrackDM6 a5 FreeBSD ee EFI GPT
10 OPUS 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/
11 Скрытый FAT12 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC b
12 Диагностика Compaq 5c Priam Edisk a8 Darwin UFS f1 SpeedStor
14 Скрытый FAT16 <3 61 SpeedStor a9 NetBSD f4 SpeedStor
16 Скрытый FAT16 63 GNU HURD или Sys ab Darwin boot f2 DOS вторичный
17 Скрытый HPFS/NTF 64 Novell Netware b7 BSDI fs fd Linux raid auto
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fe LANstep
1b Скрытый W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid ff BBT
1c Скрытый W95 FAT3 75 PC/IX
Шестнадцатеричный код (тип L для перечисления кодов): <– 83

Команда (m для помощи): <– w
Таблица разделов была изменена!

Вызов ioctl() для повторного чтения таблицы разделов.
Синхронизация дисков.
server1:~#

После этого вывод команды

fdisk -l

должен выглядеть следующим образом:

server1:~# fdisk -l
Диск /dev/sda: 32.2 ГБ, 32212254720 байт
255 голов, 63 сектора/трек, 3916 цилиндров
Единицы = цилиндры по 16065 * 512 = 8225280 байт
Идентификатор диска: 0x00031334

Устройство Загрузка Начало Конец Блоки Id Система
/dev/sda1 * 1 3749 30113811 83 Linux
/dev/sda2 3750 3916 1341427+ 5 Расширенный
/dev/sda5 3750 3916 1341396 82 Linux swap / Solaris

Диск /dev/sdb: 21.4 ГБ, 21474836480 байт
64 голов, 32 сектора/трек, 20480 цилиндров
Единицы = цилиндры по 2048 * 512 = 1048576 байт
Идентификатор диска: 0x882944df

Устройство Загрузка Начало Конец Блоки Id Система
/dev/sdb1 1 20480 20971504 83 Linux
server1:~#

Теперь мы создаем файловую систему на /dev/sdb1…

mkfs.ext3 /dev/sdb1

… и монтируем ее для тестирования:

mount /dev/sdb1 /mnt

Теперь вы должны увидеть новое устройство в выводах команд…

mount

server1:~# mount
/dev/sda1 на / тип ext3 (rw,errors=remount-ro)
tmpfs на /lib/init/rw тип tmpfs (rw,nosuid,mode=0755)
proc на /proc тип proc (rw,noexec,nosuid,nodev)
sysfs на /sys тип sysfs (rw,noexec,nosuid,nodev)
udev на /dev тип tmpfs (rw,mode=0755)
tmpfs на /dev/shm тип tmpfs (rw,nosuid,nodev)
devpts на /dev/pts тип devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/sdb1 на /mnt тип ext3 (rw)
server1:~#

… и

df -h

server1:~# df -h
Файловая система Размер Использовано Доступно Использовано% Смонтировано на
/dev/sda1 29G 685M 27G 3% /
tmpfs 253M 0 253M 0% /lib/init/rw
udev 10M 88K 10M 1% /dev
tmpfs 253M 0 253M 0% /dev/shm
/dev/sdb1 20G 173M 19G 1% /mnt
server1:~#

Вы можете размонтировать его так:

umount /mnt

Чтобы устройство автоматически монтировалось при загрузке, например, в директории /storage, мы создаем эту директорию…

mkdir /storage

… и добавляем следующую строку в /etc/fstab:

vi /etc/fstab

| [...] /dev/sdb1 /storage ext3 defaults,auto,_netdev 0 0 |

Для тестирования вы можете перезагрузить систему:

reboot

После перезагрузки устройство должно быть смонтировано:

mount

server1:~# mount
/dev/sda1 на / тип ext3 (rw,errors=remount-ro)
tmpfs на /lib/init/rw тип tmpfs (rw,nosuid,mode=0755)
proc на /proc тип proc (rw,noexec,nosuid,nodev)
sysfs на /sys тип sysfs (rw,noexec,nosuid,nodev)
udev на /dev тип tmpfs (rw,mode=0755)
tmpfs на /dev/shm тип tmpfs (rw,nosuid,nodev)
devpts на /dev/pts тип devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/sdb1 на /storage тип ext3 (rw,_netdev)
server1:~#

df -h

server1:~# df -h
Файловая система Размер Использовано Доступно Использовано% Смонтировано на
/dev/sda1 29G 685M 27G 3% /
tmpfs 253M 0 253M 0% /lib/init/rw
udev 10M 88K 10M 1% /dev
tmpfs 253M 0 253M 0% /dev/shm
/dev/sdb1 20G 173M 19G 1% /storage
server1:~#

4 Ссылки

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.