Ведущие вендоры решений для виртуализации настольных ПК предприятия (а их всего два - Citrix и VMware) постоянно ищут пути оптимизации своих продуктов для получения максимальной производительности виртуальных ПК во всех аспектах: вычислительные ресурсы, сети и хранилища. Это неудивительно, так как, зачастую, именно по этому показателю пользователи выбирают подходящее им решения. Мы уже много писали о технологии VMware Storage Accelerator, которая есть в решении VMware View 5.1 - она использует оперативную память хост-серверов ESXi для кэширования блоков виртуальных машин.
Но надо помнить, что еще раньше компания Citrix тоже разработала технологию оптимизации хранилищ виртуальных ПК - IntelliCache для продуктов Citrix XenServer и XenDesktop, которая, правда, работает несколько по-иному: блоки данных виртуальных машин кэшируются не в оперативной памяти, а на локальном хранилище сервера XenServer.
Технология Citrix IntelliCache кэширует блоки данных виртуальных ПК на локальном диске (само собой, лучше использовать SSD-накопители) при записи данных на общее хранилище, а когда они запрашиваются с последнего виртуальными машинами, то просматривается локальный кэш и отдаются кэшированные блоки виртуальной машины напрямую с локального хранилища. Соответственно, если используется высокопроизводительное локальное хранилище - блоки виртуальным машинам будут отдаваться существенно быстрее, что позволит, например, сгладить последствия событий Boot Storm или Antivirus Storm. При выключении или перезагрузке виртуальной машины - локальный кэш очищается.
Для каждой виртуальной машины могут быть созданы 2 типа файлов на локальном хранилище в целях обеспечения работы IntelliCache - несколько файлов write cache и один файл shared read cache (файлы типа <uuid>.vhdcache на локальном репозитории). Здесь надо отметить, что при работе Citrix XenDesktop есть 2 режима работы виртуальных ПК с кэшем IntelliCache:
Shared Desktop Mode - когда опция on-boot выставлена в значение reset, а флаг allow-caching - в значение true. В этом случае отличия виртуального ПК от базового образа (дельта) будет писаться только на локальный диск, минуя общее хранилище. Это позволит использовать комбинацию чтения с общего хранилища (базовый образ) и чтения/записки на локальном хранилище сервера XenServer, что увеличивает производительность как чтения, так и записи данных. Однако, разумеется, для таких виртуальных машин нельзя использовать такие технологии как XenMotion и High Availablity, так как часть данных ВМ хранится только локально. Это лучше использовать для неперсистентных десктопов и дисков, состояние которых не сохраняется при выключении или перезагрузке (pooled desktops).
Private Desktop Mode - когда опция on-boot выставлена в значение persist, а флаг allow-caching - в значение true. В этом случае данные пишутся одновременно в кэш и на общее хранилище, а кэш позволяет оптимизировать производительность только при чтении данных. При этом для виртуальной машины работают все технологии, требующие общего хранилища. Такую технику лучше использовать, когда используются постоянные виртуальные ПК с сохранением данных при выключении (dedicated desktops).
Технология IntelliCache дает существенный выигрыш в производительности в инфраструктуре VDI (тесты Login VSI):
Для использования IntelliCache при установке XenServer потребуется создать локальный storage repository (SR) с поддержкой данной технологии, которая, напомним, появилась в Citrix XenServer 5.6 SP1 (поэтому для более ранних версий продукта эта технология работать не будет). При установке нужно не забыть отметить галку "Enable thin
provisioning (Optimized storage for XenDesktop)".
Со стороны инфраструктуры XenDesktop вам понадобится XenDesktop 5 service pack 1 или более поздней версии, где поддержка технологии IntelliCache включается одной галкой в мастере добавления хост-сервера:
Так как локальные репозитории предшествующих версий XenServer построены на базе LVM, а SR с поддержкой IntelliCache используют EXT3, конвертировать старые локальные репозитории в новые получится только с полной потерей данных на репозитории. Чтобы сделать это, нужно выполнить следующую последовательность команд: