Цель настоящего технического документа — подчеркнуть, что выбор уровня RAID для томов контейнера данных FILESTREAM должен быть обоснованным, решение должно приниматься после всесторонней оценки его достоинств и недостатков, а не после оценки единственного фактора.

Выбор интерфейса диска

Для типичных баз данных, содержащих данные больших двоичных объектов, общий размер данных часто многократно превосходит общий размер структурированных данных. В решении, связанном с хранением данных FILESTREAM на разных томах, предпочтительно использовать для тома более дешевое хранилище, например интегрированную среду разработки или SATA (далее просто «SATA»), а не дорогостоящее хранилище с интерфейсом SCSI. Прежде чем сделать этот выбор, необходимо понять и оценить связанные с ним компромиссы. В этом разделе приведен сравнительный обзор различных характеристик SCSI и IDE/SATA, которые помогут сделать обоснованный выбор исходя из требований к производительности, надежности и затратам.

Емкость и производительность

Диски SATA обычно имеют большую емкость, чем диски SCSI, но им присуща более низкая частота вращения. Частота вращения некоторых дисков SATA составляет 10 000 об/мин,
но у большинства устройств она составляет от 5400 до 7200 об/мин. В продаже имеются высокопроизводительные диски SCSI с частотой вращения от 10 000 до 15 000 об/мин. Хотя показатель частоты вращения может оказаться полезным, при сравнении дисков необходимо учитывать задержку (время, за которое головка диска перемещается в нужное место на поверхности) и среднюю скорость передачи (объем данных, передаваемых или получаемых
с поверхности диска за одну секунду). Также важно, чтобы диски могли эффективно выполнять сложные последовательности ввода-вывода. При выборе дисков убедитесь, что диски SATA поддерживают технологию Native Command Queue (NCQ), а диски SCSI — драйвер дисковой подсистемы Command Tag Queue (CTQ), это позволит им обрабатывать множественные
и чередующиеся операции ввода-вывода для повышения производительности.

НЕ нашли? Не то? Что вы ищете?

В целом диски SCSI обычно имеют лучшие показатели задержки и скорости передачи и потому обеспечивают более высокую производительность при потоковой передаче, но их стоимость, как правило, выше.

Надежность

