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

Как работают копии файлов с одной виртуальной машины на другую при использовании виртуальной машины с nas

РЕДАКТИРОВАТЬ: отредактировал свой исходный вопрос, чтобы уточнить, что я просил, на основе ответа Zac67

Если у меня есть две виртуальные машины в vSphere, виртуальная машина A и виртуальная машина B, с виртуальными жесткими дисками на одном NAS, и я копирую файл между ними, байты файла будут скопированы с NAS на оборудование виртуальной машины, а затем отправлены обратно на ВМ писать? Мне было интересно, пытался ли vmware выполнить какой-либо тип оптимизации, где, если он виртуализирует все оборудование, которое является частью транзакции (в данном случае все сетевые карты), будет ли оно просто копировать байты с одного виртуального жесткого диска на другой виртуальный жесткий диск. диск без отправки байтов на физическое оборудование, на котором работают виртуальные машины A и B.

Когда файл копируется из гостевой системы в гостевую, хост видит только операции с диском и сетевой трафик.

Базовые операции «чтение данных с диска на виртуальной машине A» и «запись данных с диска на виртуальную машину B» не могут быть связаны с сетевым трафиком - это потребует от хоста подробного знания и понимания всех действий гостя.

То же самое и с NAS / хранилищем - где-то есть операция чтения, а где-то еще операция записи. Связаны ли эти два действия и какая обработка происходит между ними, выходит далеко за рамки хранилища.

Ключ к пониманию того, что на самом деле происходит, - это думать о слоях. У каждого слоя своя цель, и ему (не нужно) заботиться о том, что происходит в других слоях.

По сути, каждый гость уже реализует несколько уровней:

  • приложение, копирующее данные
  • DOS обрабатывает запросы на открытие, чтение, создание файла и запись
  • файловая система, отображающая эти запросы в блочное хранилище
  • драйвер блочного хранилища передает фактические запросы чтения и записи на (виртуальное) дисковое оборудование
  • клиент SMB, имеющий доступ к общему сетевому ресурсу (при условии, что гости Windows)
  • промежуточные сетевые уровни
  • виртуальный сетевой адаптер, отправляющий и получающий сетевые пакеты

Роль хоста состоит в том, чтобы предоставить виртуальной машине виртуальное оборудование (ЦП, ОЗУ, хранилище, сетевой адаптер), которое фактически используется совместно с другими виртуальными машинами и, возможно, даже реализовано в другом месте в сети (сетевое хранилище).

Изменить: использование API хранилища - это нечто иное. Однако, поскольку хост не имеет доступа (и не понимает) уровня гостевых файлов, вы можете легко копировать файлы только на уровне VMFS.

Копирование на уровне гостевых файлов будет включать отключение VMDK от гостей, выяснение того, что куда идет (анализ файловой системы), копирование необходимых блоков и соответствующую настройку целевой файловой системы (вероятно, проще временно переместить VMDK).

Вместо того, чтобы копировать необходимые блоки через API, можно использовать API для их прямого копирования (я не разработчик) - это фактически может дать указание NAS выполнить копирование без вмешательства хоста.