LINUX.ORG.RU

Не работает rescan SCSI устройств в скрипте

 , ,


0

1

Здравствуйте. Пишу скрипт для облегчения изменения размера дисков, и не работает часть где нужно пересканировать SCSI устройства, хотя сами команды в отдельности работают. CentOS 7

# rescan SCSI devices
for i in $( ls /sys/class/scsi_device/ ); do
    echo 1 > /sys/class/scsi_device/$(echo "$i" | sed -r 's/:/\\:/g')/device/rescan
done

При исполнении от рута получаю вот такие ошибки:

line 16: /sys/class/scsi_device/3\:0\:0\:0/device/rescan: No such file or directory
Хотя все на месте, видимо скрипт срабатывает не так как я ожидаю, не могу понять в чем дело.
$ ls /sys/class/scsi_device/3\:0\:0\:0/device/ | grep rescan
rescan

1) интерпретация строки происходит один раз. Поэтому в данном случае экранировать не нужно

2) не связано с твоей ошибкой, но ещё столкнёшься. сильно подозреваю, что ты вообще не то делаешь

скорее всего тебе нужен рескан scsi шины, а он выполняеся по-другомy ( сначала issue_lip, а потом рескан для scsi_host ( а не scsi_device ), причём с паузами на перестроение путей в фабрике )

router ★★★★★ ()
Ответ на: комментарий от router

2)Могу ошибаться, но для изменения размера существующего устройства этого не нужно.

Sending a «1» to /sys/class/block/sdc/device/rescan is telling the SCSI block device to refresh it's information about where it's ending boundary is (among other things) to give the kernel information about it's updated size. - this is the right thing to do if you change the size of an existing disk while it's powered on.

Mant1kor ()