Для SQL Server требуется гарантированное упорядочение операций записи и устойчивость,
чтобы обеспечить надежность и возможность восстановления через механизм упреждающего ведения журнала. Дополнительные сведения о требованиях к вводу-выводу см. в техническом документе TechNet «SQL Server I/O Basics» (http://www. microsoft. com/technet/prodtechnol/sql/2005/iobasics. mspx).

По показателям надежности SCSI обычно превосходит SATA благодаря исчерпывающей поддержке принудительной записи данных на диск, чего нет в SATA. Это достигается за счет сквозной записи (записываемые данные вообще не кэшируются) либо принудительной передачи содержимого кэша на диск. Отсутствие любой из этих возможностей может повлиять на восстановление после сбоев питания, программного или аппаратного отказа. Все типы интерфейсов обеспечивают горячую замену, что позволяет вносить исправления при сохранении доступности.

Для работы FILESTREAM необходимо гарантировать упорядоченность записи и устойчивость.

·  Устойчивость данных во время фиксации транзакции

·  Упреждающее ведение журнала для создания и удаления файла FILESTREAM

Устойчивость данных достигается за счет явной записи драйвером файловой системы FILESTREAM на диск тех файлов, которые были изменены до фиксации транзакции
(подробное описание этого механизма выходит за рамки настоящего технического документа).
Это гарантирует, что в случае отказа электропитания диски, не имеющие кэша с достаточным питанием от аккумулятора, не зафиксируются, но не записанные на диск данные FILESTREAM будут потеряны. Если диски SATA не поддерживают операцию принудительной записи на диск,
то возможность восстановления снижается, что может привести к потере данных.

Упреждающее ведение журнала зависит от целостности метаданных NTFS. А это в свою
очередь зависит от надежности используемых дисков. Для SCSI такой проблемы не существует, но если диски SATA не обеспечивают принудительную запись на диск, то некоторые изменения метаданных NTFS могут быть потеряны в случае отказа питания. Результатом могут быть несколько вариантов.

·  Не удалось восстановить NTFS и подключить том (т. е. контейнер данных FILESTREAM,
в сущности, находится в режиме «вне сети»).

·  Происходит восстановление NTFS, но изменения метаданных NTFS теряются, и SQL Server не располагает сведениями для отката незафиксированной транзакции, которая выполняет вставку данных FILESTREAM (т. е. происходит «утечка» данных FILESTREAM).

·  Происходит восстановление NTFS, но изменения метаданных NTFS теряются, и SQL Server не имеет данных для отката незафиксированной транзакции, которая выполняет удаление данных FILESTREAM (т. е. данные FILESTREAM будут потеряны).

Следует отметить, что все три сценария не хуже, чем в том случае, когда данные больших двоичных объектов хранятся вне базы данных на томе NTFS с дисками SATA, которые не поддерживают принудительную запись данных на диск. Использование FILESTREAM на томе
с дисками SATA в этом случае фактически предпочтительнее, чем хранение данных больших двоичных объектов в необработанных файлах NTFS на том же томе, так как согласованность
на уровне ссылок FILESTREAM обеспечивает механизм для обнаружения таких «повреждений»
(с выполнением инструкции DBCC CHECKDB для базы данных).

Таким образом, данные FILESTREAM надежно хранятся на дисковых томах SATA при условии,
что диски SATA поддерживают принудительную запись данных через перенос содержимого кэша на диск.

Настройка NTFS

Даже самые продуманные подсистемы ввода-вывода на высокопроизводительном оборудовании могут функционировать не так, как требуется, если файловая система (в данном случае NTFS) настроена неправильно. В этом разделе описаны некоторые параметры настройки, которые могут повлиять на рабочую нагрузку, связанную с данными FILESTREAM.

Более полный обзор NTFS см. статьях «NTFS Technical Reference» (http://technet. /
ru-ru/library/cc758691.aspx) и «Working with File Systems» (http://technet. /ru-ru/library/
bb457112.aspx) в библиотеке TechNet.

Оптимизация производительности NTFS

По умолчанию настройка файловой системы NTFS не рассчитана на высокопроизводительное обслуживание рабочей нагрузки с десятками тысяч файлов в отдельном каталоге файловой системы (т. е. сценарий FILESTREAM). Необходимо настроить два параметра NTFS, обеспечивающие высокую производительность FILESTREAM. Особенно важно правильно задать параметры, прежде чем выполнять любые проверки производительности, в противном случае результаты не будут отражать истинную производительность FILESTREAM.

Первый параметр конфигурации — отключение создания имен в формате 8.3 при создании файлов (или переименовании существующих). Этот процесс создает для каждого файла дополнительное имя, которое предназначено только для обратной совместимости с 16-разрядными приложениями. Алгоритм создает новое имя в формате 8.3, а затем должен просмотреть через все существующие имена файлов в формате 8.3 имени в каталоге,
чтобы убедиться в уникальности нового имени. По мере увеличения числа файлов в каталоге (обычно свыше 300 000) этот процесс будет занимать все больше времени. В свою очередь
время создания файла увеличивается, а производительность снижается, поэтому, отключив
этот процесс, можно значительно повысить производительность. Чтобы отключить этот процесс, введите следующую команду в командной строке, а затем перезагрузите компьютер.

 fsutil behavior set disable8dot3 1

Примечание. Этот параметр отключает создание имен в формате 8.3 на всех томах NTFS на сервере. Если какой-либо из томов используется 16-разрядными приложениями, то на нем после такого изменения могут возникнуть проблемы.

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

 fsutil behavior set disablelastaccess 1

Размер кластера

Во всех файловых системах Windows существует понятие кластера, который представляет собой единицу выделения места на диске. Поскольку кластер является наименьшей порцией дисковой памяти, которая может быть выделена, то для маленьких файлов часть кластера остается неиспользованной (в сущности, потерянной). Поэтому размер кластера обычно весьма мал,
чтобы мелкие файлы не занимали на диске слишком много места.

Большие файлы могут занимать множество кластеров. По мере увеличения размера файла
в него добавляются новые кластеры. Если размер файла значительно увеличивается, но малыми фрагментами данных, то выделенные кластеры, скорее всего, будут располагаться на диске не последовательно (т. е. фрагментарно). Так что чем меньше кластеры и больше растет файл, тем более фрагментированным он становится.

Поэтому при определении размера кластера приходится идти на компромисс между потерями места на диске и фрагментацией. Более подробные сведения о различных размерах кластеров
в файловых системах Windows приведены в статье базы знаний «Default Cluster Size for FAT and NTFS» (NTFS, FAT и http://support. /kb/140365).

При использовании FILESTREAM рекомендуется делать так, чтобы отдельные блоки данных больших двоичных объектов составляли не менее 1 МБ. Если это так, то для снижения фрагментации рекомендуемый размер кластера NTFS для тома контейнера данных FILESTREAM должен составлять 64 КБ. Это необходимо сделать вручную, так как значение по умолчанию для томов NTFS до 2 терабайт (TБ) равно 4 КБ. Это можно сделать с помощью параметра /A в команде форматирования. Например, введите в командной строке:

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8