Мне постоянно приходится вносить изменения в SAN, что означает, что мне также постоянно приходится повторно сканировать шину scsi, чтобы мои различные изменения отражались на машинах, на которые я экспортировал диски.
В течение некоторого времени меня мучили различные аспекты повторного сканирования дисков в Linux.
Не хочу отдавать должное Microsoft, но они действительно упростили процесс до единой команды, которая делает все и намного быстрее, чем их Linux аналоги.
Я использую команду rescan-scsi-bus.sh уже довольно давно. Однако команду rescan-scsi-bus.sh обычно необходимо запускать несколько раз в зависимости от того, какие изменения были внесены. IE. Если путь был удален, мне нужно запустить rescan-scsi-bus.sh -f -a -r -m. Однако эта команда не будет сканировать диски на предмет переназначенных дисков и не будет сканировать диски с измененным размером. Чтобы получить ту же функциональность из rescan-scsi-bus.sh, мне приходится запускать команду несколько раз подряд, что может занять много времени (с большим количеством дисков, 5 минут или около того, что составляет годы дольше, чем занимает окна.) Пример:
# If the disk was removed.. Even though we aren't syncing, rescan can still hang
# unless we remove the disks first.
rescan-scsi-bus.sh --nosync -f -a -r -m
# Next, We scan for new disks.. Don't know why the last command can't do it at the same time..
rescan-scsi-bus.sh -a
# Look for remapped disks.
rescan-scsi-bus.sh --nosync -a -u
# Look for resized disks.. Once again.. We have to go through the entire list which can take a good O'l 1 minute.
rescan-scsi-bus.sh --nosync -a -s
Вопрос в том, есть ли лучшая политика для повторного сканирования дисков вместо запуска гамбита команд rescan-scsi-bus.sh?
Здесь требуется одна команда, которая удаляет диски и пути к ним которые были удалены, добавляет новые диски и пути, обновляет диски, которые были переназначены где-то в другом месте, собирает изменения на дисках, которые имеют новые размеры и запускаются в разумное время (0-30 секунд) в ЛЮБОМ дистрибутиве Linux независимо от от количества дисков или уровня нагрузки ввода-вывода, под которой находится система.
Я мог бы вернуться к отображению значений в sysfs, но такого рода поражения в целом делают его простым и имеют единственную команду, которая выполняет все это в своевременная мода.
Вы можете использовать любой из следующих методов
iscsiadm -m session --rescan
iscsiadm -m session -r SID --rescan
При добавлении диска
echo "- - -" > /sys/class/scsi_host/hostX/scan
При расширении существующего диска
echo 1 > /sys/class/scsi_device/device/rescan