Рейтинг:2

Как заставить ядро ​​​​Linux повторно сканировать виртуальные диски?

флаг id

У меня есть виртуальный диск, подключенный к гостевой системе KVM, поддерживаемый логическим томом LVM. Я увеличил размер логического тома с помощью lvresize на хост-компьютере KVM.

Тогда мне пришлось выдать virsh pool-refresh чтобы хост KVM знал об изменении размера тома. Теперь, если я проверю громкость в вирт-менеджер, я вижу правильный размер диска. Но гостевая ОС все равно видит диск по старому размеру несмотря ни на что.

Как я могу заставить ядро ​​​​Linux повторно сканировать виртуальные диски без перезагрузки гостя?

Другие решения, которые я нашел, не относились к virtio и не работали. Нравиться эхо "- - -" > /sys/class/scsi_host/host0/scan должно работать для дисков SCSI, но не для virtio. Еще один совет, эхо 1 > /sys/block/vda/device/rescan не работает, потому что пересканировать файл не существует.

Итак, знаете ли вы о каком-либо конкретном совете virtio по повторному сканированию моего диска virtio?

tsc_chazz avatar
флаг vn
Разве эта команда `echo` не создаст файл `recan`? Может дело в этом?
MegaBrutal avatar
флаг id
@tsc_chazz Нет, я получил сообщение «Отказано в доступе», когда пытался его создать, несмотря на то, что запускал команду от имени пользователя root. Как правило, вы не должны создавать файлы в каталогах ``/proc`` или ``/sys``, это виртуальные файловые системы, в которых файлы сопоставляются с настройками ядра.
Рейтинг:3
флаг cn

Помимо изменения размера LV на хосте, сообщите об этом запущенному гостю: virsh blockresize <домен> vda

Как паравиртуализированный драйвер, virtio больше не претендует на роль SCSI, подсказки повторного сканирования работать не будут. Как только гость узнает об этом, объем будет больше.

Хотя в данном случае это бесполезно, более полный сценарий сканирования SCSI для Linux rescan-scsi-bus.sh от sg3_utils упаковка.

MegaBrutal avatar
флаг id
Спасибо, это сработало! Я видел изменение размера блока, но, поскольку он требует аргумента размера, я думал, что он фактически изменяет размер резервного носителя, и я не знал, как он обрабатывает LV. Но оказывается, что аргумент размера на самом деле не имеет значения, когда резервным носителем является LV, он просто уведомляет гостя о фактическом размере LV, не пытается изменить размер или что-то еще. (Я экспериментировал с этим, задавая различные параметры размера, вы живете только один раз... Гость всегда получает правильный размер LV.)
MegaBrutal avatar
флаг id
Я использовал следующую команду (аргумент size на самом деле не имеет значения, если резервное хранилище является LVM LV): ``` root@vmhost:~# virsh blockresize Ubuntu_Focal vda 32G Размер блочного устройства «vda» изменен ``` В случае успеха в кольцевом буфере ядра гостевой системы появляются следующие сообщения: ``` [8126307.835588] virtio_blk virtio2: [vda] новый размер: 67108864 логических блока по 512 байт (34,4 ГБ/32,0 ГБ) [8126307.835600] vda: обнаружено изменение емкости с 17179869184 на 34359738368 ```

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.