23 марта 2010 г.

Файловая система /proc/sys. Часть I

В рамках данной статьи я решил выполнить перевод некоторого количества документации про возможности более тонкой настройки Linux через файловую систему /proc/sys. В качечстве исходного варианта используется Red Hat Enterprise Linux Deployment Guide, которое либо можно просмотреть в HTML-формате, либо скачать в формате PDF.

Исходный документ распространяется на основе Open Publication Licence, поэтому данный перевод имеет ту же лицензию на использование:

Copyright © 2007 Red Hat Inc.. This material may only be distributed subject to the terms and conditions set forth in the Open Publication License, V1.0 or later (the latest version of the OPL is presently available at http://www.opencontent.org/openpub/).

Поскольку материала много - буду выкладывать его по частям.

Директория /proc/sys/ отличается от других, находящихся в /proc/ , поскольку не только предоставляет информацию о системе, но и позволяет системному администратору в реальном времени изменять параметры ядра.


ПРЕДУПРЕЖДЕНИЕ!
Будьте предельно осторожны и внимательны при изменении приведенных ниже параметров системы в директории /proc/sys/ на "боевом" сервере. Неправильные настройки могут сделать работу ядра неустойчивой, что потребует перезагрузки системы для восстановления ее работоспособности.
Поэтому перед изменением любых настроек убедитесь, что будете использовать только правильные параметры для каждого файла.

Хороший способ определить, позволяет ли данный файл изменять настройки или же он предназначен только для предоставления информации, заключается в просмотре его прав доступа (командой ls с ключом -l). Если файл доступен для записи - он может использоваться для настройки параметров ядра. Например, вывод команды ls -l для /proc/sys/fs выглядит следующим образом (вывод обрезан для наглядности):
-r--r--r--    1 root     root            0 May 10 16:14 dentry-state
-rw-r--r--    1 root     root            0 May 10 16:14 dir-notify-enable
-r--r--r--    1 root     root            0 May 10 16:14 dquot-nr
-rw-r--r--    1 root     root            0 May 10 16:14 file-max
-r--r--r--    1 root     root            0 May 10 16:14 file-nr
В приведенном листинге, файлы dir-notify-enable и file-max доступны на запись, и, следовательно, могут использоваться для настройки параметров ядра. Другие файлы только предоставляют информацию о текущих настройках.

Способы изменения параметров ядра

Изменение значений в файлах, находящихся в /proc/sys/ , выполняется с помощью команды echo. Например, чтобы разрешить в системе использование команд SysRq (команды Alt+SysRq+<ключ> позволяют делать много интересных вещей с системой простым нажатием трех кнопок - прим.перев) используйте следующую команду:
echo 1 > /proc/sys/kernel/sysrq
Возможные параметры для данного файла только 0 (возможность отключена) и 1 (возможность включена).
В то же время некоторые файлы в /proc/sys/ содержат более одного значения. Для правильной передачи параметров командой echo в таком случае необходимо разделять параметры пробелами, например так:
echo 4 2 45 > /proc/sys/kernel/acct  
Любые изменения, вносимые в конфигурацию с использованием команды echo "живут" до перезагрузки системы. Для внесения постоянных изменений необходимо использовать команду sysctl и ее конфигурационный файл /etc/sysctl.conf .
Так, для вывода полного списка параметров, доступных через /proc/sys/, необходимо вызвать команду sysctl c ключом -a . Она выведет огромный список параметров, небольшое количество которых приведено в примере ниже:
net.ipv4.route.min_delay = 2 
kernel.sysrq = 0 
kernel.sem = 250     32000     32     128
Те же самые параметры можно было просмотреть и через содержимое соответствующих файлов. Для первого приведенного параметра соответствующий файл имеет следующее местонахождение - /proc/sys/net/ipv4/route/min_delay . Таким образом, соответствующий параметр для sysctl можно получить, отбросив от полного имени /proc/sys и заменив в пути символы / на точки.
Команда sysctl также может использоваться вместо echo для изменения параметров системы "на лету". Например, команда:
echo 1 > /proc/sys/kernel/sysrq
полностью аналогична следующей:
sysctl -w kernel.sysrq="1"
Чтобы вносимые изменения сохранялись и после перезапуска системы, их необходимо внести в файл /etc/sysctl.conf (на более “свежих” дистрибутивах вместо данного файла используются файлы с расширением .conf, находящиеся в каталоге /etc/sysctl.d/ - прим. перев.), который обрабатывается стартовыми скриптами системы. Для параметра из предыдущего примера запись в данном файле должна выглядеть следующим образом:
kernel.sysrq="1"

Параметры ядра, находящиеся в директории /proc/sys/


Директория /proc/sys/ содержит несколько поддиректорий, контролирующих различные аспекты работающего ядра.

/proc/sys/dev/

Эта директория содержит файлы, определяющие параметры работы отдельных устройств системы. На большинстве систем в ней находятся как минимум два каталога - cdrom/ и raid/ Системы с самосборным ядром могут иметь и другие каталоги, такие как parport/ которая обеспечивает возможность совместного использования параллельного порта между несколькими драйверами устройств. Директория cdrom/ содержит файл с именем info, содержащий информацию о ряде важных параметров CD-ROM: 
CD-ROM information, Id: cdrom.c 3.20 2003/12/17
drive name:             hdc 
drive speed:            48 
drive # of slots:       1 
Can close tray:         1 
Can open tray:          1 
Can lock tray:          1 
Can change speed:       1 
Can select disk:        0 
Can read multisession:  1 
Can read MCN:           1 
Reports media changed:  1 
Can play audio:         1 
Can write CD-R:         0 
Can write CD-RW:        0 
Can read DVD:           0 
Can write DVD-R:        0 
Can write DVD-RAM:      0 
Can read MRW:           0 
Can write MRW:          0 
Can write RAM:          0 
Как видно из приведенного примера, быстро просмотрев данный файл, можно сделать вывод о характеристиках используемого в системе CD-ROM, если такая информация неизвестна. Если в системе имеется несколько устройств для чтения компакт-дисков, то информация о каждом из них находится в своей собственной колонке.
Различные файлы в директории /proc/sys/dev/cdrom такие, как autoclose и checkmedia могут использоваться для контроля поведения CD-ROM. Чтобы включить или отключить эти возможности, необходимо использовать команду echo.
Если ядро Linux собрано с поддержкой RAID, то в ней появляется директория /proc/sys/dev/raid/, в которой находятся по крайней мере два файла: speed_limit_min и speed_limit_max. Эти параметры определяют ускорение работы RAID-устройств для интенсивных операций ввода/вывода, таких, как, например, ресинхронизация дисков.

/proc/sys/fs/

Эта директория содержит большое количество информации, касающейся различных аспектов работы файловой системы, такой как квоты, обработка файлов, инодов и информации о директориях.
Директория binfmt_misc/ используется, чтобы обеспечить поддержку ядром разных бинарных форматов.
Директория /proc/sys/fs/ содержит следующие важные файлы: 
  • dentry-state - предоставляет информацию о состоянии кэша информации о директориях. Содержимое файлы обычно выглядит следующим образом:
           57411 52939 45 0 0 0

Первая цифра показывает общее количество записей, находящихся в кэше директорий, а второе число показывает количество неиспользуемых записей. Третья цифра указывает время в секундах, между тем, когда каталог был освобожден и когда он может быть потребован снова, а четвертая - количество страниц запрошенных системой в настоящий момент. Последние две цифры не используются и обычно равны нулю. 

  • dquot-nr - показывает максимальное количество кэшированных записей о квотах диска. 
  • file-max - показывает максимальное количество дескрипторов файлов, выделяемых ядром. Повышение значения в этом файле может разрешить ошибки, вызванные их нехваткой. 
  • file-nr - показывает количество выделенных дескрипторов файлов, использованных дескрипторов и их максимальное количество. 
  • overflowgid и overflowuid - определяет фиксированные идентификаторы группы и владельца, соответственно, для использования с файловыми системами, которые поддерживают только 16-разрядные группы и идентификаторы пользователя. 
  • super-max - определяет максимальное количество доступных суперблоков. 
  • super-nr - отображает текущее количество используемых суперблоков. 
(продолжение тут)

Комментариев нет:

Отправить комментарий