Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #63, ФЕВРАЛЬ 2006 г.

производительный файловый сервер

ЗАРАЗА

Спецвыпуск: Хакер, номер #063, стр. 063-034-5


В Windows NT есть ошибка: были инвертированы значения Maximize data throughput for file sharing и Maximize data throughput for network applications. В Windows 2003 этот недостаток устранен, но часто можно встретить устаревший и, соответственно, неправильный совет

Создаешь необходимые разделы на жестких дисках, разумеется, используя файловую систему NTFS. Устанавливаешь необходимые разрешения доступа (ACL). Список ACL должен быть как можно короче. Правильный список содержит, чаще всего, одну-две записи (для обычных пользователей и администраторов). Список ACL проверяется при каждом открытии файла, поэтому чем он короче, тем меньше времени требуется для проверки. Microsoft рекомендует следующий алгоритм. Учетные записи пользователей группируются по небольшим глобальным группам (Domain Global), обычно в соответствии с функциональными обязанностями. Для доступа к ресурсам создаются доменные локальные группы (Domain Local), в них включаются доменные глобальные группы тех пользователей, которым необходим доступ. Таким образом минимизируется размер и списков ACL, и списков SID (идентификаторов безопасности) в токене доступа пользователя. Открываешь совместный доступ к файлам, настраиваешь различные вспомогательные задачи, такие как резервное копирование и дефрагментация. Сервер уже готов к работе.

как работает «служба доступа к файлам и принтерам» и системный кеш

При запуске службы доступа к файлам и принтерам (LanmanServer) создается пул рабочих потоков (thread pool) и рабочая очередь на каждый из имеющихся процессоров. Каждый поток «выхватывает» задание из очереди, обрабатывает его и принимается за следующее задание. Что происходит, если клиент пытается открыть файл по сети? Служба перенаправителя (redirector) передает запрос службе клиента для сетей Microsoft (LanmanWorkstation), которая формирует запрос SMB и отправляет его на файловой сервер службе LanmanServer, где он попадает в одну из очередей в виде «задания» (work item). Когда очередь доходит до этого задания, освободившийся поток берет его из очереди и выполняет запрос, обращаясь к запрошенному фрагменту файла. При обращении к файлу используется интерфейс MDL (Memory Descriptor List). Если фрагмента файла еще нет в системном кеше, то его необходимо получить с диска. В таком случае на время работы с файлом «задание» ставится в отдельную блокирующую (blocking) очередь, пока файловая операция не будет завершена, а рабочий поток начинает обрабатывать следующее задание из очереди. Интерфейс MDL возвращает список страниц реальной (физический) памяти из системного кеша, по которому находятся запрошенные данные. Если задание находилось в блокирующей очереди, оно переводится в основную очередь и ожидает продолжения обработки. Затем рабочий поток формирует служебные данные для ответного SMB-пакета и передает эти данные, а также полученный реальный адрес из системного кеша сетевому адаптеру. Сетевой адаптер получает данные непосредственно из системного кеша, используя прямое обращение к памяти (DMA), и отправляет их клиенту вместе со служебным заголовком. Таким образом, обращение к данным в памяти происходит всего один раз. Если клиент записывает какие-либо данные, то они также меняются в кеше и сбрасываются на диск, когда он переходит в режим простоя или по мере необходимости.

Назад на стр. 063-034-4  Содержание  Вперед на стр. 063-034-6