2.18 Настройка режимов доступа к виртуальным дискам в РЕД Виртуализации
В РЕД Виртуализации предусмотрены гибкие механизмы управления режимами кэширования и типами ввода-вывода для каждого виртуального диска.
Настройка дисковой подсистемы виртуальных машин необходима для достижения оптимального баланса между производительностью и надежностью хранения данных.
Описание параметров кэширования:
Тип кэша определяет, каким образом запросы гостевой операционной системы на чтение и запись обрабатываются с использованием оперативной памяти хоста виртуализации.
- None - кэширование на стороне хоста полностью отключается. Гостевая операционная система осуществляет операции ввода-вывода напрямую с хранилищем.
Этот режим указан по умолчанию и является предпочтительным для большинства систем, так как обеспечивает высокую надежность, исключает рассинхронизацию данных и экономит оперативную память хоста.
- Writethrough - данные одновременно записываются, как в оперативную память хоста, так и на физический накопитель. Гостевая ОС получает подтверждение об успешной операции только после физического сохранения данных на диск.
Режим безопасен, ускоряет последующее чтение часто запрашиваемых данных, но имеет низкую скорость записи, так как требуется ожидание физического диска на каждую операцию.
- Writeback - Подтверждение записи возвращается гостевой ОС сразу после попадания данных в кэш оперативной памяти хоста. Сброс на диск происходит позже асинхронно. Обеспечивает высокую производительность, однако несет риски при использовании.
При внезапном отключении питания хоста возможна потеря данных или повреждение файловой системы гостевой ОС, если данные не будут перенесены из оперативной памяти хоста на физический диск.
- Directsync - сочетает свойства режимов None и Writethrough. Оперативная память хоста обходится. Каждая операция записи сопровождается принудительным вызовом синхронизации fsync. Обеспечивает максимальную безопасность данных при минимальной скорости случайной записи среди всех режимов.
- Unsafe - Запись выполняется с максимальной скоростью, доступной для оперативной памяти хоста.
Использование режима Unsafe не рекомендуется для продуктивных сред. Любой сбой хоста или отключение питания гарантированно приведет к частичной или полной потере целостности данных гостевой ОС.
Описание типов ввода-вывода:
Тип ввода-вывода определяет низкоуровневый системный механизм с помощью которого хост обрабатывает асинхронные запросы ввода-вывода гостевой системы.
- Native - задействует стандартный механизм асинхронного ввода-вывода ядра Linux. Обладает высокой производительностью и низкой нагрузкой на процессор. Оптимально работает при выборе типа кэша None и размещении дисков на блочных устройствах iSCSI и Fibre Channel.
- Threads - использует внутренний пул потоков в процессе QEMU для обработки дисковых операций. Является универсальным режимом, который стабильно работает на любых типах файловых систем, включая сетевые хранилища NFS/GlusterFS, но дополнительные затраты вычислительных ресурсов немного выше в сравнении с типами ввода-вывода Native и IoUring .
- IoUring - современный высокопроизводительный интерфейс ядра Linux. Обеспечивает значительно большую пропускную способность и низкие задержки, по сравнению со стандартными механизмами, за счет эффективного разделения очередей между ядром и пространством пользователя. Рекомендуется для высоконагруженных систем на базе NVMe накопителей.
Причины использования связки None и Native по умолчанию
Выбор комбинации параметров тип кэша None и тип ввода-вывода Native в качестве стандартной настройки обусловлен обеспечением максимальной стабильности и безопасности данных в корпоративных средах РЕД Виртуализации.
Использование режима None отключает использование кэша хоста, что позволяет освободить оперативную память хоста для полезной нагрузки (выделение ОЗУ для работы виртуальных машин) и также избежать лишних операций копирования данных в память хоста.
В режиме None гостевая ОС получает подтверждение об успешной записи только тогда, когда данные физически зафиксированы на накопителе. В случае внезапного отключения питания хоста состояние файловой системы гостевой ОС останется корректным.
Механизм Native работает наиболее эффективно именно тогда, когда операции ввода-вывода производятся напрямую, минуя кэш оперативной памяти хоста. В такой связке ядро обрабатывает асинхронные запросы с минимальной утилизацией процессора.