производительный файловый сервер ЗАРАЗА Спецвыпуск: Хакер, номер #063, стр. 063-034-1 (3APA3A@SECURITY.NNOV.RU) ОПТИМИЗАЦИЯ ПОД WINDOWS ЧТО ТАКОЕ ФАЙЛОВЫЙ СЕРВЕР? КАК ОН ФУНКЦИОНИРУЕТ? ЧТО НУЖНО, ЧТОБЫ СДЕЛАТЬ ФАЙЛОВЫЙ СЕРВЕР КАК МОЖНО БОЛЕЕ ШУСТРЫМ И ТЕМ САМЫМ, К ПРИМЕРУ, ПОВЫСИТЬ ПОЛНОТУ ИСПОЛЬЗОВАНИЯ ТВОЕЙ ГИГАБИТНОЙ СЕТИ? На первый взгляд, что может быть проще? Клиент пришел, попросил файл. За файлом слазили на диск, отдали клиенту. Однако файловый сервер — это нечто большее, чем сетевой интерфейс к жесткому диску. Конечно, скорость чтения современных винчестеров немаленькая, но что произойдет, когда одновременно нагрянет не один клиент, а несколько десятков? Кроме того, придется делить это «чтение» между разными клиентами и постоянно «прыгать», считывая данные из разных мест диска. Время доступа — уже довольно приличная величина... Механика! Никакой производительности. Чтобы работа шла быстро и чтобы от работы с файловым сервером клиенты получали то же впечатление, что и от работы с локальным диском, нужно заменить механику электроникой. Клиенты должны получать данные не с жесткого диска, а из оперативной памяти, имеющейся в достаточных количествах. Вот стандартный механизм работы файлового сервера: диск-память-сеть. За этой работой, разумеется, следит процессор. Когда производится такая работа, требуется: 1 МНОГО РАБОТАТЬ С ПАМЯТЬЮ, ПЕРЕМЕЩАЯ ДАННЫЕ С ЖЕСТКОГО ДИСКА В ПАМЯТЬ И ИЗ ПАМЯТИ — В СЕТЕВОЙ АДАПТЕР. 2 ДЕЛАТЬ ЭТО ОДНОВРЕМЕННО. Для ускорения передачи каких-либо данных существует два с половиной способа: 1) увеличить скорость передачи (например частоту шины); 2) распараллелить передачу. Оставшийся очень эффективный полуспособ — полностью избегать передачи данных везде, где возможно. Работа файлового сервера больше всего напоминает работу сердечно-сосудистой системы с двумя кругами кровообращения, и сложно экономить на нем 64 бита — бум? В Windows системный кеш — это область оперативной памяти, в которой хранятся данные, полученные с диска. Чем больше системный кеш, тем реже приходится лазить на диск за данными. 32-битное адресное пространство — 4 Гб адресуемой памяти. Именно столько может адресовать любое 32-битное приложение, в том числе ядро самой системы. В Windows приложение может использовать 2 Гб (3 Гб при наличии ключика /3GB в boot.ini) под свои данные. И тут мы сталкиваемся с неприятным фактом: для 32-битной версии Windows максимальный размер системного кеша составляет 1 Гб (точнее, даже несколько меньше), что по современным меркам маловато. Втыкание более 2 Гб памяти в файловый сервер не только не поможет, но и усугубит ситуацию, так как понизится эффективность использования процессорного кеша. Переход на 64-битные платформы устраняет эти проблемы. 64-битная версия Windows 2003 поддерживает системный кеш до 1 Тб. Таким образом, файловый сервер — это именно то приложение, в котором использование 64-битной платформы не будет лишним, если ты хочешь добиться эффективного кеширования. чип и сет спешат на помощь Поинтересуемся тем, почему в хорошем файловом сервере нельзя использовать десктопные чипсеты, даже очень хорошие и производительные. Посмотрим на примере двух «пограничных» чипсетов по разные стороны границы между сервером и рабочей станцией от Intel. С другими производителями дела обстоят аналогично, но у Intel гораздо легче найти нужные картинки. Сравним самый производительный десктопный чипсет 955X (Intel выносит такие чипсеты в отдельную категорию между десктопами и серверами — Workstation) и минимальный серверный чипсет начального уровня E7230. Характеристики чипсетов абсолютно идентичны: частоты памяти, пропускные способности шин, поддерживаемые процессоры и схема южного моста. Отличия становятся заметными, если посмотреть на диаграммы чипсетов. |