Как обнаружить новый жесткий диск, подключенный без перезагрузки?

Вопрос или проблема

У меня возникла небольшая проблема. У меня есть рабочая система, которая работает на 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, это хороший знак.

Вот пошаговая инструкция для обнаружения нового объема диска на вашем сервере:

  1. Сканирование 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.

  2. Проверка наличия новых устройств:
    После выполнения команды вы можете проверить список доступных устройств, используя команду:

    ls /dev/sd*

    Это покажет вам все подключенные диски, включая новообнаруженные.

  3. Обновление таблицы разделов:
    Если новый диск или увеличенный объем не отображается в lsblk, вы можете воспользоваться командой partprobe, чтобы обновить информацию о разделах системы:

    sudo partprobe

    Эта команда проверяет изменения в таблице разделов и уведомляет операционную систему об этом.

  4. Ресканирование существующих дисков:
    Если вы хотите проверить существующие диски (например, если вы просто хотите обновить информацию о текущих разделах), можете использовать следующую команду для их ресканирования:

    echo 1 | sudo tee /sys/class/block/sd?/device/rescan
  5. Проверка и использование LVM (если это применимо):
    Если вы используете LVM (что похоже на ваш случай, судя по выводу команд), вам также может понадобиться обновить информацию о физических и логических томах:

    sudo lvscan
    sudo vgscan
    sudo pvscan

    После этого вы сможете использовать команду lvextend для изменения размера логического тома, если это необходимо:

    sudo lvextend -L+40G /dev/itsmvg/bmclv

    Замените /dev/itsmvg/bmclv на ваш актуальный путь.

  6. Файловая система:
    Не забудьте обновить файловую систему, чтобы использовать новое место:

    sudo resize2fs /dev/itsmvg/bmclv

    Замените на соответствующий путь, если вы используете другой тип файловой системы.

Следуя этим шагам, вы сможете обнаружить и использовать новые диски на вашем сервере без необходимости его перезагрузки.

Оцените материал
Добавить комментарий

Капча загружается...