сканировать / обнаруживать новые LUN и SCSI-диски

Thank you for reading this post, don't forget to subscribe!

Когда систе­ма Linux под­клю­че­на к SAN (Storage Area Network), вам необ­хо­ди­мо повтор­но про­ска­ни­ро­вать служ­бу iSCSI, что­бы обна­ру­жить новые LUN.

Для это­го вы долж­ны предо­ста­вить груп­пе хра­не­ния дан­ных номер WWN хоста Linux и тре­бу­е­мый раз­мер LUN.

После того, как груп­па хра­не­ния сопо­ста­вит LUN с задан­ным хостом Linux, они предо­ста­вят вам новые све­де­ния о LUN.

LUN в тер­ми­нах хра­не­ния назы­ва­ет­ся после­до­ва­тель­ным шест­на­дца­те­рич­ным номе­ром LUN.

Вам необ­хо­ди­мо про­ска­ни­ро­вать хост SCSI, что­бы най­ти новые LUN, назна­чен­ные груп­пой хранения.

Это мож­но сде­лать дву­мя спо­со­ба­ми: ска­ни­ро­вать каж­дое хост-устрой­ство scsi или запу­стить скрипт rescan-scsi-bus.sh для обна­ру­же­ния новых дисков.

После ска­ни­ро­ва­ния их мож­но будет най­ти в ката­ло­ге «/dev/disk/by-id».

 

Кро­ме того, вы може­те най­ти их с помо­щью коман­ды Multipath, если они уже настро­е­ны с Multipath.

Multipath в основ­ном настра­и­ва­ет­ся на сер­ве­ре базы дан­ных Oracle для повы­ше­ния производительности.

 

 

Эта про­це­ду­ра рабо­та­ет в систе­мах на базе Red Hat 6.x, 7.x и 8.x (RHEL — Red Hat Enterprise Linux), таких как CentOS и Oracle Linux.

Метод 1: Как найти новые LUN и SCSI-диски в Linux с помощью файла класса «/ sys»

Фай­ло­вая систе­ма sysfs — это псев­до­фай­ло­вая систе­ма, кото­рая предо­став­ля­ет интер­фейс для струк­тур дан­ных ядра.

Фай­лы в sysfs предо­став­ля­ют инфор­ма­цию об устрой­ствах, моду­лях ядра, фай­ло­вых систе­мах и дру­гих ком­по­нен­тах ядра.

Фай­ло­вая систе­ма sysfs обыч­но мон­ти­ру­ет­ся в «/sys».

Обыч­но она уста­нав­ли­ва­ет­ся систе­мой автоматически.

Вы може­те исполь­зо­вать коман­ду echo для ска­ни­ро­ва­ния каж­до­го хост-устрой­ства scsi, как пока­за­но ниже.
# echo "- - -" > /sys/class/scsi_host/host[n]/scan

Когда вы запус­ка­е­те ука­зан­ную выше коман­ду для повтор­но­го ска­ни­ро­ва­ния все­го, три тире («- — -») отно­сят­ся к пара­мет­ру под­ста­но­воч­но­го знака.
Эти зна­че­ния будут следующими:
# echo "c t l" > /sys/class/scsi_host/host[n]/scan

где

  • c — Канал на HBA
  • t — целе­вой иден­ти­фи­ка­тор SCSI
  • l — LUN ID
  • n — номер HBA

Выпол­ни­те при­ве­ден­ную ниже коман­ду, что­бы най­ти все номе­ра хост-шины в вашей системе.
# ls /sys/class/scsi_host
host0 host1 host2

Как толь­ко вы полу­чи­те номер хост-шины, выпол­ни­те сле­ду­ю­щую коман­ду, что­бы обна­ру­жить новые диски.

Кро­ме того, их мож­но про­ска­ни­ро­вать с помо­щью «цик­ла for» с помо­щью одной команды.
# for host in ls /sys/class/scsi_host/;do echo "- - -" >/sys/class/scsi_host/${host}/scan; done

Вы може­те про­ве­рить их с помо­щью коман­ды ls, как упо­ми­на­лось в нача­ле статьи.
# ls /dev/disk/by-id | grep -i "serial-hex of LUN"

Метод 2: Как просканировать новые LUN и SCSI-диски в Linux с помощью скрипта

Убе­ди­тесь, что вы уже уста­но­ви­ли пакет «sg3_utils», что­бы исполь­зо­вать этот сце­на­рий. В про­тив­ном слу­чае выпол­ни­те сле­ду­ю­щую коман­ду, что­бы уста­но­вить его.

Для систем RHEL/CentOS 6/7 исполь­зуй­те коман­ду yum для уста­нов­ки sg3_utils.
# yum install -y sg3_utils

Для систем RHEL / CentOS 8 и Fedora исполь­зуй­те коман­ду dnf для уста­нов­ки sg3_utils.
# dnf install -y sg3_utils

Теперь вы може­те повтор­но ска­ни­ро­вать LUN с помо­щью скрип­та rescan-scsi-bus.sh.
# ./rescan-scsi-bus.sh