В наши дни это встроено непосредственно в протоколы дисков.Эта возможность существует некоторое время, поскольку диски виртуализируются с конца 1990-х годов (либо через сетевые протоколы, такие как iSCSI / FibreChannel, либо через программно-эмулированную версию аппаратного обеспечения, такого как VMware).
Как и модель VMwareGCE не требует никаких дополнительных сетевых переходов или протоколов для этого;гипервизор просто выставляет виртуальный диск как физическое устройство, и гость знает, что его размер может измениться, и обрабатывает его.GCE использует для своих дисков тип драйвера, специфичный для виртуализации, который называется VirtIO SCSI, но эта функция также реализована во многих других типах драйверов (во многих ОС).
Поскольку размер диска можно изменить на любомпротоколам дисков нужно время, чтобы сообщить гостю, что произошло обновление.В общих чертах, в большинстве протоколов это работает следующим образом:
- Администратор изменяет размер диска из пользовательского интерфейса гипервизора (или любого другого пользовательского интерфейса виртуализации хранилища).
- Внутри гостя ничего не происходитпока он не выдаст IO на диск.
- Гостевая ОС выдает команду IO на диск через драйвер устройства в гостевой ОС.
- Гипервизор эмулирует эту команду IO, замечая, что дискбыл изменен, и гость еще не был предупрежден, и возвращает ответ гостю, говорящему ему обновить свое представление об устройстве.
- Гостевая ОС распознает этот ответ и повторно запрашивает размер устройства идругие подробности с помощью другой команды.
Я не уверен на 100%, но я полагаю, что причина в том, что он структурирован так, что традиционно диски не могут отправлять обновления в ОС, если ОС не запрашивает их в первую очередь.Вероятно, это связано с тем, что у диска нет возможности узнать, в какую память можно свободно записывать, и даже если нет, нет способа синхронизировать доступ к этой памяти с ОС.Однако эти ограничения становятся все менее актуальными для включения SSD-накопителей со сверхвысокой пропускной способностью / сверхнизкой задержкой и NVRAM, поэтому новые дисковые протоколы, такие как NVMe, могут делать это немного по-другому (я не знаю).