Как настроить сетевое хранилище: Руководство по настройке iSCSI между Linux и Windows

Что такое iSCSI и зачем он нужен?

Когда мы говорим о iSCSI (Internet Small Computer Systems Interface), мы имеем в виду специальный протокол, который связывает компьютеры, позволяя им общаться и передавать особые команды, называемые SCSI, через обычные интернет-сети (TCP/IP). Проще говоря, iSCSI делает возможным управление и передачу данных на диски, даже если они находятся далеко от вас, через интернет.

Ключевые Элементы iSCSI: Понимаем Основные Термины

  1. iSCSI Target (Цель):
    • Представьте себе сервер, который дает доступ к своему дисковому пространству.
    • Этот "Target" можно вообразить, как "диск" или "хранилище", которое доступно другим в сети.
  2. iSCSI Initiator (Инициатор):
    • Это как клиент, который соединяется с вышеупомянутым сервером, чтобы получить доступ к его дисковому пространству.
  3. LUN (Logical Unit Number):
    • Думайте об этом как о способе идентификации конкретного "диска" или области хранилища, предоставляемой iSCSI Target.

Как iSCSI Работает на Практике?

  • iSCSI Target (сервер) делится своим дисковым пространством.
  • iSCSI Initiator (клиент) соединяется с этим сервером, чтобы иметь возможность использовать это дисковое пространство через интернет, используя протокол iSCSI.
  • Команды, используемые для взаимодействия с дисками (SCSI-команды), пересылаются между клиентом (Initiator) и сервером (Target) через интернет.
  • Для операционной системы на клиенте (инициаторе) использование этого хранилища напоминает использование обычного локального диска, хотя данные перемещаются через сеть.

Применения iSCSI: Как Это Может Быть Полезно?

  • Создание сетевых хранилищ: Удобно хранить данные централизованно с использованием сетевых дисков.
  • Резервное копирование: Формирование бэкапов данных на удаленные или централизованные хранилища становится легче.
  • Создание кластеров: Организация общего доступа к дискам между несколькими серверами возможна и проста.

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

Далее мы попробуем реализовать теоретические знания на практике, создав iSCSI цель (или, проще говоря, "диск" на сервере) на операционной системе Linux. Под этим подразумевается, что один компьютер (сервер) будет "делиться" своим дисковым пространством, сделав его доступным для других. Затем, используя другую машину и то, что называется iSCSI инициатором (клиентским приложением, запросившим доступ к удаленному диску), мы попробуем подключиться к только что созданному "диску" и работать с ним, как если бы он был частью нашей локальной системы.

  1. Настройка iSCSI Target (на Linux сервере)
  2. Установка необходимого ПО

sudo apt update

sudo apt install targetcli-fb

b. Создание виртуального диска.

sudo truncate -s 5G /root/myvirtualdisk.img

Объем (5G) и путь (/root/myvirtualdisk.img) можно заменить по вашему усмотрению.

Настройка iSCSI Target

sudo targetcli

Далее, в интерфейсе targetcli:

/> cd backstores/fileio  # Перейти к настройкам хранилища

/backstores/fileio> create name=mydisk file_or_dev=/root/myvirtualdisk.img  # Создать хранилище

/backstores/fileio> cd /iscsi  # Перейти к настройкам iSCSI

/iscsi> create iqn.2023-01.com.example:mytarget  # Создать новый iSCSI target с конкретным IQN

/iscsi> cd iqn.2023-01.com.example:mytarget/tpg1/luns  # Перейти к настройкам LUN

/iscsi/iqn.2023-01.com.example:mytarget/tpg1/luns> create /backstores/fileio/mydisk  # Добавить LUN

/iscsi/iqn.2023-01.com.example:mytarget/tpg1/luns> cd ../  # Возврат к настройкам tpg1

/iscsi/iqn.2023-01.com.example:mytarget/tpg1> set attribute authentication=0  # Отключить аутентификацию

/iscsi/iqn.2023-01.com.example:mytarget/tpg1> set attribute cache_dynamic_acls=1  # Включить динамический кеш ACL

/iscsi/iqn.2023-01.com.example:mytarget/tpg1> set attribute demo_mode_write_protect=0  # Отключить защиту от записи в демонстрационном режиме

/iscsi/iqn.2023-01.com.example:mytarget/tpg1> set attribute generate_node_acls=1  # Включить автоматическую генерацию ACL

/iscsi/iqn.2023-01.com.example:mytarget/tpg1> cd /  # Вернуться в корень

/> saveconfig  # Сохранить конфигурацию

/> exit  # Выйти

 

