Назад | Перейти на главную страницу

Сервер Centos 7 не видит диски дискового массива

Контекст

У меня есть сервер, на котором только что установлена ​​CentOS 7, подключенный к массиву дисков через соединение Fibre Channel.

Я хочу смонтировать диски Disk Array в файловой системе моего сервера, а затем настроить на нем сервер NFS, чтобы сделать это хранилище доступным для всех узлов в кластере (и сервер, и дисковый массив являются частью небольшого кластера I '' м управляющей).

Сервер: Бык R423

Дисковый массив: DDN S2A6620 (сеть DirectData)

Я использую только один из обоих контроллеров дискового массива.

Вот отрывок из команды lspci вывод:

# lspci
85:00.0 Fibre Channel: Emulex Corporation Saturn-X: LightPulse Fibre Channel Host Adapter (rev 03)
85:00.1 Fibre Channel: Emulex Corporation Saturn-X: LightPulse Fibre Channel Host Adapter (rev 03)

Поэтому я думаю, что мой сервер хорошо обнаруживает FC HBA (адаптер главной шины Fibre Channel), который, похоже, принадлежит бренду Emulex.

Дисковый массив совместим с серверами Red Hat 5 и 6, поэтому я не уверен, действительно ли он может работать с сервером CentOS 7, но я решил попробовать.

Я следовал руководству пользователя дискового массива, мне удалось подключиться к нему удаленно с сервера, и я выполнил всю необходимую настройку (создание пула хранения Raid 1 из 2 дисков, создание виртуального диска из этот пул, чтобы представить диски серверу, представить виртуальный диск хосту с номером LUN, ...). Но тогда в руководстве пользователя ничего не говорится о стороне сервера.


Конфигурация дискового массива

Некоторые подробности о том, как я выполнял настройку на стороне дискового массива.

ОС дискового массива - SFA OS v1.3.0.8. Ближайшее руководство, которое я нашел, это вот этот (v1.4.0). В основном это шаг, который я выполнил (соответствующий разделу 3.6.5 документа и последующий):

  1. Очистка дискового массива

$ application delete presentation * $ application delete host * $ delete virtual_disk * $ delete pool *

  1. Создать пул хранения

$ create pool raid_level=raid1 number=2

number обозначает количество дисков в пуле. Созданный пул имеет id 7.

  1. Создайте виртуальный диск на основе этого пула

$ create virtual_disk capacity=max pool=7

Виртуальный диск основан на только что созданном пуле и использует всю его емкость.

  1. Создайте объект хоста, соответствующий моему серверу:

$ application create host name=io1 ostype=linux

  1. Импортируйте обнаруженный инициатор в отношения с хостом:

$ app show discovered * | Initiator Identifier | | Index | Type | ID | node | port | Ctrl 0 | Ctrl 1 | 00003 FC 0x000001 0x20000000c99de40f 0x10000000c99de40f 1 Total FC Initiators: 1 Есть только один обнаруженный инициатор с идентификатором 3. Он соответствует одному из хостов Fibre Channel моего сервера:

$ cat /sys/class/fc_host/host10/port_name 0x10000000c99de40f

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

$ application import discovered_initiator 3 host 3

  1. Подарите виртуальный диск хосту

$ application create presentation virtual_disk 7 host 3

(Идентификатор созданного мной виртуального диска 7)

И виртуальный диск, и пул хранения находятся в состоянии готовности.


Проблема

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

Я пытался зарегистрироваться /dev/ каталог. Только sda диск пока смонтирован (жесткий диск моего сервера). Я спросил о каждом файле в /dev/, и нашел несколько, которые могут иметь отношение к Fibre Channel или Scsi:

Я установил sg3_utils, и запустите сканирование на fc_host10:

$ sg_scan /dev/bsg/fc_host10
/dev/bsg/fc_host10: scsi0 channel=0 id=0 lun=0 [em]

После того, как я запустил эту команду сканирования, я все еще не мог найти дополнительные /dev/sd*.

Более того, /sys/class/fc_host/host10/ это ссылка на /sys/devices/pci0000:80/0000:80:07.0/0000:85:00.1/host10/fc_host/host10, так что я полагаю, это дает мне своего рода «ID» автобуса.

Но вот список файлов в каталоге /dev/disk/by-path:

$ ll /dev/disk/by-path
total 0
lrwxrwxrwx. 1 root root  9 Aug  3 22:02 pci-0000:84:00.0-scsi-0:0:0:0 -> ../../sda
lrwxrwxrwx. 1 root root 10 Aug  3 22:02 pci-0000:84:00.0-scsi-0:0:0:0-part1 -> ../../sda1
lrwxrwxrwx. 1 root root 10 Aug  3 22:02 pci-0000:84:00.0-scsi-0:0:0:0-part2 -> ../../sda2

