Linux. Специальные файловые системы
15.10.2023
Теги: CLI • Linux • БлочноеУстройство • Директория • Файл • ФайловаяСистема
Развитие идеи файла, как единицы обеспечения доступа к информации, привело к тому, что абстракцию файловой системы перенесли и на другие сущности, доступ к которым стал организовываться в виде иерархии файлов.
Например, информацию о процессах и прочих сущностях ядра операционной системы и используемых ими ресурсах предоставляет псевдофайловая система proc
, смонтированная в каталог /proc
.
Информацию об аппаратных устройствах, обнаруженных ядром операционной системы на шинах PCI, USB, SCSI предоставляет псевдофайловая система sysfs
, смонтированная в каталог /sys
.
Информацию о периферийных устройствах, обнаруженных при загрузке или при горячем подключении предоставляет псевдофайловая система udev
, смонтированная в каталог /dev
.
Специальная файловая система tmpfs
позволяет хранить данные в оперативной памяти (или файле подкачки).
$ sudo mount sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime) proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) udev on /dev type devtmpfs (rw,nosuid,relatime,size=1962320k,nr_inodes=490580,mode=755,inode64) tmpfs on /run type tmpfs (rw,nosuid,nodev,noexec,relatime,size=400172k,mode=755,inode64) /dev/sda3 on / type ext4 (rw,relatime,errors=remount-ro) ..........
Файловая система sysfs
Для начала посмотрим содержимое каталога /sys
, куда смонтирована файловая система sysfs
$ ls -la /sys итого 4 dr-xr-xr-x 13 root root 0 окт 15 13:02 . drwxr-xr-x 19 root root 4096 авг 5 11:52 .. drwxr-xr-x 2 root root 0 окт 15 13:02 block drwxr-xr-x 46 root root 0 окт 15 13:02 bus drwxr-xr-x 72 root root 0 окт 15 13:02 class drwxr-xr-x 4 root root 0 окт 15 13:02 dev drwxr-xr-x 16 root root 0 окт 15 13:02 devices drwxr-xr-x 5 root root 0 окт 15 13:02 firmware drwxr-xr-x 9 root root 0 окт 15 13:02 fs drwxr-xr-x 2 root root 0 окт 15 14:02 hypervisor drwxr-xr-x 16 root root 0 окт 15 13:02 kernel drwxr-xr-x 173 root root 0 окт 15 13:02 module drwxr-xr-x 3 root root 0 окт 15 13:03 power
Каждая директория в этой файловой системе представляет свою сущность — рассмотрим их подробнее
block
— интерфейсы работы с блочными устройствами, такими как диски. Отсюда можно узнать, какой планировщик I/O установлен для конкретного устройства, сколько разделов на диске, какой размер диска.bus
— шины системы, такие как PCI, SCSI, USB. Позволяют узнать информацию о подключенных устройствах, их адресах — как это делают утилитыlshw
,lspci
,lsscsi
,lsusb
.class
— разделяет устройства по их классу — блочные устройства, сетевые интерфейсы, bluetooth и даже подсветка экрана.devices
— определяет все физические устройства в их иерархии. Через этот каталог можно узнать физические показатели устройств (к примеру, температуру CPU). Или, к какой шине PCI подключено конкретное устройство.firmware
— позволяет как получать информацию, так и управлять устройствами на уровне их прошивок. К примеру, есть возможность получить информацию о дисковой системе ACPI либо BIOS.fs
— позволяет получить параметры каждой файловой системы с разделением по типам —ext4
,btrfs
,ecryptfs
.hypervisor
— должна содержать параметры работы гипервизора при его активации (если гипервизор реализует поддержку этого интерфейса).kernel
— содержит информацию о текущем работающем ядре и его подсистемах.module
— управление параметрами модулей ядра.power
— управление энергопотреблением системы.
Файловая система proc
Для начала посмотрим содержимое каталога /proc
, куда смонтирована файловая система proc
$ ls /proc 1 1060 1135 1174 1329 1451 20 2984 353 41 5 879 993 driver kpagecgroup schedstat version_signature 10 1065 1136 1191 1333 1453 204 3 354 416 529 884 997 dynamic_debug kpagecount scsi vmallocinfo 1005 1069 1137 12 1339 1454 205 30 36 42 535 885 acpi execdomains kpageflags self vmstat 1016 107 1140 1211 1343 1471 21 31 364 43 538 891 asound fb loadavg slabinfo zoneinfo 1018 1075 1141 1218 1372 15 22 32 367 437 54 892 bootconfig filesystems locks softirqs 102 108 1144 1219 1379 1564 23 326 37 44 55 894 buddyinfo fs mdstat stat 1027 1081 1146 1224 139 16 24 327 371 45 6 897 bus interrupts meminfo swaps 103 109 1149 1225 1393 1606 265 33 372 451 62 900 cgroups iomem misc sys 1034 1092 1150 1230 14 17 27 339 374 46 64 906 cmdline ioports modules sysrq-trigger 1035 1096 1158 1251 140 1731 28 34 38 468 65 907 consoles irq mounts sysvipc 1039 11 1160 1288 1414 176 29 341 382 47 69 913 cpuinfo kallsyms mtrr thread-self 104 1106 1161 13 1435 1777 2927 348 385 48 8 914 crypto kcore net timer_list 105 1113 1163 1310 1436 1838 293 35 39 484 832 926 devices keys pagetypeinfo tty 1053 1124 1165 1316 1440 19 2980 350 390 49 842 968 diskstats key-users partitions uptime 106 1126 1168 1323 1441 2 2982 352 4 490 846 979 dma kmsg pressure version
На самом деле, каталога /proc
не существует на диске или в оперативной памяти — все содержимое генерируется ядром на лету в момент запроса.
Директория, имя которых представляет собой число — содержит информацию о процессе, у которого PID равен имени директории. Внутри такой директории можно найти всю информацию о процессе.
Директория /proc/sys
предоставляет интерфейс для работы с параметром ядра. Для получения значения параметра ядра net.ipv4.ip_forward
— можно вывести содержимое файла /proc/sys/net/ipv4/ip_forward
, а для установки значения — выполнить команду echo 1 > /proc/sys/net/ipv4/ip_forward
.
Файловая система udev
Данная файловая система используется для маппинга устройств (к примеру, блочных и сетевых) в директорию /dev
для взаимодействия с ними. Для этого предназначена подсистема udev
, которая динамически создает новые файлы устройств при их подключении. В составе подсистемы есть служба systemd-udevd.service
и утилита командной строки udevadm
, главный файл конфигурации — /etc/udev/udev.conf
.
$ ls /dev autofs ecryptfs loop1 port shm tty15 tty29 tty42 tty56 ttyS10 ttyS24 udmabuf vcsa vga_arbiter block fb0 loop2 ppp snapshot tty16 tty3 tty43 tty57 ttyS11 ttyS25 uhid vcsa1 vhci bsg fd loop3 psaux snd tty17 tty30 tty44 tty58 ttyS12 ttyS26 uinput vcsa2 vhost-net btrfs-control full loop4 ptmx sr0 tty18 tty31 tty45 tty59 ttyS13 ttyS27 urandom vcsa3 vhost-vsock bus fuse loop5 pts stderr tty19 tty32 tty46 tty6 ttyS14 ttyS28 userfaultfd vcsa4 zero cdrom hidraw0 loop6 random stdin tty2 tty33 tty47 tty60 ttyS15 ttyS29 userio vcsa5 zfs char hpet loop7 rfkill stdout tty20 tty34 tty48 tty61 ttyS16 ttyS3 vboxguest vcsa6 console hugepages loop-control rtc tty tty21 tty35 tty49 tty62 ttyS17 ttyS30 vboxuser vcsu core hwrng mapper rtc0 tty0 tty22 tty36 tty5 tty63 ttyS18 ttyS31 vcs vcsu1 cpu i2c-0 mcelog sda tty1 tty23 tty37 tty50 tty7 ttyS19 ttyS4 vcs1 vcsu2 cpu_dma_latency initctl mem sda1 tty10 tty24 tty38 tty51 tty8 ttyS2 ttyS5 vcs2 vcsu3 cuse input mqueue sda2 tty11 tty25 tty39 tty52 tty9 ttyS20 ttyS6 vcs3 vcsu4 disk kmsg net sda3 tty12 tty26 tty4 tty53 ttyprintk ttyS21 ttyS7 vcs4 vcsu5 dma_heap log null sg0 tty13 tty27 tty40 tty54 ttyS0 ttyS22 ttyS8 vcs5 vcsu6 dri loop0 nvram sg1 tty14 tty28 tty41 tty55 ttyS1 ttyS23 ttyS9 vcs6 vfio
Файловая система tmpfs
Файловая система создаётся автоматически при монтировании файловой системы с типом tmpfs
с помощью следующей команды
$ sudo mount -t tmpfs -o size=10M tmpfs /mnt/memfs
Файловая система tmpfs
имеет следующие свойства
- Файловая система может использовать пространство подкачки, когда этого требует нагрузка на физическую память.
- Файловая система потребляет столько физической памяти и пространства подкачки, сколько требуется для хранения текущего содержимого.
- Во время операции повторного монтирования (
mount -o remount
) размер файловой системы может быть изменён без потери содержимого.
Если файловая система tmpfs
размонтирована, то её содержимое теряется (удаляется).
Поиск: CLI • Linux • Директория • Файл • Файловая система • Блочное устройство