Принципы оптимизации службы хранилища Azure для виртуальных машин SQL Server

Завершено

Производительность хранилища является важнейшим аспектом для приложений, активно использующих ресурсы подсистемы ввода-вывода, таких как ядро СУБД. Azure предлагает широкий спектр вариантов хранения и даже позволяет создать собственное решение в соответствии с особенностями вашей рабочей нагрузки.

Служба хранилища Azure — это защищенная платформа хранения с высокой степенью масштабируемости, которая предоставляет широкий спектр решений для самых разных задач. Поскольку в этом курсе основное внимание уделяется базам данных, вы узнаете об аспектах хранилища BLOB-объектов, относящихся к рабочим нагрузкам SQL Server: хранилища дисков, файлов и BLOB-объектов. Обратите внимание, что все приведенные выше типы хранилища поддерживают шифрование неактивных данных с использованием управляемого Майкрософт или определяемого пользователем ключа шифрования.

Хранилище BLOB-объектов — это основанное на объектах хранилище, которое состоит из холодного, горячего и архивного уровней. В среде SQL Server хранилище BLOB-объектов обычно используется для резервного копирования базы данных с помощью функции резервного копирования по URL-адресу SQL Server.

Хранилище файлов — это фактически файловый ресурс, который можно подключить к виртуальной машине без какой-либо настройки оборудования. SQL Server может использовать хранилище файлов в качестве целевого объекта хранилища для экземпляра отказоустойчивого кластера.

Хранилище дисков — блочное хранилище на основе управляемых дисков Azure, предоставляемое виртуальной машине. Эти диски управляются так же, как и физические диски на локальном сервере, и отличаются лишь тем, что они виртуализированы. В зависимости от рабочей нагрузки управляемые диски обеспечивают разные уровни производительности. Хранилища такого типа чаще всего используются для размещения файлов данных и журналов транзакций SQL Server.

Управляемые диски Azure

Управляемые диски Azure — это тома блочного хранилища, предоставляемые виртуальным машинам Azure. Под блочным хранилищем понимаются тома необработанных данных в хранилище, которые создаются и могут рассматриваться как отдельные жесткие диски. Управление такими блочными устройствами может осуществляться в операционной системе, а на уровне хранилища будет неизвестно о содержимом диска. Альтернативой блочному хранилищу является хранилище объектов, где файлы и их метаданные располагаются в базовой системе хранения. В качестве примера модели хранения объектов можно привести хранилище BLOB-объектов Azure. Хранилище объектов хорошо подходит для многих современных решений по разработке, однако для большинства рабочих нагрузок, выполняемых на виртуальных машинах, все же используется блочное хранилище.

Важным фактором, влияющим на производительность рабочих нагрузок SQL Server, является конфигурация управляемых дисков. При переходе из локальной среды важно зафиксировать такие метрики системного монитора, как среднее время чтения с диска (с) и среднее время записи на диск (с), как описывалось ранее. Также необходимо определить количество операций ввода-вывода в секунду. Эту метрику можно зафиксировать с помощью счетчиков операций чтения с диска и записи на диск в секунду объекта SQL Server Resource Pool Stats. Эти показатели определяют количество операций ввода-вывода в секунду, которые SQL Server может обрабатывать в условиях пиковой нагрузки. Также важно понимать характеристики своих рабочих нагрузок. Ваши хранилища и виртуальные машины должны обеспечивать пиковые потребности таких рабочих нагрузок без значительной задержки. Обратите внимание, что для каждого типа виртуальных машин Azure существуют ограничения на количество операций ввода-вывода в секунду.

Предлагается четыре типа управляемых дисков Azure.

Диски ценовой категории "Ультра" обеспечивают выполнение рабочих нагрузок с большим количеством операций ввода-вывода для критически важных баз данных с низкой задержкой.

SSD ценовой категории "Премиум" обеспечивают высокую пропускную способность и низкую задержку в соответствии с потребностями большинства рабочих нагрузок базы данных в облаке.

