Уже многим из вас известен такой замечательный продукт для создания хранилищ под виртуализацию, как StarWind Enterprise HA (описание работы, сравнение изданий, работа кластера). С помощью StarWind можно создать инфраструктуру хранения виртуальных машин VMware vSphere или Microsoft Hyper-V на базе технологии iSCSI без больших инвестиций.
Сегодня я хочу вам рассказать о технологии использования кэширования в StarWind Enterprise, которая позволяет существенно увеличить производительность операций чтения и записи данных на тома VMFS в среде VMware vSphere.
Итак, при создании нового диска в StarWind Enterprise для хранения виртуальных машин пользователь видит вот такое окно, где предлагается выбрать тип кэширования (cache mode) для образа диска:
Здесь мы видим два типа кэширования: write-through caching и write-back caching, один из которых может быть использован для виртуального диска. Можно также не использовать кэширование вовсе (ниже я объсню достоинства и недостатки этих режимов).
Что это за кэши (они берутся из оперативной памяти сервера хранения):
Write-through caching - это когда запись производится непосредственно в основную память и дублируется в кэш. Такой тип кэширования не ускоряет запись данных на диск (но и не замедляет), но существенно увеличивает скорость чтения данных, которые можно взять из кэша. Этот тип кэша безопасен с точки зрения надежности данных и дает однозначный выигрыш в производительности.
Write-back caching - это когда запись данных производится в кэш. Запись же в основную память производится позже (при вытеснении или по истечению времени), группируя в одной операции несколько операций записи в соседние ячейки. Очевидно, что этот тип кэширования существенно ускоряет скорость записи данных на диск, однако имеет несколько меньшую надежность с точки зрения записи данных.
Для этих типов кэшей мы можем выставить такие параметры кэшей, как их размер (в МБ) и время вытеснения данных из кэша (Cache block expiry period in ms - по умолчанию 5 секунд):
Что эти параметры значат для данных типов кэшей:
Write-through caching. Этот тип кэша наиболее безопасный, поскольку не влияет на запись данных на диск. Время вытеснения, задаваемое здесь, говорит о том, через сколько кэш будет сброшен после последнего запроса на чтение. Соответственно, увеличивать время вытеснения из кэша полезно, когда записанные на диск данные требуются снова в течение этого времени (это зависит от задачи, которую вы используете в виртуальной машине). В зависимости от задач с продуктом StarWind Enterprise скорость чтения данных виртуальных машин возрастала до 20-30%.
Write-back caching. Это наиболее производительный кэш для операций записи. Если у вас медленные диски на сервере или идет интенсивная запись данных, то имеет смысл увеличить размер кэша, но уменьшить время вытеснения. По статистике этот тип кэша для таких задач увеличивает производительность записи данных до 30-50% по сравнению с операциями без кэша.
Если кэши так хороши, то почему нам их в StarWind Enterprise не предлагают использовать по дефолту? Пока есть некоторые ограничения:
Использование кэша Write-back может быть потенциально небезопасно в очень малом проценте случаев (см. Wiki)
На данный момент техника FastSync для синхронизации узлов в StarWind Enterprise не может применяться (скоро это будет работать). FastSync - это когда после отказа одного из узлов сливаются только изменившиеся данные, а не все (размер данных для FastSync высчитвается от объёма таргета, если выше этого объёма - сработает полная синхронизация).
Таким образом, StarWind позволяет существенно повысить производительность работы виртуальных машин с хранилищами. А настраивать тип кэширования и его параметры нужно в зависимости от типов нагрузок в виртуальной инфраструктуре и характеристик сервера, к хранилищам которого они обращаются.