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


16

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

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

Есть идеи?


В зависимости от вашей платформы виртуализации и способа хранения это может быть или не быть возможным. Детали имеют значение.
Уомбл

Какой тип виртуального диска вы добавили: IDE или SCSI?
кванты

Эта первая команда сработала для меня ...
Родо

Ответы:


11

Вам необходимо выполнить команду rescan для вашей шины 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

Это должно помочь. :)


5
ls /sys/class/scsi_hostвозможно быстрее
кванты

11

Мне пришлось столкнуться с аналогичной проблемой на сервере 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


6
echo 1 > /sys/block/sda/device/rescanработал для меня на CentOS
Бенедикт Кеппел

-bash: / sys / module / scsi_mod / parameters / scan: В доступе отказано, имя пользователя - root
Sarz

7

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

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


3

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


2

Обновление: Centos 6 - невозможно обновить таблицу разделов активного диска в режиме онлайн, Centos 7 - возможно расширить последний раздел с помощью growpart или создать новый раздел с помощью 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


-5

Вы должны перезагрузиться, нет никакого способа обойти это.


Как насчет системы силы для повторного сканирования?
кванты

Я должен был перезагрузиться :-(
AndyM

Мне тоже пришлось перезагрузиться.
Ондра

1
Это совершенно не соответствует действительности. Я сделал это несколько раз без перезагрузки.
Дункан Х Симпсон
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.