Вопрос или проблема
У меня возникла небольшая проблема. У меня есть рабочая система, которая работает на RHEL 6.7 (VM) и под управлением VMware 6.5 (который не управляется нашей группой). Проблема в том, что другая группа попыталась увеличить емкость существующего диска на виртуальной машине. После этого я запустил команду сканирования для обнаружения нового диска как обычно с помощью echo "- - -" > /sys/class/scsi_host/host0/scan
, но ничего не произошло. Они добавили 40G на диске sdb
, который должен быть 100G, и я увидел, что это изменилось на виртуальной машине, но не на Linux. Так где же проблема? Как я уже сказал, это рабочая система, поэтому я не хочу её перезагружать.
Вот система:
# df -h /dev/mapper/itsmvg-bmclv
59G 47G 9.1G 84% /opt/bmc
# lsblk sdb
8:16 0 60G 0 disk └─itsmvg-bmclv (dm-2)
253:2 0 60G 0 lvm /opt/bmc
# vgs
VG #PV #LV #SN Attr VSize VFree
itsmvg 1 1 0 wz--n- 59.94g 0
# pwd
/sys/class/scsi_host
# ll
lrwxrwxrwx 1 root root 0 Nov 13 16:18 host0 -> ../../devices/pci0000:00/0000:00:07.1/host0/scsi_host/host0
lrwxrwxrwx 1 root root 0 Nov 13 16:19 host1 -> ../../devices/pci0000:00/0000:00:07.1/host1/scsi_host/host1
lrwxrwxrwx 1 root root 0 Nov 13 16:19 host2 -> ../../devices/pci0000:00/0000:00:15.0/0000:03:00.0/host2/scsi_host/host2
Как уже упоминалось выше, вы можете просканировать всех существующих хостов одной командой:
for host in /sys/class/scsi_host/*; do echo "- - -" | sudo tee $host/scan; ls /dev/sd* ; done
и результат:
$ for host in /sys/class/scsi_host/*; do echo "- - -" | sudo tee $host/scan; ls /dev/sd* ; done
- - -
/dev/sda /dev/sda1 /dev/sda2 /dev/sdb /dev/sdb1 /dev/sdc /dev/sdc1
- - -
/dev/sda /dev/sda1 /dev/sda2 /dev/sdb /dev/sdb1 /dev/sdc /dev/sdc1
︙
- - -
/dev/sda /dev/sda1 /dev/sda2 /dev/sdb /dev/sdb1 /dev/sdc /dev/sdc1
- - -
/dev/sda /dev/sda1 /dev/sda2 /dev/sdb /dev/sdb1 /dev/sdc /dev/sdc1
- - -
/dev/sda /dev/sda1 /dev/sda2 /dev/sdb /dev/sdb1 /dev/sdc /dev/sdc1 /dev/sdd /dev/sdd1
Последняя строка показывает, что устройство /dev/sdd
было обнаружено.
Это сработало для меня, чтобы обновить все устройства:
(в качестве более простой команды)
echo "- - -" | tee /sys/class/scsi_host/host*/scan
Три дефиса действуют как подстановочные знаки для повторного сканирования всего: канала, SCSI ID цели и LUN.
Вот команда, которую вам нужно выполнить от имени root, чтобы просканировать устройства хоста, чтобы они показали новый подключенный жесткий диск.
echo "- - -" >> /sys/class/scsi_host/host_$i/scan
$i
— это номер хоста
Как насчет этого:
Чтобы просканировать новые диски:
echo "- - -" | sudo tee /sys/class/scsi_host/host*/scan >/dev/null
Чтобы пересканировать существующие диски:
echo 1 | sudo tee /sys/class/block/sd?/device/rescan >/dev/null
Вы также можете попробовать выполнить
partprobe
Эта команда проверяет изменения в таблице разделов и уведомляет об этом ОС.
Ответ или решение
Чтобы обнаружить новый жесткий диск, подключенный к системе без перезагрузки, вам нужно выполнить несколько шагов на операционной системе RHEL 6.7. Прежде всего, убедитесь, что изменения были внесены на уровне VMware и что виртуальная машина действительно видит увеличение объема диска. Если вы видите изменения в интерфейсе управления VMware, это хороший знак.
Вот пошаговая инструкция для обнаружения нового объема диска на вашем сервере:
-
Сканирование SCSI хостов:
Для начала вам нужно просканировать все существующие SCSI хосты, чтобы система увидела изменения. Выполните следующую команду:for host in /sys/class/scsi_host/*; do echo "- - -" | sudo tee $host/scan; done
Либо более короткая версия для сканирования всех хостов одновременно:
echo "- - -" | sudo tee /sys/class/scsi_host/host*/scan
Эта команда отправит сигнал о сканировании всех каналов, целевых идентификаторов и LUN.
-
Проверка наличия новых устройств:
После выполнения команды вы можете проверить список доступных устройств, используя команду:ls /dev/sd*
Это покажет вам все подключенные диски, включая новообнаруженные.
-
Обновление таблицы разделов:
Если новый диск или увеличенный объем не отображается вlsblk
, вы можете воспользоваться командойpartprobe
, чтобы обновить информацию о разделах системы:sudo partprobe
Эта команда проверяет изменения в таблице разделов и уведомляет операционную систему об этом.
-
Ресканирование существующих дисков:
Если вы хотите проверить существующие диски (например, если вы просто хотите обновить информацию о текущих разделах), можете использовать следующую команду для их ресканирования:echo 1 | sudo tee /sys/class/block/sd?/device/rescan
-
Проверка и использование LVM (если это применимо):
Если вы используете LVM (что похоже на ваш случай, судя по выводу команд), вам также может понадобиться обновить информацию о физических и логических томах:sudo lvscan sudo vgscan sudo pvscan
После этого вы сможете использовать команду
lvextend
для изменения размера логического тома, если это необходимо:sudo lvextend -L+40G /dev/itsmvg/bmclv
Замените
/dev/itsmvg/bmclv
на ваш актуальный путь. -
Файловая система:
Не забудьте обновить файловую систему, чтобы использовать новое место:sudo resize2fs /dev/itsmvg/bmclv
Замените на соответствующий путь, если вы используете другой тип файловой системы.
Следуя этим шагам, вы сможете обнаружить и использовать новые диски на вашем сервере без необходимости его перезагрузки.