Как сканировать новые FC LUNS и SCSI диски в Linux?¶
В статье рассмотрено сканирование новых FC LUNS и SCSI дисков в Linux без перезагрузки сервера. Система производит много работы в фоновом режиме, когда выполняются команды сканирования хранилища. Этот тип сканирования может быть распределительным, поскольку он может вызывать задержки во время тайм-аута операции ввода-вывода и неожиданное удаление устройств из ОС.
Сканирование FC-LUN в Linux¶
Выясняем, сколько дисков видно в «fdisk -l»:
# fdisk -l 2>/dev/null | egrep '^Disk' | egrep -v 'dm-' | wc -l
Получаем список адаптеров шины хоста (активных портов). Вы можете использовать «systool -fc_host -v», чтобы проверить доступность FC в системе:
# ls /sys/class/fc_host host0 host1
В этом случае вам необходимо просканировать HBA host0 и host1.
Если системной виртуальной памяти слишком мало, не следует продолжать дальше. Если у вас достаточно свободной виртуальной памяти, вы можете выполнить следующую команду для сканирования новых LUNS (портов):
# echo "1" > /sys/class/fc_host/host0/issue_lip # echo "- - -" > /sys/class/scsi_host/host0/scan # echo "1" > /sys/class/fc_host/host1/issue_lip # echo "- - -" > /sys/class/scsi_host/host1/scan
Примечание
Вам необходимо отслеживать «issue_lip» в
/var/log/messages
, чтобы определить, когда сканирование завершится. Эта операция является асинхронной.Вариант сканирования с помощью скрипта
rescan-scsi-bus.sh
для обнаружения новых LUNS:# apt install sg3-utils # rescan-scsi-bus.sh
Проверяем, отображается ли новый LUN, подсчитав количество доступных дисков:
# fdisk -l 2>/dev/null | egrep '^Disk' | egrep -v 'dm-' | wc -l
Если добавлены какие-либо новые LUNS, вы можете увидеть, что количество больше, чем перед сканированием LUNS.
Сканирование SCSI-дисков в Linux¶
Найдем существующий диск из fdisk:
# fdisk -l |egrep '^Disk' |egrep -v 'dm-' Disk /dev/sda: 21.5 GB, 21474836480 bytes
Узнаем, сколько контроллеров SCSI сконфигурировано:
# ls /sys/class/scsi_host/host host0 host1 host2
В этом случае вам нужно просканировать host0, host1 и host2.
Просканируем диски SCSI, используя команду:
# echo "- - -" > /sys/class/scsi_host/host0/scan # echo "- - -" > /sys/class/scsi_host/host1/scan # echo "- - -" > /sys/class/scsi_host/host2/scan
Убедимся, что новые диски видны:
# fdisk -l |egrep '^Disk' |egrep -v 'dm-' Disk /dev/sda: 21.5 GB, 21474836480 bytes Disk /dev/sdb: 1073 MB, 1073741824 bytes Disk /dev/sdc: 1073 MB, 1073741824 bytes
Для сканирования всей шины SCSI и обновления SCSI для отображения новых устройств можно также использовать скрипт /usr/bin/rescan-scsi-bus.sh
.
Но в большинстве случаев скрипт не сможет сканировать новые диски, и необходимо использовать команду echo.
Если вы изменяете размер LUN, вам необходимо пересканировать устройства. Сделать это можно с помощью команды:
for i in /sys/class/scsi_device/*/device/rescan ; do echo 1 > $i ; done