Изменение размера облачной виртуальной машины без отключения экземпляра (Google cloud) - PullRequest
0 голосов
/ 11 ноября 2018

Итак, я увидел, что в google compute есть опция (я полагаю, что такая же опция существует и у других поставщиков облачных виртуальных машин, поэтому вопрос касается не только Google Compute, а основной технологии), чтобы изменить размер диска без перезагрузки компьютера.и я спрашиваю, как это возможно?

Даже если он использует какую-то абстракцию диска, и они фактически не назначают физический диск виртуальной машине, а только часть диска (или часть диска).количество дисков), после того, как диск создан в гостевой виртуальной машине, имеет определенный размер, как он может измениться без перезагрузки?Использует ли он как-то NFS?

1 Ответ

0 голосов
/ 12 ноября 2018

В наши дни это встроено непосредственно в протоколы дисков.Эта возможность существует некоторое время, поскольку диски виртуализируются с конца 1990-х годов (либо через сетевые протоколы, такие как iSCSI / FibreChannel, либо через программно-эмулированную версию аппаратного обеспечения, такого как VMware).

Как и модель VMwareGCE не требует никаких дополнительных сетевых переходов или протоколов для этого;гипервизор просто выставляет виртуальный диск как физическое устройство, и гость знает, что его размер может измениться, и обрабатывает его.GCE использует для своих дисков тип драйвера, специфичный для виртуализации, который называется VirtIO SCSI, но эта функция также реализована во многих других типах драйверов (во многих ОС).


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

  • Администратор изменяет размер диска из пользовательского интерфейса гипервизора (или любого другого пользовательского интерфейса виртуализации хранилища).
  • Внутри гостя ничего не происходитпока он не выдаст IO на диск.
  • Гостевая ОС выдает команду IO на диск через драйвер устройства в гостевой ОС.
  • Гипервизор эмулирует эту команду IO, замечая, что дискбыл изменен, и гость еще не был предупрежден, и возвращает ответ гостю, говорящему ему обновить свое представление об устройстве.
  • Гостевая ОС распознает этот ответ и повторно запрашивает размер устройства идругие подробности с помощью другой команды.

Я не уверен на 100%, но я полагаю, что причина в том, что он структурирован так, что традиционно диски не могут отправлять обновления в ОС, если ОС не запрашивает их в первую очередь.Вероятно, это связано с тем, что у диска нет возможности узнать, в какую память можно свободно записывать, и даже если нет, нет способа синхронизировать доступ к этой памяти с ОС.Однако эти ограничения становятся все менее актуальными для включения SSD-накопителей со сверхвысокой пропускной способностью / сверхнизкой задержкой и NVRAM, поэтому новые дисковые протоколы, такие как NVMe, могут делать это немного по-другому (я не знаю).

...