Дисковая подсистема типичного файл-сервера представляет набор дисков, которые объединены в 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, позволяет повысить производительность системы при файловых операциях.