Все является файлом в Linux
Различные вещи в Linux, такие как документы, каталоги (называемые папками в Mac OS X и Windows), клавиатуры, мониторы, жесткие диски, съемные носители, принтеры, модемы, виртуальные терминалы и межпроцессное взаимодействие Ресурсы ввода-вывода, такие как (IPC) и сетевое взаимодействие — это потоки байтов, определенные в пространстве файловой системы.
Все можно просмотреть в виде файла, и наиболее значительным преимуществом является то, что для перечисленных выше ресурсов ввода-вывода требуется только тот же набор инструментов, утилит и API-интерфейсов Linux. Вы можете использовать тот же набор API (чтение, запись) и инструментов (cat, перенаправление, каналы) для обработки большинства ресурсов в Unix.
Конечная цель проектирования системы часто состоит в том, чтобы найти атомарные операции.Как только атомарные операции заблокированы, работа по проектированию становится простой и упорядоченной. «Файл» как абстрактное понятие, его атомарная операция очень проста, только чтение и запись, что, несомненно, является очень хорошей моделью. Благодаря этой модели дизайн API может быть упрощен, пользователи могут получить доступ к любому ресурсу обычным способом и иметь свое собственное соответствующее промежуточное программное обеспечение для адаптации к нижнему уровню.
Современные операционные системы вводят файлы для решения проблемы, заключающейся в том, что информация может храниться в течение длительного времени независимо от процессов.Как логическая единица информации о создании процесса, файлы могут использоваться одновременно несколькими процессами. В системах UNIX операционная система разработала набор общих API-интерфейсов для операций ввода-вывода, таких как текст и изображения на диске, устройства ввода, такие как мышь и клавиатура, и сетевое взаимодействие, чтобы их можно было обрабатывать унифицированным способом с использованием байтовые потоки. Другими словами, все, кроме процесса в системе UNIX, является файлом, и Linux поддерживает эту функцию. Для облегчения управления файлами в Linux также представлена концепция каталогов (иногда называемых папками). Каталог позволяет классифицировать файлы и управлять ими, а введение каталога превращает файловую систему Linux в иерархическое дерево каталогов.
В системе Linux все является файлом, поэтому понимание файловой системы является необходимым условием для изучения Linux.
Файловая система в Linux, как правило, EXT2 или EXT3, но в этой статье я не буду говорить о них напрямую, но я надеюсь объединить операционную систему Linux и начать с жесткого диска, основы файловой системы, и узнать о Linux шаг за шагом Файловая система.
1. Физический механизм хранения механического жесткого диска
- Большая часть возможностей хранения файлов современных компьютеров обеспечивается такими устройствами, как механические жесткие диски. (Текущие SSD и флэш-память частично унаследованы от механических жестких дисков по концепции и логике, поэтому использование механических жестких дисков для понимания не является проблемой)
- Функция механического жесткого диска для реализации хранения информации основана на том, что магнитный носитель данных может быть намагничен, и после намагничивания он будет сохранять намагниченное состояние в течение длительного времени.Это намагниченное состояние может быть считано, и это намагниченное состояние может быть постоянно изменяться Намагниченность имеет ровно два направления, поэтому 0 и 1 могут быть представлены.
Следовательно, жесткий диск должен превратить этот магнитный носитель информации в пластины, и каждая пластина распределена с огромным количеством магнитных запоминающих устройств, а магнитная головка чтения-записи используется для записи и чтения пластины (в принципе, это аналогично черному воспроизведению виниловых пластинок).- На жестком диске сотни миллионов магнитных единиц хранения (около 8 миллиардов на жестком диске 1T), поэтому необходим набор правил для планирования доступа к информации (например, книга, в которой хранится информация, также будет разделена на части). на страницы, каждая страница читается сверху вниз и слева направо вместе с оглавлением главы)
Итак, существуют следующие физические и логические понятия:
- Жесткий диск состоит из нескольких пластин, и разные пластины пронумерованы.
- Частицы хранения на каждой пластине расположены по кругу, и каждый круг называется дорожкой и имеет номер.
- Каждая дорожка имеет круг частиц хранения, каждая 512 * 8 (512 байт, 0,5 КБ) частиц хранения в виде сектора, сектор — это наименьшая физическая единица, хранящаяся на жестком диске.
- N секторов могут образовывать кластер, N зависит от различных файловых систем или конфигураций файловой системы, кластер — это наименьшая единица хранения в этой файловой системе.
- Одна и та же дорожка на всех дисках образует цилиндр, называемый цилиндром, который является наименьшей единицей системного раздела.
Когда магнитная головка читает и записывает файл, она сначала читает и записывает раздел, находит соответствующую дорожку и сектор по номеру инода (уникальный номер в области будет введен позже), а затем читает и записывает цилиндр за цилиндром. Система управления чтением и записью механического жесткого диска представляет собой поразительную инженерную точность (на диске сотни миллионов единиц хранения, ширина каждой дорожки меньше десятков нанометров, а скорость диска составляет десятки тысяч оборотов в секунду). минута) и логика чтения и записи одновременно.Также много деталей (например количество секторов не непрерывное), что очень интересно.Статьи можно искать самостоятельно для расширения чтения.
Наличие жесткого диска не означает, что Linux может немедленно использовать его для хранения, и его необходимо объединить в файловую систему Linux, прежде чем он сможет использоваться Linux.
2. Файловая система Linux
Linux управляет данными и аппаратными ресурсами компьютера в виде файлов, то есть все является файлом, что отражено в типах файлов Linux: обычные файлы, файлы каталогов (то есть папки), файлы устройств и файлы ссылок. , файлы каналов, файлы сокетов (интерфейсы для передачи данных) и т. д. Linux управляет этими различными файлами с помощью дерева каталогов.Так называемое дерево каталогов представляет собой файловую структуру с корневым каталогом (/) в качестве основного и ветвящейся файловой структурой вниз. В отличие от чистой ext2 и других файловых систем, я называю это файловой системой.Все является файлом, и метод управления ресурсами дерева каталогов файлов вместе составляют файловую систему Linux, так что операционная система Linux может легко использовать системные ресурсы.
Таким образом, файловая система охватывает гораздо меньше, чем файловая система.Файловая система Linux в основном реализует связанные с операционной системой вещи с файловым носителем: файловая система монтируется на операционной системе, и вся операционная система помещается в файл система. Однако в этой статье не так много связанного содержимого файловой системы, и в большинстве мест вместо файловой системы можно использовать файловую систему.
1. Типы файлов в Linux:
1.1. Обычный файл (-)
С точки зрения Linux типы файлов уровня приложения, такие как mp4, pdf и html, относятся к обычным файлам.
Пользователи Linux могут просматривать, изменять и удалять общие файлы в соответствии со своими правами доступа.
1.2. Файл каталога (d, файл каталога)
Файл каталога не прост для понимания пользователями, привыкшими к Windows, и каталог также является своего рода файлом.
Файлы каталогов содержат имена файлов в соответствующих каталогах и указатели на эти файлы. Открытие каталога фактически является открытием файла каталога. Пока у вас есть права доступа, вы можете свободно обращаться к файлам в этих каталогах (права на выполнение обычных файлов файлов каталогов) права доступа), но изменять их могут только процессы ядра.
Хотя его нельзя изменить, мы можем просмотреть содержимое файла каталога через vim
1.3 Символическая ссылка (l, символическая ссылка)
Этот тип файла похож на ярлык в Windows, это косвенный указатель на другой файл, который мы часто называем программной ссылкой.
1.4 Файлы блочных устройств (b, block) и файлы символьных устройств (c, char)
Эти файлы обычно скрыты в каталоге /dev и используются для чтения устройств и взаимодействия с периферийными устройствами.
Например, дисковод — это файл блочного устройства, а последовательное устройство — файл символьного устройства.
Все без исключения устройства в системе являются либо файлами блочных устройств, либо файлами символьных устройств.
1.5 FIFO (p, труба)
Файлы каналов в основном используются для межпроцессного взаимодействия. Например, с помощью команды mkfifo вы можете создать файл FIFO, разрешить процессу A читать данные из файла FIFO и запустить процесс B для записи данных в FIFO в порядке поступления и чтения по мере записи.
1.6 розетка(и, розетка)
Он используется для сетевого взаимодействия между процессами, а также может использоваться для несетевого взаимодействия между локальными машинами.
Эти файлы обычно скрыты в каталоге /var/run, что доказывает существование соответствующего процесса.
Файлы Linux не имеют так называемого расширения. Возможность выполнения файла Linux зависит от его атрибута исполняемого файла. Если в вашем разрешении присутствует x, например [-rwx-r-xr-x], этот файл может быть выполнен независимо от имени файла. Расширение файла, которое может выполняться под Windows, обычно .com .exe .bat и так далее.
Однако быть исполняемым — это не то же самое, что иметь возможность успешно выполняться. Например, файл install.log в корневом основном каталоге представляет собой текстовый файл. Можно ли успешно запустить этот файл после изменения разрешения на -rwxrwxrwx? Конечно нет, потому что в его содержимом вообще нет исполняемых данных. Таким образом, этот x означает, что файл может быть исполняемым, но может ли он быть выполнен успешно или нет, зависит от содержимого файла.
Тем не менее, мы все еще надеемся узнать, что это за файл, по расширению, поэтому обычно мы будем использовать соответствующее расширение, чтобы указать, что это за файл.
Таким образом, имя файла в системе Linux на самом деле просто позволяет вам узнать о возможном использовании файла, а фактическое выполнение по-прежнему требует указания разрешений. Например, если обычная команда /bin/ls, отображающая атрибуты файла, изменена, чтобы сделать ее невыполнимой, то ls станет невыполнимой. Эта проблема чаще всего возникает во время передачи файлов. Например, если вы загружаете исполняемый файл из Интернета, но он не может быть запущен в вашей системе Linux, возможно, атрибуты файла были изменены. И из сети в вашу систему Linux разрешения атрибутов файла действительно будут изменены.
2. Дерево каталогов Linux
Для систем и пользователей Linux все рабочие ресурсы компьютера существуют в логической структуре дерева каталогов, и доступ к ресурсам компьютера можно рассматривать как доступ к дереву каталогов. Что касается жесткого диска, то любой доступ к жесткому диску становится доступом к определенному узлу в дереве каталогов, то есть к папке, при доступе не обязательно знать, жесткий это диск или папку на жестком диске.
Логическая структура дерева каталогов также очень проста, то есть начиная с корневого каталога (/) и расширяя подкаталоги на всех уровнях вниз.
3. Раздел жесткого диска
Разбиение жесткого диска — это первый шаг в объединении жесткого диска в файловую систему, суть которого заключается в преобразовании физического понятия «жесткий диск» в логическое понятие «область» для подготовки к следующему шагу форматирования.
Так что само деление не обязательно, в качестве зоны можно использовать целый жёсткий диск. Однако с точки зрения безопасности данных и производительности системы у разделов много применений, поэтому жесткие диски обычно разбиты на разделы.
Говоря о разделах, мы должны упомянуть самый важный первый сектор на каждом жестком диске.Этот сектор содержит основную загрузочную запись жесткого диска (MBR) и таблицу разделов (таблицу разделов), из которых MBR занимает 446 байт, а таблица разделов занимает 64 байта. Основная загрузочная запись жесткого диска содержит самый простой загрузчик, который является ключевым звеном при запуске системы и более подробно описан в приложении. Таблица разделов связана с разделом, в нее записывается соответствующая информация о разделе жесткого диска, но поскольку таблица разделов имеет размер всего 64 байта, она может записывать не более четырех разделов (сам раздел на самом деле является настройкой таблицы разделов) .
Слишком мало, чтобы иметь только четыре раздела, поэтому существует концепция расширенных разделов.Поскольку таблица разделов, в которой расположен первый сектор, может записывать только четыре фрагмента данных, могу ли я использовать дополнительные сектора для записи большего количества информации о разделах.
Обычный доступный раздел называется основным разделом.В отличие от основного раздела, расширенный раздел не имеет содержимого сам по себе, но предоставляет пространство для дополнительных логических разделов. После того, как раздел обозначен как расширенный раздел, расширенный раздел может быть дополнительно разделен на несколько логических разделов. Правила операционной системы:
- Каждый из четырех разделов может быть основным или расширенным.
- Может быть не более одного расширенного раздела (и не обязательно иметь более одного)
- Расширенные разделы могут быть дополнительно разделены на несколько логических разделов.
- Расширенный раздел является только логическим понятием и не может быть доступен сам по себе, то есть он не может быть отформатирован как раздел для доступа к данным.Единственными разделами, к которым можно получить доступ как к данным, являются основной раздел и логический раздел.
- Количество логических разделов зависит от операционной системы.В системах Linux жесткие диски IDE имеют максимум 59 логических разделов (от № 5 до 63), а жесткие диски SATA имеют 11 логических разделов (от № 5 до № 15).
Как правило, при разбиении жесткого диска расширенный раздел лучше всего разделить на N логических разделов, один основной раздел и один дополнительный раздел.
Можно ли не иметь основного раздела? Я не знаю, но это, кажется, не имеет значения.Когда вы создаете раздел, он автоматически выдает вам тип конфигурации.
В частности, лучше выделить область подкачки (пространство подмены памяти), которая является своего рода, ее функция такова: когда данные хранятся в физической памяти, но эти данные не часто используются ЦП, то эти Программы те, которые не часто используются, будут выброшены в пространство подкачки жесткого диска, а более быстрое пространство физической памяти будет освобождено для программ, которые действительно в нем нуждаются.
4. Форматирование
Мы знаем, что операционная система Linux поддерживает множество различных файловых систем, таких как ext2, ext3, XFS, FAT и т. д., а Linux предоставляет доступ к различным файловым системам для VFS (Virtual File System), которая может получать доступ к различным файлам и управлять ими. система. Таким образом, после создания зоны ее необходимо отформатировать в определенную файловую систему для доступа к VFS.
Стандартная файловая система Linux Ext2 использует «файловую систему на основе inode».
Мы знаем, что в дополнение к фактическому содержимому файла данные файла общей операционной системы также имеют множество атрибутов, таких как права доступа к файлу (rwx) и атрибуты файла (владелец, группа, параметры времени и т. д.) операционной системы Linux. Две части данных, атрибут и фактическое содержимое, хранятся в разных блоках.
В файловой системе на основе инодов разрешения и атрибуты размещаются в иноде, фактические данные помещаются в блок данных, и инод, и блок данных нумеруются.
Файловая система Ext2 основана на этом
Перед файловой системой находится загрузочный сектор.
Этот загрузочный сектор может установить программу управления загрузкой.Этот дизайн позволяет нам устанавливать различные загрузчики в начало отдельных файловых систем без перезаписи уникальной MBR всего жесткого диска, что позволяет реализовать функцию мультизагрузки.
Каждая область далее делится на несколько групп блоков, и каждая группа блоков имеет независимую систему inode/block.
Если размер файловой системы достигает сотен ГБ, объединением всех индексных дескрипторов и блоков будет сложно управлять, поскольку количество индексных дескрипторов и блоков слишком велико.
Это на самом деле легко понять, т.к. раздел является разделом пользователя, а собственно управление компьютером имеет наиболее подходящий размер, поэтому компьютер далее разделит раздел на блоки
(Но не может ли быть проблема, что большие файлы не могут быть размещены? Есть ли какой-то механизм, чтобы справиться с последствиями?)
Каждая группа блоков будет фактически разделена на части 6. Помимо таблицы инодов и блока данных, есть 4 вспомогательных модуля, играющих роль оптимизации и повышения производительности системы.
Таким образом, весь раздел, вероятно, будет разделен следующим образом:
1. inode table
В основном он записывает атрибуты файла и блоки, в которые помещаются фактические данные файла. Он записывает как минимум следующую информацию:
размер, количество блоков фактического контента
Режим доступа (чтение/запись/выполнение)
владелец/группа
Разное время: время установления или изменения состояния, время последнего чтения, время последней модификации
Нет имени файла! Имя файла находится в блоке каталога!
Файл занимает один индекс, и каждый индекс имеет номер
В системе Linux существует ситуация, когда номер инода израсходован, но на диске еще осталось место.
Обратите внимание, что файлы здесь не просто обычные файлы, файл каталога, то есть папка, на самом деле является файлом, а есть и другие.
Количество и размер инодов фиксируются при форматировании, размер каждого инода фиксируется на 128 байт (новые ext4 и xfs могут быть установлены на 256 байт)
Количество файлов, которые может создать файловая система, связано с количеством инодов.Бывают случаи, когда места достаточно, но мало инодов.
Когда система читает файл, она должна сначала найти индексный дескриптор и проанализировать, соответствуют ли разрешения, записанные индексным дескриптором, разрешениям пользователя.
Инод должен записывать много данных, но он всего 128 байт, а для записи номера блока в иноде требуется 4 байта.Предположим, у меня есть файл размером 400 МБ и каждый блок 4 КБ, тогда как минимум 100 000 записей номеров блоков требуются. ! Как у inode может быть так много места для хранения? По этой причине наша система очень умна, чтобы определить область номера блока записи inode как 12 прямых, одну косвенную, одну двойную косвенную и одну тройную косвенную область записи (подробности см. в приложении).
2. data block
Где размещать данные о содержимом файла
Размер блока фиксируется при форматировании, и каждый блок имеет номер для облегчения записи инодов.
В принципе, размер и количество блоков нельзя изменить после форматирования (разве что переформатировать)
Размер блока, поддерживаемый в файловой системе Ext2, составляет 1 КБ, 2 КБ и 4 КБ.Из-за разницы в размере блока максимальный размер диска, который может поддерживать файловая система, отличается от максимального размера отдельного файла:
Размер блока 1 КБ 2 КБ 4 КБ
Максимальное ограничение на один файл 16 ГБ 256 ГБ 2 ТБ
Максимальная общая емкость файловой системы 2 ТБ 8 ТБ 16 ТБ
В каждый блок можно поместить только один файл, но можно поместить один файл в несколько блоков (если он большой)
Если файл меньше блока, оставшаяся емкость блока больше не может быть использована (дисковое пространство будет потрачено впустую).
Поэтому, если ваши файлы очень маленькие, но ваш блок отформатирован с самым большим размером 4K, это может привести к пустой трате емкости.
Поскольку большой блок может привести к серьезной трате места на диске, следует ли установить размер блока равным 1 КБ? Это также неуместно, потому что, если размер блока мал, большие файлы будут занимать больше блоков, а индексный дескриптор также будет записывать больше номеров блоков, что может привести к снижению производительности чтения и записи файловой системы.
На самом деле текущая емкость диска слишком велика, поэтому обычно выбирается размер блока 4K.
3. superblock
Место, где записывается соответствующая информация всей файловой системы, общий размер составляет 1024 байта, и записанная информация в основном включает:
Общее количество блоков и инодов
Количество неиспользуемых и использованных инодов/блоков
Допустимое значение бита.Если файловая система смонтирована, допустимый бит равен 0. Если она не смонтирована, допустимый бит равен 1.
Размер блока и индекса (блок 1, 2, 4К, индекс 128 байт или 256 байт);
Различная другая информация, связанная с файловой системой: время монтирования файловой системы, время последней записи, время последней проверки диска (fsck).
Суперблок очень важен, без суперблока нет файловой системы, поэтому, если суперблок умрет, вашей файловой системе может потребоваться много времени для сохранения.
Каждый блок может содержать суперблок, но мы также говорим, что файловая система должна иметь только один суперблок, в чем дело? Фактически, за исключением того, что первый блок содержит суперблоки, последующие блоки не обязательно содержат суперблоки.Если суперблоки содержатся, суперблок в основном используется в качестве резервной копии суперблока в первом блоке, чтобы суперблок можно было спасти.
4. Filesystem Description
описание файловой системы
В этом разделе могут быть описаны начальный и конечный номера блоков каждой группы блоков, а также номера блоков, между которыми находится каждый раздел (суперблок, растровое изображение, инодемап, блок данных).
5. block bitmap
Таблица сравнения блоков
Какой блок следует использовать для записи, когда вы хотите добавить файлы? Конечно, выберите «пустой блок» для записи. Так как же узнать, какой блок пуст? Это должно пройти через растровое изображение блока, которое будет записывать, какие блоки пусты, поэтому наша система может быстро найти доступное пространство для записи.
Точно так же, когда вы удаляете некоторые файлы, номера блоков, изначально занятые этими файлами, должны быть освобождены.В это время бит флага, соответствующий номеру блока в растровом изображении блока, должен быть изменен на «неиспользуемый».
6. inode bitmap
Это аналогичная функция для битовой карты блоков, за исключением того, что битовая карта блоков записывает используемые и неиспользуемые номера блоков, а битовая карта инодов записывает используемые и неиспользуемые номера инодов.
5. Крепление
После того, как область отформатирована как файловая система, она может использоваться операционной системой Linux, но операционная система Linux не может найти ее в это время, поэтому нам также необходимо «зарегистрировать» файловую систему в операционной системе Linux. в файловой системе эта операция называется "монтирование".
Монтирование заключается в использовании каталога в качестве точки входа (аналогично выбору готового каталога в качестве прокси), и размещении файловой системы в этом каталоге, то есть вы можете прочитать содержимое файловой системы, войдя в каталог, аналогична всей файловой системе.Просто папка (каталог) дерева каталогов.
Каталог этой точки входа называется «точкой монтирования».
Поскольку наиболее важной частью всей системы Linux является корневой каталог, корневой каталог должен быть смонтирован в определенный раздел. И другие каталоги могут быть смонтированы в разных точках в соответствии с собственными потребностями пользователя.
На данный момент процесс построения файловой системы Linux в основном завершен.Подводя итог, жесткий диск разбит на разделы и отформатирован, и каждая область становится файловой системой.После монтирования этой файловой системы операционная система Linux может пройти VFS Доступ к жесткому диску аналогичен доступу к обычной папке. Вот подробное описание файлов каталогов и обычных файлов на реальном примере чтения файлов в дереве каталогов.
6. Процесс чтения дерева каталогов
Сначала нам нужно знать
- Каждый файл (будь то общий файл или файл каталога) занимает индексный дескриптор.
- Выделить один или несколько блоков для файла в зависимости от размера содержимого файла.
- После создания файла полная информация о файле распределяется по 3 местам и создаются 2 новых файла:
3.1 Имя файла записывается в блок файла каталога в каталоге, где находится файл, и новый файл не создается.
3.2 Атрибуты файла, информация о разрешениях и номер блока, в котором записано конкретное содержимое, записываются в индексный дескриптор, а индексный дескриптор — это вновь созданный файл.
3.3 Конкретная память файла записывается в блоке, а блок представляет собой вновь созданный файл - Поскольку имя файла записывается в блоке каталога, «добавить/удалить/переименовать имя файла» связано с разрешением w каталога.
Поэтому в Linux/Unix имя файла является только атрибутом файла, независимо от того, называется ли оно псевдонимом или псевдонимом, оно предназначено только для удобства запоминания и использования пользователями, но системе не нужно использовать имя файла в качестве местоположения файла.Интуитивное преимущество заключается в том, что вы можете переименовать используемый файл, изменить каталог или даже поместить его в корзину, не влияя на использование текущего файла, что невообразимо в Windows. Например, если вы откроете файл Word, а затем переименуете его, Windows скажет вам, что дверей нет, сначала закройте файл! Но в Mac нет давления, потому что операционная система Mac также использует дизайн inode.
процесс создания файла
При создании обычного файла в ext2 ext2 выделяет индексный дескриптор и количество блоков относительно размера файла для файла.
- Например: предположим, что мой блок равен 4 Кбайт, и я хочу создать файл размером 100 Кбайт, тогда Linux выделит индексный дескриптор и 25 блоков для хранения файла.
- Но при этом учтите, что так как прямых точек на inode всего 12, то есть еще один блок для записи номера блока.
Создать процесс каталога
Когда каталог создается в файловой системе ext2 (то есть создается новый файл каталога), файловая система выделяет индексный дескриптор и по крайней мере один блок для каталога.
- Инод записывает соответствующие разрешения и атрибуты каталога, а также записывает присвоенный ему номер блока.
- Блок — это имя файла, записанное в этом каталоге, и номер инода, соответствующий файлу.
- В блоке также будут автоматически сгенерированы две записи, одна — запись .folder, индекс указывает на себя, а другая — запись ..folder, индекс указывает на родительскую папку.
Чтение файла из дерева каталогов
- Поскольку имя файла записывается в блоке каталога, когда мы хотим прочитать файл, мы должны пройти через индексный дескриптор и блок каталога, а затем мы можем найти номер индексного дескриптора файла, который нужно прочитать, и, наконец, прочитай.Информация в блоке правильного файла.
- Поскольку дерево каталогов начинается с корневого каталога, операционная система сначала находит номер инода точки монтирования через информацию о монтировании, тем самым получая содержимое инода корневого каталога, и считывает информацию о блоке корневого каталога в соответствии с инодом. , а затем по одному слою за раз, чтобы прочитать правильный файл.
Например, если я хочу прочитать файл /etc/passwd, как система его прочитает?
Давайте сначала посмотрим на этот файл и информацию о папке пути:
1$ ll -di / /etc /etc/passwd
2 128 dr-xr-x r-x . 17 root root 4096 May 4 17:56 /
333595521 drwxr-x r-x . 131 root root 8192 Jun 17 00:20 /etc
436628004 -rw-r-- r-- . 1 root root 2092 Jun 17 00:20 /etc/passwd
Итак, процесс чтения файла:
- /инод:
Найдите индекс корневого каталога с номером индекса 128 через информацию о точке монтирования, а разрешения, указанные индексом, позволяют нам читать содержимое блока (с r и x) - /блокировать:
Получите номер блока после предыдущего шага и найдите номер инода (33595521), который содержит каталог etc/ - и т.д./ иноды:
Прочтите номер инода 33595521 и знайте, что он имеет разрешения r и x, поэтому он может читать содержимое блока etc/ - и т. д. / блок:
Получите номер блока после предыдущего шага и найдите номер инода файла passwd в содержимом (36628004). - Инод пароля:
Прочитайте индексный дескриптор № 36628004 и знайте, что он имеет разрешение r, поэтому он может прочитать содержимое блока passwd. - блок пароля:
Наконец, прочитайте информацию о содержимом блока
Время от времени выпадал свободный день и я читал статьи, связанные с файловой системой Linux. Наткнулся на статью. Прочитав полный текст, я был ошеломлен. Я вздохнул, что автор исходной статьи досконально разбирался в Linux. .
Думаете, эта статья была вам полезна? пожалуйста, поделитесь с большим количеством людей
Обратите внимание на «Безграничное программирование» и улучшите свои навыки принуждения.