@ Карта сайта News Автора!

Bog BOS: Сервер кеширования имен (nscd)

Последние изменения:
2024.11.22: sysadmin: systemd-journald (централизованное хранение)
2024.11.11: sysadmin: Linux: пространства имён
2024.11.06: sysadmin: настройка TCP/IP в Linux: виртуальный интерфейс и виртуальный мост
2024.10.25: sysadmin: Linux VFS, атрибуты, расширенные атрибуты, ACL

Последнее изменение файла: 2007.02.08
Скопировано с www.bog.pp.ru: 2024.11.23

Bog BOS: Сервер кеширования имен (nscd)

Результаты разрешения имен хостов, пользователей и групп пользователей стандартными функциями libc (glibc) сервисами имен (про переключение сервисов имен см. NSS) в операционных системах Solaris и Linux могут кэшироваться с помощью сервера nscd. nscd кеширует результаты, полученные NSS.

Прикладная программа, которой необходимо, например, получить адрес хоста по его имени, вызывает подпрограмму gethostbyname(3) или аналогичную. При сборке программы к ней прилинковываются подпрограммы из библиотеки libc (glibc), которые проверяют наличие требуемой информации в кеше nscd (если, конечно, запущен сервер nscd). Если информацию из кеша извлечь не удалось, то используется NSS для определения сервиса имен, который (которые) будет использован для поиска адреса по имени. В общем случае, таким сервисом служит DNS клиент (resolver).

Кеширование имен пользователей и групп пользователей имеет смысл, если для их разрешения используется некий сетевой сервис (NIS или NIS+). Кеширование имен хостов очень полезно, если на хосте не запущен локальный сервер DNS (уровень кеширования имен хостов на почтовом сервере достигает 92%).

Установка и запуск nscd

В 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 имеет дополнительные ключи запуска:

Настройка nscd

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

@ Карта сайта News Автора!

Bog BOS: Сервер кеширования имен (nscd)

Последние изменения:
2024.11.22: sysadmin: systemd-journald (централизованное хранение)
2024.11.11: sysadmin: Linux: пространства имён
2024.11.06: sysadmin: настройка TCP/IP в Linux: виртуальный интерфейс и виртуальный мост
2024.10.25: sysadmin: Linux VFS, атрибуты, расширенные атрибуты, ACL



Copyright © 1996-2024 Sergey E. Bogomolov; www.bog.pp.ru