- Как сканировать новые FC LUNS и SCSI диски в Linux?¶
- Сканирование FC-LUN в Linux¶
- Сканирование SCSI-дисков в Linux¶
- Как сканировать новые FC LUNS и SCSI диски в Linux?¶
- Сканирование FC-LUN в Linux¶
- Сканирование SCSI-дисков в Linux¶
- 🐧 Как сканировать / обнаруживать новые LUN и SCSI-диски на Linux
- Метод 1: Как найти новые LUN и SCSI-диски в Linux с помощью файла класса «/ sys»
- Метод 2: Как просканировать новые LUN и SCSI-диски в Linux с помощью скрипта
- Linux Rescan SCSI Bus
- Rescan Specific SCSI Device
- Rescan Entire Host SCSI Bus
- Rescan Specific SCSI Device (Deprecated)
- References
- Rescan SCSI bus on Linux System
- Rescan SCSI bus on Linux
- When Adding a New Disk
- When Increasing Existing Disk Size
Как сканировать новые FC LUNS и SCSI диски в Linux?¶
В статье рассмотрено сканирование новых FC LUNS и SCSI дисков в Linux без перезагрузки сервера. Система производит много работы в фоновом режиме, когда выполняются команды сканирования хранилища. Этот тип сканирования может быть распределительным, поскольку он может вызывать задержки во время тайм-аута операции ввода-вывода и неожиданное удаление устройств из ОС.
Сканирование FC-LUN в Linux¶
# fdisk -l 2>/dev/null | egrep '^Disk' | egrep -v 'dm-' | wc -l
# ls /sys/class/fc_host host0 host1
# 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 , чтобы определить, когда сканирование завершится. Эта операция является асинхронной.
# apt install sg3-utils # rescan-scsi-bus.sh
# fdisk -l 2>/dev/null | egrep '^Disk' | egrep -v 'dm-' | wc -l
Сканирование SCSI-дисков в Linux¶
# fdisk -l |egrep '^Disk' |egrep -v 'dm-' Disk /dev/sda: 21.5 GB, 21474836480 bytes
# ls /sys/class/scsi_host/host host0 host1 host2
# 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.
Как сканировать новые FC LUNS и SCSI диски в Linux?¶
В статье рассмотрено сканирование новых FC LUNS и SCSI дисков в Linux без перезагрузки сервера. Система производит много работы в фоновом режиме, когда выполняются команды сканирования хранилища. Этот тип сканирования может быть распределительным, поскольку он может вызывать задержки во время тайм-аута операции ввода-вывода и неожиданное удаление устройств из ОС.
Сканирование FC-LUN в Linux¶
# fdisk -l 2>/dev/null | egrep '^Disk' | egrep -v 'dm-' | wc -l
# ls /sys/class/fc_host host0 host1
# 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 , чтобы определить, когда сканирование завершится. Эта операция является асинхронной.
# apt install sg3-utils # rescan-scsi-bus.sh
# fdisk -l 2>/dev/null | egrep '^Disk' | egrep -v 'dm-' | wc -l
Сканирование SCSI-дисков в Linux¶
# fdisk -l |egrep '^Disk' |egrep -v 'dm-' Disk /dev/sda: 21.5 GB, 21474836480 bytes
# ls /sys/class/scsi_host/host host0 host1 host2
# 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 и SCSI-диски на Linux
Когда система 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».
# ll /dev/disk/by-id total 0 lrwxrwxrwx 1 root root 10 Jul 9 17:52 scsi-60a98000486e542d4f5a2f47694d684b -> ../../sdah lrwxrwxrwx 1 root root 9 Jul 9 17:52 scsi-60a98000486e542d4f5a2f47694d684c -> ../../sdw . . lrwxrwxrwx 1 root root 10 Jul 9 17:52 scsi-60a98000486e542d4f5a2f47694d684d -> ../../sdjk lrwxrwxrwx 1 root root 10 Jul 9 17:52 scsi-60a98000486e542d4f5a2f47694d684e -> ../../sdaa lrwxrwxrwx 1 root root 9 Jul 9 17:52 scsi-60a98000486e542d4f5a2f47694d684f -> ../../sdh
Кроме того, вы можете найти их с помощью команды Multipath, если они уже настроены с Multipath.
Multipath в основном настраивается на сервере базы данных Oracle для повышения производительности.
# multipath -ll 60a98000486e542d4f5a2f47694d684b dm-37 NETAPP,LUN C-Mode size=512G features='3 queue_if_no_path pg_init_retries 50' hwhandler='1 alua' wp=rw |-+- policy='round-robin 0' prio=50 status=active | |- 1:0:4:18 sdoe 128:416 active ready running | |- 0:0:4:18 sdpq 131:256 active ready running | |- 0:0:5:18 sdsr 135:496 active ready running | `- 1:0:5:18 sdsq 135:480 active ready running `-+- policy='round-robin 0' prio=10 status=enabled |- 1:0:1:18 sdfw 131:32 active ready running |- 1:0:0:18 sdci 69:96 active ready running |- 0:0:1:18 sdbz 68:208 active ready running |- 0:0:0:18 sds 65:32 active ready running |- 1:0:3:18 sdmd 69:336 active ready running |- 1:0:2:18 sdjj 8:464 active ready running |- 0:0:3:34 sdjt 65:368 active ready running `- 0:0:2:34 sdgi 131:224 active ready running
Эта процедура работает в системах на базе 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
Как только вы получите номер хост-шины, выполните следующую команду, чтобы обнаружить новые диски.
# echo "- - -" > /sys/class/scsi_host/host0/scan # echo "- - -" > /sys/class/scsi_host/host1/scan # echo "- - -" > /sys/class/scsi_host/host2/scan
Кроме того, их можно просканировать с помощью «цикла for» с помощью одной команды.
# for host in ls /sys/class/scsi_host/;do echo "- - -" >/sys/class/scsi_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.
Для систем RHEL / CentOS 8 и Fedora используйте команду dnf для установки sg3_utils.
Linux Rescan SCSI Bus
If you have added one to many disks to a Linux server or added partitions to an existing disk and the operating system has not yet recognized them, you might need to rescan the SCSI bus. You could simply reboot the Linux server, but that’s usually not an option for production systems.
Below are three different methods for rescanning SCSI devices that I have tested on RHEL 5 and RHEL 6.
Rescan Specific SCSI Device
This command consistently rescanned the specific SCSI device.
Replace $DEVICE with sda, sdb, sdc, etc.
echo 1 > /sys/block/$DEVICE/device/rescan
Rescan Entire Host SCSI Bus
This command never consistently rescanned the host SCSI bus.
Replace $HOST with the SCSI host you want to scan which could be host0, host1, host2, etc. Typically $HOST is host0.
echo "- - -" > /sys/class/scsi_host/$HOST/scan
The triple dashes, — — —, are wildcards that rescan every channel, every target, and every LUN on the specified SCSI host.
Rescan Specific SCSI Device (Deprecated)
This command never consistently rescanned the specific SCSI bus, and it has been deprecated by Red Hat.
Host:Bus:Target:LUN (0:0:2:0 in this example) might be different for your system. Run ls -al /dev/disk/by-path to find it.
echo "scsi remove-single-device 0:0:2:0" > /proc/scsi/scsi echo "scsi add-single-device 0:0:2:0" > /proc/scsi/scsi
References
If you found this post useful and would like to help support this site — and get something for yourself — sign up for any of the services listed below through the provided affiliate links. I will receive a referral payment from any of the services you sign-up for.
Get faster shipping and more with Amazon Prime: About to order something from Amazon but want to get more value out of the money you would normally pay for shipping? Sign-up for a free 30-day trial of Amazon Prime to get free two-day shipping, access to thousands of movies and TV shows, and more.
Thanks for reading and take care.
Rescan SCSI bus on Linux System
SCSI stands for Small Computer System Interface and is a set of standards for transferring data and connecting devices and computers. Sometimes you make changes to disk devices on your Linux box while online which is even more often nowadays using virtual machines. Sometimes you also add a new disk and do not want to restart your Linux system. Wether you need to add a new disk or increase an existing disk size of your virtual machine, the changes will not be instantly visible from the Linux operating system because you need to rescan SCSI bus on Linux to see the change. It is quite easy to rescan SCSI bus on Linux, you can do it with a simple one line command (depending on the number of SCSI devices you have connected).
Follow the steps described below and you will see the new size of your disk.
Rescan SCSI bus on Linux
Please note that the rescan SCSI bus on Linux does not interrupt operating system operation nor remove any of the disks. Rescanning SCSI bus on Linux with the below procedure will add/freshen devices but not remove them.
When Adding a New Disk
When adding a new disk to your Linux system you need to rescan SCSI host.
You can do this with the following command:
echo "- - -" > /sys/class/scsi_host/hostX/scan
..where X is the number of SCSI host to scan.
You probably have more than one SCSI host available so to make it right you should repeat the above command for each SCSI host available.
Below is a practical example on how to rescan SCSI bus on Linux and and see the newly added disk:
[root@node-1 ~]# echo "- - -" > /sys/class/scsi_host/host0/scan [root@node-1 ~]# echo "- - -" > /sys/class/scsi_host/host1/scan [root@node-1 ~]# echo "- - -" > /sys/class/scsi_host/host2/scan
The “- – -” part is where you tell the SCSI host what exactly to rescan and the hyphens are wildcards which tell SCSI host to rescan all controllers, channels and LUNs.
When Increasing Existing Disk Size
If you changed the size of an existing disk you might notice that the operating system can not see the new disk size until you rescan SCSI bus on Linux operating system.
The easiest way i’ve found is to rescan the specific device with the following command:
echo "1" > /sys/class/block/sdX/device/rescan
..where X is the device you increased and want to rescan.
Below is a practical example on how to rescan SCSI bus on Linux and and see the newly added disk:
[root@node-1 ~]# echo "1" > /sys/class/block/sdb/device/rescan
The “1” is a flag which causes the SCSI host to rescan the “sdb” block device and therefore refresh the data about the disk size. Please note that i choose this command due to the human readable “sdb” naming which is really easy to remember.
Otherwise the command could also be triggered as follows:
[root@node-1 ~]# echo "1" > /sys/class/scsi_device/2:0:1:0/device/rescan
..but in the last case you should know which device you want to rescan by the SCSI bus ID.