Я пытаюсь понять (и в идеале исправить) особенно раздражающее явление, которое я заметил с отказоустойчивой кластеризацией и общими томами кластера в сочетании с Hyper-V. Похоже, что при высокой нагрузке, когда внутреннее хранилище CSV отвечает на все запросы со значительной задержкой (> 3 секунд) для всех подключенных узлов кластера, запускается условие «неотвечаемость» и прекращает процесс подсистемы хостинга ресурсов (RHS). ресурс, таким образом также отключая соответствующий CSV на короткий период времени (до перезапуска процесса RHS).
Журнал содержит записи из RHS с событием 2051. «[RES] Физический диск: проверка работоспособности IsAlive не удалась !, ожидающий ввод-вывод завершен со статусом 170». за которым следует ряд записей, указывающих, что CSV принудительно удален и повторно прикреплен.
Поскольку файлы CSV используются для размещения гостевого хранилища Hyper-V, Hyper-V впоследствии устанавливает отметку «Невозможно подключиться к хранилищу конфигурации виртуальной машины» на виртуальных машинах, хранящихся в уязвимом CSV, и затем отключает их. Даже если отключение питания каждого затронутого гостя было недостаточно быстрым, запросы доступа к диску гостя будут возвращать ошибки на время простоя, делая гостей практически непригодными для использования до следующего перезапуска.
Теперь, поскольку это происходит только в пограничных условиях и нелегко воспроизвести, у меня не так много случаев для проверки возможных решений. После прочтения этот, и который Я разработал гипотезу о том, что какой-то запрос на операцию ввода-вывода CSV (возможно, но не обязательно резервирование - я понимаю, что резервирование используется только для записи метаданных FS, что не должно быть таким распространенным) не выполняется из-за тайм-аута, что впоследствии переводит весь ресурс в состояние сбоя. Но это оставляет мне несколько вопросов:
Действительно ли Hyper-V должен отключать виртуальные машины, если он не может получить доступ к хранилищу? Или ответ с ошибками на запросы гостя на доступ к хранилищу? Разве нельзя просто заморозить выполнение, пока хранилище не вернется?
Как я могу настроить проверки RHS, чтобы они не давали сбой из-за простой перегрузки внутреннего хранилища?