Дисковая подсистема типичного файл

advertisement
Дисковая подсистема типичного файл-сервера представляет набор дисков, которые объединены в RAID-массив, обеспечивающий
требуемый уровень отказоустойчивости и производительности. Максимальную производительность и отказоустойчивость
обеспечивает RAID-массив уровня 0+1, однако отказоустойчивость в данном случае достигается за счет двукратной избыточности,
поэтому в плане стоимости данное решение не слишком привлекательно. Наиболее часто в локальных сетях среднего уровня
применяется RAID-массив уровня 5, для создания которого требуются как минимум три диска. Если же в сервере используется
RAID-массив уровня 0+1, то для повышения производительности можно попробовать изменить размер страйп-блока.
Первые четыре ключа (TcpWindowSize, Tcp1323Opts, NumTcbTablePartitions, MaxUserPort) позволяют настраивать
производительность сетевой подсистемы сервера, а остальные (PagedPoolSize, LargeSystemCache, AdditionalDelayedWorkerThreads,
NtfsDisableLastAccess, NtfsDisable8dot3NameCreation) влияют на производительность дисковой подсистемы.
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
TcpWindowSize = 1048280 (REG_DWORD, decimal)
Tcp1323Opts = 1 (REG_DWORD, decimal)
NumTcbTablePartitions = 8 (REG_DWORD, decimal)
MaxUserPort = 65534 (REG_DWORD, decimal)
Ключ TcpWindowSize, который рассматривался выше, позволяет задать максимальный размер TCP-окна. Для файл-сервера,
оснащенного гигабитным сетевым интерфейсом, желателен как можно больший размер окна (вплоть до 1 Гбайт). Однако для того,
чтобы иметь возможность задать размер TCP-окна более 64 Кбайт, необходимо добавить в этот же раздел реестра
ключ Tcp1323Opts, значение которого устанавливается равным 1. В этом случае можно задать размеры TCP-окна более 64 Кбайт.
При тюнинге реестра на сервере мы использовали значение TCP-окна кратное максимальному размеру сегмента (MSS) TCP, то есть
1460 байт, и равное 1 048 280 байт.
Ключ NumTcbTablePartitions задает количество TCB-блоков (Transmission Control Block), создаваемых для каждого TCPсоединения. По умолчанию количество создаваемых TCB-блоков определяется как квадрат количества процессоров в системе.
Допустимые значения этого ключа — степени числа 2, то есть 2, 4, 8, 16, 32 и 64. Рекомендуем поэкспериментировать с этим
параметром — в нашем случае методом проб и ошибок было найдено оптимальное значение этого ключа равное 32. Отметим, что
данный ключ оказывает существенное влияние на сетевой трафик, когда к файл-серверу одновременно подключается большое
количество активных клиентов.
Ключ MaxUserPort задает максимальное количество портов, используемых при установлении соединения. По умолчанию на
каждый IP-адрес выделяется 5 тыс. портов, однако иногда бывает целесообразно увеличить их количество до максимума — 65 534
(0хfffe).
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
DisablePagingExecutive = 1 (REG_DWORD, decimal)
LargeSystemCache = 1 (REG_DWORD, decimal)
PagedPoolSize = 192000000 (REG_DWORD, decimal)
SystemPages = 0 (REG_DWORD, decimal)
Теперь рассмотрим более подробно назначение ключей, оказывающих влияние на дисковую подсистему сервера.
Ключ SystemPages определяет количество страниц памяти, которые резервируются для отображения буферов ввода-вывода и
другой информации на адресное пространство. Установка данного ключа равным 0 (значение по умолчанию) позволяет системе
самостоятельно определять оптимальное значение количества страниц, основываясь на объеме доступной оперативной памяти и
аппаратной конфигурации сервера.
Значение ключа LargeSystemCache определяет размер создаваемого файлового кэша. По умолчанию значение этого ключа равно
1, что позволяет файл-серверу использовать большой файловый кэш вместо стандартного.
Создаваемый системой файловый кэш и пул страниц используют одно и то же адресное пространство в памяти. Ограничение
размера пула страниц позволяет организовывать больший по размеру файловый кэш, что приводит к кэшированию большего
размера данных и, как следствие, к повышению производительности файлового сервера. Для ограничения размера пула страниц
используется ключPagedPoolSize. В нашем случае оптимальным оказалось значение этого ключа 192000000.
HKLM\SYSTEM\CurrentControlSet\Control\FileSystem
NtfsDisable8dot3NameCreation = 1 (REG_DWORD, decimal)
NtfsDisableLastAccessUpdate = 1 (REG_DWORD, decimal)
Ключ NtfsDisableLastAccessUpdate позволяет запретить файловой системе NTFS обновлять метки времени последнего доступа к
каждому файлу или папке, что приводит к возрастанию производительности дисковой подсистемы. Для реализации данной
функции необходимо установить значение этого ключа равным 1.
Значение ключа NtfsDisable8dot3NameCreation равное 1 запрещает файловой системе NTFS генерировать имена файлов в
формате 8.3 (формат DOS) для длинных имен файлов и для имен файлов, содержащих специальные символы, не допустимые для
формата 8.3. По умолчанию значение данного ключа равно 0, что заставляет файловую систему генерировать и сохранять для
каждого файла два имени: имя, назначенное пользователем, и сгенерированное в формате 8.3. Отключение данной функции, то
есть установка значения ключа равного 1, позволяет повысить производительность системы при файловых операциях.
Download