Linux. Полное руководство.

12.2.8. Оптимизация Samba.

Ваш Samba-сервер медленно работает, и вы уже устали от постоянных жалоб пользователей? Лучшим выходом из данной ситуации будет покупка нового винчестера. Лучше всего покупать SCSI-винчестер со скоростью 10000 оборотов в минуту. В крайнем случае подойдет IDE-диск, поддерживающий режим ATA133 и работающий со скоростью 7200 оборотов в минуту. При покупке такого винчестера обратите внимание на следующие факторы:

♦ ваша материнская плата должна поддерживать режим ATA133;

♦ у вас должен быть специальный кабель для подключения жесткого диска (если материнская плата поддерживает ATA100/133, такой кабель у вас будет);

♦ покупайте винчестер с большим объемом кэша: на рынке можно найти несколько моделей винчестеров, различающихся маркировкой, но в одном случае вы получаете 2 Мб кэша, а во втором — 640 Кб (или 1 Мб, но все равно меньше, чем в более дорогой модели).

Если же денег на покупку такого винчестера нет, попробуем оптимизировать наши настройки. Во-первых, установите значение yes для директивы wide links в файле конфигурации smb.conf — это должно повысить производительность сервера, если в общих каталогах имеются ссылки.

Во-вторых, в дистрибутивах на ядре 2.4 есть демон bdflush. Он занимается записью буферов, содержащих модифицированные данные файловой системы, на диск. Настройки по умолчанию не очень эффективны:

30 64 64 256 500 3000 60 0 0.

Попробуем немного оптимизировать настройки bdflush. Для этого откройте файл /etc/sysctl.conf и добавьте в него следующую строку:

Vm.bdflush = 80 500 64 64 15 6000 6000 0 0.

Этим мы говорим демону, чтобы он записывал буферы на диск, когда буфер кэша файловой системы заполнен на 80 процентов.

После этого нужно перезапустить сервис network:

# service network restart.

Если вам нельзя ни на секунду останавливать сервис network, вместо модификации файла /etc/sysctl.conf введите следующую команду:

# sysctl -w vm.bdflush="80 500 64 64 15 6000 6000 0 0".

Чтобы заставить ваш Samba-сервер работать быстрее, попробуем поэкспериментировать с кэшированием памяти: мы будем использовать минимум 60 процентов памяти для кэша.

Sysctl -w vm.buffermem = "60 10 60".

Примечание. Последние два параметра (10 и 60) сейчас не используются. Значения по умолчанию — «2 10 60».