Ipsysctl tutorial 1.0.4

         

Файловая система /proc


Виртуальная файловая система /proc содержит большое количество информации, собранной из ядра во время исполнения и модифицируется всякий раз, когда вы пытаетесь просмотреть ее. Вся информация отображается как обычная файловая система -- вы можете просматривать файлы, путешествовать по дереву каталогов и т.п., то есть все то, что вы можете делать и в обычной файловой системе. Однако, большинство файлов в файловой системе /proc доступны только для чтения, т.е. не могут быть изменены. Эти файлы предназначены лишь для того, чтобы предоставить необходимую вам информацию.

Одним из каталогов, доступных на чтение-запись, является каталог /proc/sys. Все переменные ("файлы"), расположенные в этом каталоге и его подкаталогах доступны как для чтения, так и для записи.

В этом документе рассматривается Internet Protocol версии 4 (IPv4). Соответсвующий ему раздел находится в каталоге /proc/sys/net/ipv4. Здесь находятся все настройки стека IPv4, включая TCP, UDP, ICMP и ARP.



это виртуальная файловая система, которой


Файловая система /proc -- это виртуальная файловая система, которой не существует в действительности, иначе как в "голове" ядра. Файловая системв /proc -- это особенность ядра Linux. Она может присутствовать и в других операционных системах, но с иной функциональностью и другим предназначением.

Краткое описание файловой системы /proc


Файловая система /proc содержит несколько основных каталогов и файлов, которые я опишу прежде чем перейти к рассмотрению стека ipv4.

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

Кроме того, здесь находится довольно много других файлов и каталогов. Ниже приводится полный список:

[blueflux@work1 ]$ ls -l /proc

total 0 .... -r--r--r-- 1 root root 0 Sep 19 18:09 apm dr-xr-xr-x 4 root root 0 Sep 19 10:52 bus -r--r--r-- 1 root root 0 Sep 19 18:09 cmdline -r--r--r-- 1 root root 0 Sep 19 18:09 cpuinfo -r--r--r-- 1 root root 0 Sep 19 18:09 devices -r--r--r-- 1 root root 0 Sep 19 18:09 dma dr-xr-xr-x 4 root root 0 Sep 19 18:09 driver -r--r--r-- 1 root root 0 Sep 19 18:09 execdomains -r--r--r-- 1 root root 0 Sep 19 18:09 fb -r--r--r-- 1 root root 0 Sep 19 18:09 filesystems dr-xr-xr-x 2 root root 0 Sep 19 18:09 fs dr-xr-xr-x 4 root root 0 Sep 19 18:09 ide -r--r--r-- 1 root root 0 Sep 19 18:09 interrupts -r--r--r-- 1 root root 0 Sep 19 18:09 iomem -r--r--r-- 1 root root 0 Sep 19 18:09 ioports dr-xr-xr-x 18 root root 0 Sep 19 18:09 irq -r-------- 1 root root 268374016 Sep 19 18:09 kcore -r-------- 1 root root 0 Sep 19 10:52 kmsg -r--r--r-- 1 root root 0 Sep 19 18:09 ksyms -r--r--r-- 1 root root 0 Sep 19 18:09 loadavg -r--r--r-- 1 root root 0 Sep 19 18:09 locks -r--r--r-- 1 root root 0 Sep 19 18:09 mdstat -r--r--r-- 1 root root 0 Sep 19 18:09 meminfo -r--r--r-- 1 root root 0 Sep 19 18:09 misc -r--r--r-- 1 root root 0 Sep 19 18:09 modules lrwxrwxrwx 1 root root 11 Sep 19 18:09 mounts -> self/mounts -rw-r--r-- 1 root root 208 Sep 19 11:02 mtrr dr-xr-xr-x 3 root root 0 Sep 19 18:09 net dr-xr-xr-x 2 root root 0 Sep 19 18:09 nv -r--r--r-- 1 root root 0 Sep 19 18:09 partitions -r--r--r-- 1 root root 0 Sep 19 18:09 pci dr-xr-xr-x 3 root root 0 Sep 19 18:09 scsi lrwxrwxrwx 1 root root 64 Sep 19 12:01 self -> 2864 -rw-r--r-- 1 root root 0 Sep 19 18:09 slabinfo -r--r--r-- 1 root root 0 Sep 19 18:09 stat -r--r--r-- 1 root root 0 Sep 19 18:09 swaps dr-xr-xr-x 10 root root 0 Sep 19 14:39 sys dr-xr-xr-x 2 root root 0 Sep 19 18:09 sysvipc dr-xr-xr-x 4 root root 0 Sep 19 18:09 tty -r--r--r-- 1 root root 0 Sep 19 18:09 uptime -r--r--r-- 1 root root 0 Sep 19 18:09 version [blueflux@work1 proc]$


