|
Bog BOS: Сервер кеширования имен (nscd) |
Последние изменения: |
Последнее изменение файла: 2007.02.08
Скопировано с www.bog.pp.ru: 2024.11.23
Результаты разрешения имен хостов, пользователей и групп пользователей стандартными функциями libc (glibc) сервисами имен (про переключение сервисов имен см. NSS) в операционных системах Solaris и Linux могут кэшироваться с помощью сервера nscd. nscd кеширует результаты, полученные NSS.
Прикладная программа, которой необходимо, например, получить адрес хоста по его имени, вызывает подпрограмму gethostbyname(3) или аналогичную. При сборке программы к ней прилинковываются подпрограммы из библиотеки libc (glibc), которые проверяют наличие требуемой информации в кеше nscd (если, конечно, запущен сервер nscd). Если информацию из кеша извлечь не удалось, то используется NSS для определения сервиса имен, который (которые) будет использован для поиска адреса по имени. В общем случае, таким сервисом служит DNS клиент (resolver).
Кеширование имен пользователей и групп пользователей имеет смысл, если для их разрешения используется некий сетевой сервис (NIS или NIS+). Кеширование имен хостов очень полезно, если на хосте не запущен локальный сервер DNS (уровень кеширования имен хостов на почтовом сервере достигает 92%).
В Solaris сервер /usr/sbin/nscd и скрипты запуска устанавливаются по умолчанию. Скрипт запуска /etc/init.d/nscd имеет опции start и stop. Для запуска и остановки создаются соответствующие ссылки:
/etc/rc0.d/K76nscd /etc/rc1.d/K76nscd /etc/rc2.d/S76nscd
В Red Hat Linux и совместимых с ним (ядро не ниже 2.2!) сервер /usr/sbin/nscd и скрипт запуска /etc/rc.d/init.d/nscd входят в состав пакета ncsd-*.rpm (кстати, исходные тексты пакета берутся из glibc-*.srpm). nscd реализован в виде многопоточного процесса, общающегося с включаемой в glibc клиентской частью с использованием unix-сокета /var/run/.nscd_socket (права 0666, кто-нибудь пробовал записать туда мусор?). Для предотвращения повторного запуска используется файл /var/run/nscd.pid. Опции скрипта: start, stop, status, restart, reload. Для запуска и остановки создаются соответствующие ссылки (управление через chkconfig):
/etc/rc.d/rc0.d/K80nscd /etc/rc.d/rc1.d/K80nscd /etc/rc.d/rc2.d/K80nscd /etc/rc.d/rc3.d/S30nscd /etc/rc.d/rc4.d/K80nscd /etc/rc.d/rc5.d/K80nscd /etc/rc.d/rc6.d/K80nscd
Посмотреть статистику (в Linux возможность доступна только root и не показывается уровень заполнения таблиц):
/usr/sbin/nscd -g
Имя файла конфигурации можно изменить с помощью ключа запуска -f (по умолчанию - /etc/nscd.conf).
При изменении настройки NSS или DNS-клиента сервер nscd требуется перезапустить.
В некоторых версиях имена хостов, имеющих несколько адресов, не кешируются, чтобы не мешать балансировке нагрузки удалекнного сервера.
Версия Linux имеет дополнительные ключи запуска:
Каждая строка файла конфигурации задант значение некоторого атрибута. Действие оператора может быть ограничено пределами одной таблицы (hosts, passwd, groups). Комментарии начинаются символом # и завершаются концом строки.
Атрибуты:
Конфигурация по умолчанию расчитана на работу в составе рабочей станции, а не на сервера. Имена пользователей и групп пользователей у меня почти не используются, да и NIS не запущен), а вот кеширование имен хостов используется на сервере интенсивно, так что настройку таблицы хостов я сделал такую (кстати, она максимальная для Solaris по количеству позиций в таблице и количеству горячих позиций):
positive-time-to-live hosts 3600 negative-time-to-live hosts 120 suggested-size hosts 9973 keep-hot-count hosts 200 old-data-ok hosts no check-files hosts yes
|
Bog BOS: Сервер кеширования имен (nscd) |
Последние изменения: |