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

Завершено

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

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

  • Хранилище 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 Disk Read and Write IO/sec, показывающих, сколько операций ввода-вывода SQL Server обслуживает в пиковые моменты. Важно понимать рабочие нагрузки. Вы хотите разработать хранилище и виртуальную машину для удовлетворения потребностей этих пиков рабочей нагрузки без существенной задержки. Каждый тип виртуальной машины Azure имеет ограничение на операции ввода-вывода в секунду.

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

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

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

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: (локально подключенный SSD) для файлов TempDB, так как TempDB повторно создается при перезапуске сервера, поэтому не существует риска потери данных.
  • Включите мгновенную инициализацию файлов, чтобы снизить эффект операций, связанных с увеличением размера файла.
  • Перенесите каталоги с файлами трассировки и журналами ошибок на диски с данными.
  • Для рабочих нагрузок, требующих задержки хранилища до 1 миллисекунда, рекомендуется использовать диск категории "Ультра" по ssd уровня "Премиум".

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

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

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

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