Большая часть информации находится в формате, удобном для восприятия. Однако есть файлы, к которым не следует "прикасаться", например: kcore. Этот файл хранит отладочную информацию ядра. Если попробовать просмотреть его от начала до конца (хотя бы с помощью команды cat), то это может привести к зависанию и краху системы. В некоторых случаях, попытка скопировать kcore в обычный файл может привести к заполнению всего свободного пространства, имеющегося на заданном разделе жесткого диска. Это еще раз напоминает нам о том, что нужно быть очень и очень осторожными. В большинстве своем содержимое файловой системы /proc безопасно для просмотра, исключение составляют лишь некоторые файлы. Вот краткое описание некоторых переменных (файлов), находящихся в корне файловой системы /proc, содержащих важную информацию:

cmdline - Командная строка, переданная ядру во время загрузки.

cpuinfo - Информация о Центральном Процессорном Устройстве (CPU), известные баги, флаги и пр.

dma - Информация о доступных каналах DMA и драйверах, использующих их.

filesystems - Краткая информация о файловых системах, поддерживаемых ядром.

interrupts - Краткий список всех IRQ, данные о количестве прерываний, поступивших по каждому из них и драйверы, обслуживающие эти IRQ.

iomem - Карта памяти.

ioports - Карта портов ввода-вывода.

kcore - Полный дамп памяти. Не пытайтесь копировать это файл, это может подвесить вашу систему. Используется в целях отладки.

kmsg - Сообщения, переданные ядром, не может и не должен читаться пользователями, поскольку содержит жизненно важную информацию. В основном используется в отладочных целях.

ksyms - Таблица символов ядра, которая используется, в основном, для отладки.

loadavg - Содержит величину средней нагрузки за последние 1, 5 и 15 минут.

meminfo - Информация об использовании памяти.

modules - Информация о всех загруженных модулях ядра.

mounts - Ссылка на другой файл в файловой системе /proc, который содержит информацию обо всех смонтированных файловых системах.

partitions - Информация обо всех разделах на всех устройствах в системе.

pci - Информация обо всех PCI устройствах в системе, включая AGP и встроенные устройства, подключенные к шине PCI.

swaps - Информация о всех смонтированных swap-разделах.

uptime - uptime системы -- время в секундах, прошедшее с момента последней перезагрузки.

version - Версия ядра, включая дату сборки и версию компилятора.

Список основных каталогов:

bus - Информация обо всех аппаратных шинах, таких как USB, PCI и ISA.

ide - Информация обо всех шинах IDE в системе и IDE-устройствах.

net - Некоторая базовая информация и статистика сетевой подсистемы.

scsi - Информация о SCSI шинах в системе и SCSI-устройствах.

sys - Набор переменных, которые могут быть изменены. Сюда входит раздел /proc/sys/net/ipv4, который будет обсуждаться ниже.

Как видите -- в файловой системе /proc имеются, буквально, сотни файлов, содержащих важную информацию. Мы не рассмотрели и половины от их общего количества. Как я уже упоминал -- мы будем расматривать только раздел настроек и переменных ipv4, доступных через интерфейс sysctl.


Виртуальные файловые системы


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

Виртуальная файловая система может иметь различные предназначения. Она может использоваться как простой RAM-диск, куда могут помещаться файлы на временное хранение. На бездисковых станциях Amiga она используется при копировании файлов с дискеты на дискету. Сначала файл(ы) копируется в память, затем в дисковод вставляется другая дискета и файл(ы) копируется на нее. Однако, эти файлы пропадут как только компьютер будет выключен или перезагружен.