Идентификаторы не совпадают, и в любом случае это символические ссылки на /dev/sda*, которые соответствуют локальному диску моего сервера.

Как предложил billyw, я побежал

echo '- - -' > /sys/class/scsi_host/host10/scan

но он ничего не выводил, и все еще не было никаких новых /dev/sd* появляется.


Вопросы

Я предполагаю, что в случае успеха диски должны выглядеть как некоторые /dev/sd*/. Это правда? Если нет, где должны появиться эти диски?

Наконец, как мне сделать так, чтобы эти диски отображались на моем сервере?


РЕДАКТИРОВАТЬ

Следуя совету Билли, я побежал echo 1 > /sys/class/fc_host/hostX/issue_lip. Вот журналы.

Видимо FLOGI ошибки здесь не важны, так как я использую топологию петли, а не структуру фабрики. Тем не менее, ни один диск не появляется в /dev.

Теперь после эта тема, Я перезапустил lpfc Водитель:

$ modprobe -r lpfc
$ modprobe lpfc

Что привело к эти журналы в /var/log/messages.

В это время, /dev/sdb и /dev/sdc появился. Но я не смог их сесть:

$ mount /dev/sdb /mnt/db
mount: /dev/sdb is write-protected, mounting read-only
mount: unknown filesystem type '(null)'

Итак, я попытался исследовать журналы, созданные при перезапуске lpfc. Сначала я заметил, что Link Up Event npiv not supported in loop topology сообщение. Я перезапустил lpfc, отключение npiv на этот раз (я думаю npiv бесполезно в моем случае):

$ modprobe -r lpfc
$ modprobe lpfc lpfc_enable_npiv=0

Журналы совершенно такие же, но npiv сообщение исчезло.

Я все еще изучаю журналы, следующая ошибка в моем списке TODO Warning! Received an indication that the LUN assignments on this target have changed. The Linux SCSI layer does not automatically remap LUN assignments..

Чтобы диски отображались под /dev/sd*, решением было перезапустить драйвер HBA Fibre Channel, как указано в этот ответ. В моем случае это было lpfc :

стоп lpfc Водитель:

$ modprobe -r lpfc

Начало lpfc Водитель:

$ modprobe lpfc

Затем мое устройство появилось под /dev/sdb. После этого, как заявил GregL, мне нужно было разбить устройство на разделы, а затем отформатировать его с заданной файловой системой.

Следующий эта нить:

  1. Я создал на диске таблицу разделов GPT, используя parted mklabelкоманда.

$ parted /dev/sdb mklabel gpt

  1. Затем я создал основной раздел, занимающий все пространство на этом устройстве (от 0% до 100%) с оптимальным выравниванием, используя parted mkpartкоманда:

$ parted --align optimal /dev/sdb mkpart primary 0% 100%

Это дало мне раздел /dev/sb1.

  1. После этого я отформатировал раздел с файловой системой xfs (Я уже использовал эту файловую систему для других своих разделов):

$ mkfs.xfs /dev/sdb1

  1. Наконец, я смонтировал раздел:

mount /dev/sdb1 /mnt/disk_array/

А теперь все отлично работает :)

Я основываю свой ответ на эта документация для вашего продукта, особенно раздел 3.12. Ваш продукт мне не принадлежит, поэтому доверяйте документации больше, чем мне.

Вам необходимо настроить массив хранения DDN так, чтобы сервер имел к нему доступ. В вашем случае термин инициатор относится к HBA Fibre Channel на сервере, а термин цель относится к портам в массиве хранения DDN, которые будут представлять LUN.

Подводя итог этапам:

  • Покажите инициаторам, которые обнаруживает массив хранения, с помощью APPLICATION SHOW DISCOVERED_INITIATOR *
  • Создайте хост (который кажется просто формой маркировки) с APPLICATION CREATE HOST INDEX=<index> NAME=<host name> OSTYPE=<ostype>
  • Сопоставьте хост с инициатором, с APPLICATION IMPORT DISCOVERED_INITIATOR=<initiator_id> HOST=<host-id>
  • Проверьте правильность сопоставления с помощью APPLICATION SHOW INITIATOR *
  • Представьте виртуальные диски хосту с помощью APPLICATION CREATE PRESENTATION INDEX=<index> HOST=<host> VIRTUAL_DISK=<vd-id> LUN=<lun-id>
  • (Существует альтернативный беспорядочный режим для представления виртуального диска всем портам хоста, но с предупреждением)
  • Проверьте правильность презентации с помощью APPLICATION SHOW PRESENTATION *

На стороне сервера вы должны иметь возможность повторно сканировать LUN с помощью следующего (заменяя X на номер HBA):

echo '- - -' > /sys/class/scsi_host/hostX/scan

Если вы планируете делать больше с Fibre Channel в будущем и не хотите жить на Диком Западе, я также рекомендую узнать о зонировании.