SSD ценовой категории "Стандартный" предназначены для рабочих нагрузок по разработке и тестированию или веб-серверов, которые выполняют небольшой объем операций ввода-вывода и требуют прогнозируемой величины задержки.

HDD ценовой категории "Стандартный" предназначены для резервного копирования и хранения редко используемых файлов.

Как правило, для производственных рабочих нагрузок SQL Server используются диски категории "Ультра", SSD ценовой категории "Премиум" или комбинация этих решений. Диски категории "Ультра" используются в тех случаях, когда величина задержки ответа не должна превышать одну миллисекунду. Время отклика для дисков SSD ценовой категории "Премиум" обычно составляет не более 10 миллисекунд, что компенсируется их меньшей стоимостью и большей универсальностью. Диски SSD ценовой категории "Премиум" также поддерживают кэширование операций чтения, что позволяет оптимизировать рабочие нагрузки базы данных с большим объемом считываемых данных за счет уменьшения числа обращений к диску. Кэш операций чтения хранится на локальном твердотельном накопителе (диск D:\ в Windows или /dev/sdb1/ в Linux), что позволяет снизить количество обращений к реальному диску.

Чередование дисков для обеспечения максимальной пропускной способности

Одним из способов повысить производительность и доступный объем томов на дисках Azure является чередование данных на нескольких дисках. Такой подход не применяется для дисков категории "Ультра", поскольку в этом случае вы можете независимо масштабировать количество операции ввода-вывода, пропускную способность и максимальный размер на одном диске. При использовании SSD ценовой категории "Премиум" может эффективно применяться масштабирование операций ввода-вывода и объема хранилища. Чтобы создать чередующиеся диски в Windows, достаточно добавить на виртуальную машину нужное количество дисков, а затем создать пул с использованием дисковых пространств в Windows. Для этого пула не нужно настраивать избыточность (это приведет к ограничению производительности), поскольку избыточность обеспечивается платформой Azure, которая хранит три копии всех дисков с использованием синхронной репликации для защиты от сбоев диска. При создании пула для него вычисляется общее количество операций ввода-вывода в секунду и суммарный объем всех дисков в пуле. Например, если вы используете 10 дисков P30, каждый из которых имеет емкость 1 ТБ и производительность 5000 операций ввода-вывода в секунду, вам будет доступен том объемом 10 ТБ с производительностью 50 000 операций ввода-вывода в секунду.

Рекомендации по настройке хранилища SQL Server

При использовании и настройке хранилища SQL Server на виртуальных машинах Azure вы можете придерживаться следующих рекомендаций.

  • Создавайте отдельные тома для файлов данных и журналов транзакций.

  • Включайте кэширование операций чтения на томе с файлами данных.

  • Не используйте кэширование на томе с файлами журналов.

  • При планировании зарезервируйте 20 % от количества операций ввода-вывода в секунду и пропускной способности для обработки пиковых нагрузок на виртуальную машину.

  • Используйте диск D: (локально подключенный твердотельный накопитель) для размещения файлов TempDB, поскольку база данных TempDB воссоздается при перезапуске сервера и риск потери данных отсутствует.

  • Включите мгновенную инициализацию файлов, чтобы снизить эффект операций, связанных с увеличением размера файла.

  • Перенесите каталоги с файлами трассировки и журналами ошибок на диски с данными.

  • Для рабочих нагрузок, в которых задержка при обращении к хранилищу не должна превышать одну миллисекунду, рекомендуется использовать диски категории "Ультра" вместо SSD ценовой категории "Премиум".

Поставщик ресурсов виртуальной машины Azure

Упростить создание хранилища для SQL Server на виртуальной машине Azure можно с помощью шаблонов SQL Server в Azure Marketplace, которые позволяют настроить хранилище в рамках развертывания, как показано ниже. Вы можете задать необходимое количество операций ввода-вывода, на основе которого шаблон автоматически создаст пулы дисковых пространств в Windows.

Конфигурация диска виртуальной машины SQL Server

Этот поставщик ресурсов также поддерживает добавление базы данных TempDB на локальный твердотельный накопитель и позволяет создать запланированную задачу для создания папки при запуске.