Назад | Перейти на главную страницу

Как заставить Centos VM перечитывать увеличенный размер диска БЕЗ перезагрузки

У меня есть виртуальная машина CentOS 5, и я только что увеличил диск виртуальной машины с 10 до 20 ГБ, но я не могу заставить fdisk увидеть новый размер диска без перезагрузки.

я пробовал echo 1 > /sys/block/sda/device/rescan, похоже, это указывает на то, что он может видеть новый размер, но когда я перехожу к fdisk для создания нового раздела, он все еще видит диск как 10G.

Любые идеи?

Вам необходимо отправить команду повторного сканирования на шину SCSI.

В VMware контроллер SCSI может быть найден в каком-нибудь необычном месте. Сначала найдите это:

find /sys -iname 'scan'

Для меня это вернулось

/sys/devices/pci0000:00/0000:00:07.1/host0/scsi_host/host0/scan
/sys/devices/pci0000:00/0000:00:07.1/host1/scsi_host/host1/scan
/sys/devices/pci0000:00/0000:00:10.0/host2/scsi_host/host2/scan

Затем просто введите команду повторного сканирования

echo "- - -" >/sys/devices/pci0000:00/0000:00:07.1/host0/scsi_host/host0/scan
echo "- - -" >/sys/devices/pci0000:00/0000:00:07.1/host0/scsi_host/host1/scan
echo "- - -" >/sys/devices/pci0000:00/0000:00:10.0/host0/scsi_host/host2/scan

Который должен Помогите. :)

Мне пришлось столкнуться с аналогичной проблемой на сервере SLES 11. LVM был построен с необработанными дисками, работающими на VMWare ESXi.

# pvcreate /dev/sdd; vgextend ....

Через некоторое время мне нужно было увеличить размер LVM, но я не добавил дополнительный диск, а затем pvcreate + vgextend, как делал раньше, но я решил увеличить размер существующего диска (в данном случае / dev / sdd ). После увеличения VMWare я выполнил

# rescan-scsi-bus.sh

Но pvdisplay по-прежнему показывал «старый» размер диска. Пришлось сделать

# echo 1 > /sys/block/sdd/device/rescan

чтобы ядро ​​узнало новый размер диска / dev / sdd

после первого выполнения echo 1 > /sys/block/sda/device/rescan

pvresize /dev/sda сделал трюк для меня

Если таблица разделов используется напрямую (например, вы смонтировали файловую систему с использованием базового раздела), ядро ​​продолжит использовать старую таблицу разделов, пока это не исчезнет. Кто-то однажды сказал мне, что если вы используете LVM, вы можете обойти это ....

Обновить: Centos 6 - невозможно обновить таблицу разделов активного диска онлайн, Centos 7 - последний раздел можно расширить с помощью расти или создайте новый раздел с помощью fdisk и сделайте его видимым без перезагрузки с помощью Partprobe. Наверное, то же самое на ubuntu / debian. - В какой-то момент после версии 2.6 ядро ​​начало поддерживать оперативное перечитывание таблицы разделов активного диска. Поскольку вопрос касается Centos 5, я бы сказал, что нет.

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

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

Первое, что вы должны заметить после повторного сканирования, - это больший размер диска в fdisk и lsblk. Если вы его не видите, вам нужно поиграть с этими командами echo 1 и echo - - -.

После того, как вы увидите больше места, вы можете расширить / добавить раздел, затем перезагрузиться, расширить vg, расширить lv и fs.

Если вы хотите избежать перезагрузки, вам необходимо назначить необработанный диск sda / b / c группе томов, не разбивая его на sda1 / 2/3. Тогда перезагрузка не требуется.

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

Если вы выполните lsblk, вы увидите разделы или lvms в зависимости от того, используете ли вы разделы или lvm, у вас могут быть все части, если вы не используете lvm, или все lvms, если вы не используете разделы. Вот один пример:

root@srv4 ~ $ lsblk
NAME                        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                           8:0    0  7.3T  0 disk
├─sda1                        8:1    0  500M  0 part /boot
└─sda2                        8:2    0  7.3T  0 part
  ├─vg_srv4-LogVol13 (dm-0) 253:0    0  7.1T  0 lvm  /
  ├─vg_srv4-LogVol05 (dm-1) 253:1    0  100G  0 lvm  /var/log
  ├─vg_srv4-LogVol04 (dm-2) 253:2    0   20G  0 lvm  /var
  ├─vg_srv4-LogVol01 (dm-5) 253:5    0   20G  0 lvm  /opt
  ├─vg_srv4-LogVol00 (dm-6) 253:6    0   20G  0 lvm  /home
  ├─vg_srv4-LogVol03 (dm-7) 253:7    0   20G  0 lvm  /usr
  └─vg_srv4-LogVol02 (dm-8) 253:8    0    8G  0 lvm  /tmp

Чтобы обнаружить изменения на существующем диске:

echo 1 > /sys/class/block/sdX/device/rescan

Чтобы обнаружить новый диск:

echo 1 > /sys/class/scsi_device/X:X:X:X/device/block/device/rescan

Чтобы найти X в первой ситуации, вы можете использовать fdisk -l.

https://kerneltalks.com/disk-management/how-to-rescan-disk-in-linux-after-exnding-vmware-disk/

Я знаю, что это может быть немного поздно, но я использую KVM на хосте. Чтобы изменить размер диска, мне пришлось запускать его на хосте, а не на госте. В моем случае это было

  • Используйте lvm для увеличения объема тома lvextend -L+4G /dev/<volume group>/<volume>
  • Получить информацию о диске / блоке virsh qemu-monitor-command <vm name from virsh list> --hmp "info block"
  • Сообщите kvm об изменениях virsh qemu-monitor-command <vm name> --hmp "block_resize drive-virtio-disk2 <new size>"

Ранее я запускал такие команды, как echo "- - -" > /sys/class/scsi_host/host1/scan но ничего не изменилось, пока я не запустил virsh qemu-monitor-command -hmp команда

Придется перезагружать, выхода нет.