Простое объяснение, как составляется IQN (Имя, которое используется для идентификации в iSCSI):

  • iqn: Это просто стартовое словечко, чтобы всем было понятно, что это имя по правилам iSCSI.
  • [yyyy-mm]: Это когда ваш домен появился в Интернете. Например, если вы зарегистрировали ваш сайт в январе 2023 года, напишите 2023-01.
  • (домен, но задом наперед): Напишите ваш домен, только наоборот. То есть, если у вас сайт example.com, напишите com.example.
  • (любая строка, которую хотите добавить): Тут можно придумать что-то своё, чтобы было легче понять, для чего этот ресурс используется.

Пример: если бы взять iqn.2023-01.com.example:critical-database

  • critical-database: Это та часть, которую мы придумали сами, чтобы помочь себе понять, что это очень важная база данных.

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

Простыми словами об установках, которые мы делаем в tpg1:

  • authentication=0: Просто говоря, мы отключаем "пароль" для подключения к нашему хранилищу, чтобы все было проще. Но на самом деле, когда вы настраиваете всё "по-настоящему", лучше включить пароль (или, профессионально говоря, аутентификацию CHAP), чтобы всё было безопаснее.
  • cache_dynamic_acls=1: Мы включаем специальную "память" для настроек безопасности, чтобы всё работало быстрее и плавнее, особенно если у нас много подключений к хранилищу.
  • demo_mode_write_protect=0: Эта штука позволяет тем, кто подключается к хранилищу, не только читать данные, но и записывать их. Включаем это, чтобы они могли свободно сохранять нужную информацию туда.
  • generate_node_acls=1: Здесь мы разрешаем автоматическое создание доступов для всех, кто хочет подключиться к хранилищу, чтобы нам не пришлось делать это вручную каждый раз. В реальной работе вы, возможно, захотите больше контроля и будете создавать эти доступы сами.

Мини-заметка: А еще iSCSI Target можно создать, используя LVM в Linux

Итак, вы уже знакомы с процессом создания iSCSI Target, используя файл, как мы видели выше. Но что, если мы хотим использовать LVM, чтобы обеспечить более гибкое управление нашим дисковым пространством? Если коротко, мы можем использовать не только файл, как выше, но и создать что-то типа виртуального диска с помощью LVM и использовать его как iSCSI Target.

Шаг 1: Создаём виртуальный диск (логический том LVM)

Вводим в терминале:

lvcreate --size 5G --name myiscsitarget myvg

Что мы тут написали:

  • 5G: мы создаем диск на 5 гигабайт.
  • myiscsitarget: это просто название нашего нового виртуального диска.
  • myvg: это имя группы томов, к которой относится наш новый диск.

Шаг 2: Добавляем наш виртуальный диск в настройки iSCSI

Когда мы уже в targetcli, пишем:

/backstores/fileio> create name=mylvdisk dev=/dev/myvg/myiscsitarget

Тут важно:

  • mylvdisk: это как мы будем звать наш диск в настройках iSCSI.
  • /dev/myvg/myiscsitarget: это путь к диску, который мы только что создали.

Остальные шаги остаются без изменения.

Переходим к Настройкам Клиента: Как Подключиться к Вашему iSCSI Target

Теперь, когда наши iSCSI Targets (цели) настроены и готовы к использованию, давайте переключимся на сторону клиента и разберем, как подключиться к нашему новоиспеченному виртуальному диску. Итак, как клиент может установить соединение с iSCSI Target и начать использовать предоставленное дисковое пространство:

  1. Установка iSCSI Initiator

Сначала убедимся, что у клиента установлен iSCSI Initiator.

  • Для Linux:

sudo apt update

sudo apt install open-iscsi

  • Для Windows: iSCSI Initiator уже встроен в систему и не требует отдельной установки.

  2. Подключение к iSCSI Target

Теперь, когда iSCSI Initiator установлен, мы можем подключиться к Target.

  • На Linux

Замените [target_ip] и [iqn_name] на соответствующие значения вашей конфигурации и выполните:

sudo iscsiadm --mode discovery --type sendtargets --portal [target_ip]

sudo iscsiadm --mode node --targetname [iqn_name] --portal [target_ip]:3260 –login

  • На Windows:
    1. Откройте iSCSI Initiator/Инициатор.
    2. Введите IP-адрес целевого сервера (iSCSI Target) в поле "Target:/Объект".
    3. Нажмите "Quick Connect/Быстрое подключение".
    4. В новом окне выберите целевой объект и нажмите "Connect/Подключить".

  3. Использование Подключенного Диска

После подключения, диск становится доступен для использования.

  • На Linux: Диск может быть отформатирован и смонтирован в системе.
  • На Windows: Используйте "Управление дисками" для инициализации, форматирования, и назначения буквы диску.

Работа с diskpart в Windows (если интерфейса GUI нет)

Если вы работаете на сервере Windows без графического интерфейса, diskpart - ваш инструмент для работы с дисками. Просто следуйте инструкциям ниже, заменяя [disk_number] на соответствующий номер диска и выбрав нужную букву вместо M:

Diskpart  #запуск программы

list disk  # отобразит список дисков

select disk [disk_number]  # выберите ваш iSCSI диск

online disk  # включит выбранный диск (если он не онлайн)

attributes disk clear readonly  # если нужно, снимет защиту диска от записи

convert gpt  # конвертировать диск в GPT

create partition primary  # создать основной раздел

format fs=ntfs label="MyiSCSIDisk" quick  # форматировать раздел в NTFS

assign letter=M  # назначить букву диску

exit  # выход

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

 

Возможные Трудности при Настройке

Рассмотрим несколько распространенных проблем и трудностей, с которыми вы можете столкнуться в процессе настройки и эксплуатации iSCSI Target и Initiator. Понимание и предвидение потенциальных "подводных камней" поможет сделать ваш опыт использования технологии более гладким и избежать нежелательных ситуаций.

  1. Диск "Только для чтения"

Проблема:

При попытке инициализации или форматирования диска в Windows вы сталкиваетесь с ошибкой, что диск защищен от записи.

Решение:

  • В Linux, проверьте, установлен ли режим "Только для чтения" в targetcli. Вы можете проверить это, выполнив команду get attribute в targetcli, находясь в директории соответствующего TPG.

 

  2. В Windows, используйте diskpart для снятия флага "Только для чтения" с диска:

diskpart

select disk [disk_number]

attributes disk clear readonly

 

  3. Проблемы подключения

Проблема:

iSCSI Initiator не может подключиться к iSCSI Target.

Решение:

  • Проверьте доступность сети между iSCSI Initiator и Target.
  • Проверьте, правильно ли сконфигурирован IQN в конфигурации targetcli.
  • Убедитесь, что firewall на вашем Linux-сервере разрешает трафик iSCSI (по умолчанию порт 3260).

 

  4. Ошибка при создании диска в targetcli

Проблема:

Возникают ошибки при попытке создать виртуальный диск в targetcli.

Решение:

  • Убедитесь, что у вас достаточно свободного места в файловой системе для создания виртуального диска.
  • Если вы используете LVM, проверьте, правильно ли указан путь к LV и есть ли у вас нужные разрешения.

 

  5. Невозможность форматирования диска в Windows

Проблема:

Windows видит подключенный диск, но не может его форматировать.

Решение:

  • Убедитесь, что диск не был помечен как "Только для чтения" на этапе конфигурации в Linux.
  • Попробуйте использовать diskpart для очистки диска и создания нового тома, как было описано ранее.

 

  6.  Производительность iSCSI-диска

Проблема:

Вы обнаруживаете, что производительность вашего iSCSI-диска ниже ожидаемой.

Решение:

  • Проверьте сетевое соединение между Initiator и Target. Используйте Ethernet со скоростью как минимум 1 Гбит/с.
  • Рассмотрите возможность использования jumbo frames для увеличения размера пакетов Ethernet и, следовательно, уменьшения нагрузки на CPU.
  • Проверьте нагрузку и ресурсы сервера, на котором размещен Target, особенно I/O диска и используемую пропускную способность сети.

Заключение

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

Итоги и Практическая Польза

  • Решение в Ситуации Ограниченности Ресурсов: Когда серверы близки к тому, чтобы исчерпать свои ресурсы по хранению данных, iSCSI может стать краткосрочным решением, предоставляя дополнительное пространство без необходимости физической модернизации оборудования.
  • Перенос Данных: Способность iSCSI подключать диски через сеть делает его отличным выбором для переноса больших объемов данных между серверами, минимизируя время простоя и обеспечивая непрерывность работы сервисов.
  • Альтернативное Решение для Бэкапа: В случае отсутствия специализированного СХД, iSCSI может служить временным или постоянным решением для создания бэкапов ваших критически важных данных.
  • Быстрое Расширение Хранилища: iSCSI предоставляет возможность быстро и относительно просто расширить хранилище, минимизируя потребность в новом оборудовании и обеспечивая гибкость в управлении ресурсами.

Дополнительные Ресурсы и Следующие Шаги

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

  • Официальная документация по iSCSI для Linux и Windows.
  • Форумы и сообщества, такие как Server Fault и Stack Overflow, где можно обсудить вопросы, связанные с iSCSI и сетевыми хранилищами данных.
  • Блоги и статьи, посвященные сетевым технологиям и управлению данными.

И напоследок, если вы столкнетесь с трудностями или желаете профессиональной помощи по вопросам аренды или покупки сервера, наша команда в olp.kz всегда готова вам помочь. Посетите нашу страницу по аренде dedicated сервера или покупке сервера, чтобы узнать больше о том, как мы можем ассистировать в вопросах вашего IT-инфраструктурного развития.