Linux - статьи

         

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


В данном разделе я буду использовать терми "файловая система" в двух разных смыслах. Есть файловые системы на разделах дисков и других устройствах, и есть файловая система как она представлена для вас работающей системой Linux. Под Linux вы монтируете дисковые файловые системы в системную файловую систему.

В предыдущем разделе я упомянул, что скрипты загрузки проверяют и монтируют файловые системы. Эти действия выполняются соответственно командами fsck и mount.

Жесткий диск - это просто большое пространство, на котором можно записывать единицы и нули. Файловая система предлагает метод структурирования информации на диске и представляет нам его в виде файлов, размещенных внутри директорий , размещенных внутри директорий, размещенных внутри директорий... Каждый файл представлен inode, который знает чей это файл, когда создан и где размещено его содержимое. Директории таже представляются inod'ами, которые знают где найти inod'ы файлов принадлежащих данной директории. Если система хочет прочитать /home/greg/bigboobs.jpeg, она во-первых должна отыскать inode для корневой директории / в суперблоке, затем найти inode для директории home в содержимом /, затем директорию greg в содержимом /home, затем inode для bigboobs.jpeg который скажет какие блоки диска следует прочитать.

Если мы добавляем некоторые данные в конец файла, может случиться так, что данные будут записаны на диск до того как содержание inode для этого файла успеет обновиться, или наоборот. Если питание компьютера будет отключено в этот момент, файловая система будет попорчена. Это тот случай, который должен быть определен командой fsck, она же предринимает попытку восстановления.

Команда mount берет файловую систему устройства и добавляет её в иерархию, которую вы привыкли наблюдать работая в системе. Обычно ядро монтирует корневую файловую систему в режиме "только для чтения". Команда mount перемонтирует её в режиме "чтение/запись" после того как она проверена fsck.

Система Linux поддерживает некоторые другие файловые системы: msdos, vfat, minix и т.п. Специфические детали этих систем скрыты путем использования абстракции виртуальной файловой системы (VFS). Мне бы не хотелось вдаваться в детали. Обсуждение этой темы есть в ``The Linux Kernel''. (для ссылок см. раздел )

Существенно иной вид файловой системы смонтирован в /proc. Это некоторое представление объектов ядра. Здесь присутствуют директории для для каждого запущенного процесса, причем номер процесса используется в качестве имени директории. Присутствуют также такие файлы как interrupts и meminfo, которые могут сообщить информацию об используемом железе. Исследуя /proc, вы можете многому научиться.



Содержание раздела