11 Виртуальные файловые системы proc, sys, dev Ус
11 Виртуальные файловые системы /proc, /sys, /dev. Устройства и работа с ext*¶
Виртуальные файловые системы¶
В Linux, виртуальные файловые системы /proc, /sys, и /dev играют важную роль в взаимодействии с ядром и аппаратным обеспечением. Они представляют собой интерфейсы для доступа к информации о системе и управления ею.
На приведенной ниже диаграмме показано, как userspace обращается к различным типам файловых систем, обычно монтируемых в системах Linux. Не показаны такие конструкции как pipes, dmesg и POSIX clocks, которые также реализуют структуру file_operations, доступ к которым проходит через слой VFS. VFS — это «слой оболочки» между системными вызовами и реализациями определенных file_operations, таких как ext4 и procfs. Функции file_operations могут взаимодействовать либо с драйверами устройств, либо с устройствами доступа к памяти. tmpfs, devtmpfs и cgroups не используют file_operations, а напрямую обращаются к памяти. Существование VFS обеспечивает возможность переиспользовать код, так как основные методы, связанные с файловыми системами, не должны быть повторно реализованы каждым типом файловой системы. Переиспользование кода – широкоприменяемая практика программных инженеров! Однако, если повторно используемый код содержит серьезные ошибки, от них страдают все реализации, которые наследуют общие методы.
/proc
Это виртуальная файловая система, которая предоставляет доступ к информации о процессах и общей системной информации. Она не занимает места на диске, так как является интерфейсом к структурам данных в памяти ядра. В /proc можно найти каталоги, именованные числами, которые соответствуют идентификаторам процессов (PID). Внутри этих каталогов содержится информация о каждом процессе. Также здесь есть файлы, такие как /proc/cpuinfo, /proc/meminfo и /proc/net, которые предоставляют информацию о CPU, памяти и сетевых интерфейсах соответственно.
/sys
Виртуальная файловая система sysfs используется для предоставления информации о устройствах и драйверах, а также для их настройки .Она представляет собой иерархическое представление устройств, которые ядро распознает и управляет, и позволяет пользователю читать и иногда записывать атрибуты устройств для изменения их поведения. Например, /sys/class/net содержит информацию о сетевых интерфейсах.
/dev
Файловая система /dev содержит специальные файлы устройств, которые представляют аппаратные устройства. Существуют два основных типа файлов устройств: символьные (char devices) и блочные (block devices). Символьные устройства передают данные посимвольно, в то время как блочные устройства передают данные блоками .Примеры устройств в /dev включают /dev/sda (первый жесткий диск), /dev/tty (терминалы), /dev/random и /dev/null.
Файловые системы ext¶
Файловые системы серии ext (от ext2 до ext4) являются одними из основных файловых систем, используемых в операционных системах на базе Linux. Они разработаны для хранения, управления и доступа к данным на жестком диске. Давайте рассмотрим каждую из них более подробно, чтобы понять их устройство и особенности работы.
*Ext2 (Second Extended Filesystem)*¶
Ext2 была представлена в 1993 году как замена для оригинальной файловой системы ext. Она внесла значительные улучшения в производительность и надежность.
Основные характеристики:
- Нежурналированная файловая система: Ext2 не использует журналирование, что делает ее быстрее в некоторых сценариях, но менее надежной при сбоях питания или системных сбоях.
- Структура: Файловая система использует блоки для хранения данных и inode для хранения метаданных о файлах. Каждый файл или каталог связан с inode, который хранит информацию о размере файла, правах доступа, времени модификации и местоположении данных на диске.
- Использование: Ext2 часто используется на флеш-накопителях и в других ситуациях, где журналирование может привести к избыточному износу носителя.
*Ext3 (Third Extended Filesystem)*¶
Ext3 была представлена в конце 1990-х годов и стала первой файловой системой ext, поддерживающей журналирование.
Основные характеристики:
- Журналирование: Ext3 добавляет поддержку журналирования, что значительно улучшает надежность и уменьшает время восстановления после сбоев. Журналирование записывает изменения в специальный журнал на диске перед тем, как они будут применены к файловой системе, что позволяет быстро восстановиться после сбоев.
- Обратная совместимость: Ext3 обратно совместима с Ext2, что позволяет монтировать файловые системы Ext2 как Ext3 без потери данных.
- Режимы журналирования: Ext3 поддерживает три режима журналирования: журналирование всех метаданных и данных (journal), только метаданных (ordered) и журналирование метаданных с игнорированием данных (writeback).
*Ext4 (Fourth Extended Filesystem)*¶
Ext4 была представлена в 2008 году как развитие Ext3, предлагая улучшенную производительность, масштабируемость и надежность.
Основные характеристики:
- Улучшенная масштабируемость и производительность: Ext4 поддерживает большие объемы (до 1 эксабайта) и размеры файлов (до 16 терабайт), а также использует улучшенные алгоритмы распределения блоков.
- Журналирование с отложенной записью: Ext4 использует механизмы отложенной записи, что улучшает производительность и уменьшает износ SSD.Фрагментация: Ext4 вводит механизмы для борьбы с фрагментацией файлов, улучшая производительность при работе с большими файлами.
- Поддержка журналирования: Как и Ext3, Ext4 поддерживает различные режимы журналирования, но с улучшенной эффективностью и надежностью.
Работа с файловыми системами Ext* в Linux:
- Создание:
mkfs.ext4 /dev/sdXдля форматирования раздела в Ext4. - Проверка:
fsck.ext4 /dev/sdXпроверяет и исправляет ошибки файловой системы. - Монтирование:
mount /dev/sdX /mntпозволяет монтировать файловую систему для доступа к ее содержимому. - Работа с файлами и каталогами осуществляется через стандартные команды Linux, такие как
ls,cp,mv,rm.
Каждая версия файловой системы ext вносит улучшения в производительность, надежность и функциональность, делая их подходящим выбором для широкого спектра сценариев использования.

