У меня есть сервер, на котором только что установлена 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 документа и последующий):
$ application delete presentation *
$ application delete host *
$ delete virtual_disk *
$ delete pool *
$ create pool raid_level=raid1 number=2
number
обозначает количество дисков в пуле. Созданный пул имеет id 7.
$ create virtual_disk capacity=max pool=7
Виртуальный диск основан на только что созданном пуле и использует всю его емкость.
$ application create host name=io1 ostype=linux
$ 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
$ application create presentation virtual_disk 7 host 3
(Идентификатор созданного мной виртуального диска 7)
И виртуальный диск, и пул хранения находятся в состоянии готовности.
Теперь, когда я предположительно представил диски своему серверу, Я хочу смонтировать это место для хранения в качестве файловой системы на моем сервере.
Я пытался зарегистрироваться /dev/
каталог. Только sda
диск пока смонтирован (жесткий диск моего сервера). Я спросил о каждом файле в /dev/
, и нашел несколько, которые могут иметь отношение к Fibre Channel или Scsi:
/dev/bsg/
это каталог, посвященный универсальному драйверу Linux SCSI, содержащий /dev/bsg/fc_host9
и /dev/bsg/fc_host10
;/dev/lpfcmgmt
посвящен драйверу Emulex;/dev/tgt
, используется целью 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, мне нужно было разбить устройство на разделы, а затем отформатировать его с заданной файловой системой.
Следующий эта нить:
parted
mklabel
команда.$ parted /dev/sdb mklabel gpt
parted
mkpart
команда:$ parted --align optimal /dev/sdb mkpart primary 0% 100%
Это дало мне раздел /dev/sb1
.
xfs
(Я уже использовал эту файловую систему для других своих разделов):$ mkfs.xfs /dev/sdb1
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 в будущем и не хотите жить на Диком Западе, я также рекомендую узнать о зонировании.