Linux. Специальные файловые системы

15.10.2023

Теги: CLILinuxБлочноеУстройствоДиректорияФайлФайловаяСистема

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

Например, информацию о процессах и прочих сущностях ядра операционной системы и используемых ими ресурсах предоставляет псевдофайловая система 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 • Директория • Файл • Файловая система • Блочное устройство

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.