format F: /FS:NTFS /V:MyFILESTREAMContainer /A:64K

Этот параметр должен сочетаться с большим размером буфера, как описано в разделе «Настройка производительности и рекомендации по проведению тестов производительности» далее в этом техническом документе.

Управление фрагментацией

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

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

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

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

Сжатие

Данные, которые хранятся в файловой системе NTFS, могут быть сжаты. Это экономит место на диске, но создает дополнительную нагрузку на ЦП, который будет выполнять сжатие и распаковку данных при их считывании и записи соответственно. Сжатие также не принесет пользы, если данные плохо сжимаемы. Например, произвольные, зашифрованные данные или уже сжатые данные сжимаются плохо, но их все же придется обработать алгоритмом сжатия NTFS, что приведет к дополнительной нагрузке на ЦП.

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

Можно включить сжатие при форматировании тома контейнера данных FILESTREAM, если команда форматирования выполняется с параметром /C. Например:

 format F: /FS:NTFS /V:MyFILESTREAMContainer /A:4096 /C

Сжатие можно включить на существующем томе, выполнив следующие шаги.

1.  В разделе «Мой компьютер» или в проводнике щелкните том правой кнопкой мыши,
чтобы сжать или распаковать его.

2.  Выберите Свойства, чтобы открыть диалоговое окно Свойства.

3.  На вкладке Общие установите или снимите флажок Сжимать диск для экономии места, а затем нажмите кнопку ОК.

4.  В диалоговом окне Подтверждение изменения атрибутов выберите, должно сжатие применяться ко всему тому или только к корневой папке.

Это показано на следующем рисунке.

FILESTREAMWhitepaper2.GIF

Рис. 2. Сжатие существующего тома с помощью проводника Windows

Управление местом на диске

Различные контейнеры FILESTREAM можно разместить на одном томе NTFS, но есть аргументы
в пользу распределения места между контейнерами данных и томами NTFS в пропорции 1:1. Помимо потенциальных конфликтов с рабочей нагрузкой, отсутствует способ управлять использованием пространства на диске контейнером данных FILESTREAM в SQL Server, для этого требуются дисковые квоты NTFS. Дисковые квоты отслеживаются для каждого пользователя
и тома, поэтому при наличии нескольких контейнеров данных FILESTREAM на одном томе сложно определить, какой контейнер данных использует больше места на диске. Обратите внимание,
что все файлы FILESTREAM будут созданы в контексте учетной записи службы SQL Server.
В случае ее смены место на диске передается новой учетной записи службы.

Существует единственный драйвер фильтра файловой системы FILESTREAM для каждого тома NTFS, имеющего контейнер данных FILESTREAM, а также один драйвер фильтра для каждой версии SQL Server, имеющей контейнер данных FILESTREAM на томе. Каждый драйвер фильтра обеспечивает управление всеми контейнерами данных FILESTREAM для этого тома, для всех экземпляров, использующих конкретную версию SQL Server.

Например, том NTFS, на котором размещено три контейнера данных FILESTREAM, по одному
для каждого из трех экземпляров SQL Server 2008, будет иметь только один драйвер фильтра файловой системы FILESTREAM для SQL Server 2008.

Безопасность

Существует два требования безопасности при использовании компонента FILESTREAM.
Во-первых, SQL Server должен быть настроен для использования встроенных средств безопасности. Во-вторых, если будет использоваться удаленный доступ, то порт SMB (445) должен быть разрешен на всех системах брандмауэров. Те же требования действуют и для обычного удаленного доступа к общему ресурсу. Дополнительные сведения см. в статье
базы знаний «Service Overview and Network Port Requirements for the Windows Server System» (http://support. microsoft. com/kb/832017).

Вопросы применения антивирусных программ

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

Рекомендуется настроить антивирусную программу не на удаление файлов, а на помещение
их в карантин. В SQL Server можно использовать инструкцию DBCC CHECKDB для обнаружения файлов, которые кажутся отсутствующими, а затем администратор Windows может сопоставить имена этих файлов с данными журнала антивирусной программы и предпринять меры для устранения угрозы.

Включение FILESTREAM в Windows

FILESTREAM является гибридным компонентом, поэтому администратор Windows и администратор SQL Server должны выполнить определенные действия перед его включением. Это необходимо для того, чтобы сохранить разделение обязанностей между двумя администраторами, особенно если администратор SQL Server не является администратором Windows. При включении FILESTREAM на уровне Windows устанавливается драйвер фильтра файловой системы. Только администратор Windows имеет право сделать это.

На уровне Windows FILESTREAM включается во время установки SQL Server 2008 или с помощью диспетчера конфигурации SQL Server. Необходимо выполнить следующие шаги.

1.  В меню Пуск выберите пункт Все программы, затем Microsoft SQL Server 2008, Средства настройки и нажмите Диспетчер конфигурации SQL Server.

2.  В списке служб щелкните правой кнопкой мыши Службы SQL Server, а затем выберите пункт Открыть.

3.  В оснастке Диспетчер конфигурации SQL Server выберите экземпляр SQL Server,
на котором нужно включить FILESTREAM.

4.  Щелкните правой кнопкой мыши экземпляр и выберите пункт Свойства.

5.  В диалоговом окне Свойства SQL Server перейдите на вкладку FILESTREAM.

6.  Установите флажок Разрешить FILESTREAM при доступе через Transact-SQL.

7.  Если нужно считывать и записывать данные FILESTREAM из Windows, установите флажок Разрешить FILESTREAM при потоковом доступе файлового ввода-вывода. Введите имя общего ресурса Windows в поле Имя общего ресурса Windows.

8.  Имя общего ресурса, где расположены данные FILESTREAM Разрешить удаленным клиентам потоковый доступ к данным FILESTREAM.

9.  Нажмите кнопку Применить.

На следующем рисунке показана вкладка FILESTREAM, как описано в процедуре.

FILESTREAMWhitepaper3.GIF

Рис. 3. Настройка FILESTREAM с помощью диспетчера конфигурации SQL Server

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

Обратите внимание, что можно запретить доступ FILESTREAM на уровне Windows, даже когда он включен сервером SQL Server. В этом случае экземпляр SQL Server перезапускается и все данные FILESTREAM будут недоступны. Отображается следующее предупреждение.

FILESTREAMWhitepaper4.GIF

Рис. 4. Отображается предупреждение при отключении FILESTREAM с помощью диспетчера конфигурации SQL Server

Настройка SQL Server для FILESTREAM

Каждый экземпляр SQL Server, где будет использоваться компонент FILESTREAM, необходимо настроить отдельно как на уровне Windows, так и на уровне SQL Server. После включения FILESTREAM необходимо настроить базу данных для хранения данных FILESTREAM, только после этого можно определять таблицы, содержащие столбцы FILESTREAM. В этом разделе описывается настройка FILESTREAM на уровне SQL Server и метод создания баз данных и таблиц с поддержкой FILESTREAM, а также объясняется, как FILESTREAM взаимодействует с другими функциями в SQL Server 2008.

Вопросы безопасности

Для FILESTREAM требуется использование встроенной системы безопасности (т. е. проверки подлинности Windows). Когда приложение Win32 пытается обратиться к данным FILESTREAM, пользователь Windows проходит проверку в SQL Server. Если пользователь имеет доступ через Transact-SQL к данным FILESTREAM, то предоставляется также доступ на уровне Win32 при условии, что токен транзакции был получен в контексте безопасности пользователя Windows, который открывает файл.

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