Кэширование играет важную роль в повышении производительности дискового ввода-вывода в виртуализованных средах. В Proxmox Virtual Environment (Proxmox VE) доступно несколько режимов кэширования, каждый из которых имеет свои особенности и подходит для различных сценариев использования. Рассмотрим подробнее каждый из них, а также дадим практические советы по выбору подходящего режима.
Режимы кэширования в Proxmox VE
None (по умолчанию)
Этот режим является стандартным выбором для большинства пользователей, особенно если нет желания углубляться в тонкости настройки кэширования. В данном режиме гипервизор не вмешивается в операции ввода-вывода, и виртуальная машина (VM) взаимодействует с хранилищем напрямую. Операции записи могут отправляться в очередь хранилища или ожидать завершения реальной записи. Этот универсальный режим подходит для серверов общего назначения.
Writethrough
В этом режиме операции записи поступают непосредственно в хранилище, аналогично режиму None. Однако добавляется кэш гипервизора, используемый исключительно для операций чтения. Это позволяет повысить производительность за счет ускорения операций чтения, что полезно для серверов, обслуживающих большое количество статического контента. Надежность записи сохраняется на уровне режима None.
Рекомендовано для систем, активно работающих со статическими данными.
Directsync
Как и в режиме None, кэширование гипервизора полностью отключено. Основное отличие заключается в том, что виртуальные машины работают с хранилищем только в режиме реальной записи с подтверждением. Это значит, что очереди хранения не используются, и каждая операция записи должна быть физически выполнена перед тем, как будет получено подтверждение об успешном завершении. Применение данного режима целесообразно в редких случаях, когда требуется максимальная надежность записи.
Writeback
Операции записи и чтения кэшируются гипервизором. Виртуальная машина получает подтверждение о записи после того, как данные попадают в кэш гипервизора, а не в само хранилище. Это значительно ускоряет работу дисков VM, особенно если гипервизору доступен большой объем оперативной памяти для кэширования. Однако существует риск потери данных в случае сбоя сервера, если информация еще не успела попасть из кэша в хранилище. Потеря данных может привести к повреждению базы данных или другим проблемам.
Рекомендуется использовать данный режим в системах с надежным источником бесперебойного питания (UPS), стабильной работой сервера и корректным завершением работы в случае сбоев.
Writeback (unsafe)
По сути, этот режим идентичен обычному Writeback, однако он отличается тем, что команды на запись в реальное хранилище перехватываются кэшем хоста. Это дает максимальный прирост производительности, но одновременно повышает риски потери данных. Данный режим рекомендуется использовать только на тестовых гипервизорах или в ситуациях, когда сохранность данных не является приоритетом.
Важные замечания
Режимы кэширования имеют значение только при использовании типов дисков RAW, таких как LVM Storage или обычные файлы в директории хоста. При использовании форматов вроде qcow2 или ZFS кэширование лучше оставить в режиме None и не изменять стандартные настройки.
При наличии RAID-контроллера с батарейкой и включенным кэшированием необходимо тщательно выбирать режим кэширования, поскольку возможны конфликты между кэшами контроллера и гипервизора. В таких случаях рекомендуется полагаться на кэш контроллера и отключить кэширование на стороне гипервизора.
Заключение
Выбор режима кэширования в Proxmox VE зависит от специфики вашей инфраструктуры и характера нагрузок. Универсальным решением для большинства случаев является режим None, обеспечивающий баланс между производительностью и надежностью. Для повышения скорости чтения можно рассмотреть Writethrough, а для максимального увеличения производительности, несмотря на возможные риски, подойдет Writeback или Writeback (unsafe). Важно помнить, что изменения настроек кэширования требуют тщательного тестирования и анализа влияния на конкретные рабочие сценарии.