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

Дисковые файловые системы, применяемые в Ubuntu

  • Ext4 — журналируемая файловая система, используемая в ОС на ядре Linux. Основана на файловой системе Ext3, но отличается тем, что в ней представлен механизм записи файлов в непрерывные участки блоков (екстенты), уменьшающий фрагментацию и повышающий производительность. В Ubuntu, начиная с версии 9.10, эта файловая система используется по умолчанию при автоматическом разбиении диска инсталлятором.
  • Ext3 — журналируемая файловая система, используемая в ОС на ядре Linux. Является файловой системой по умолчанию во многих дистрибутивах. Основана на Ext2, но отличается тем, что в ней есть журналирование, то есть в ней предусмотрена запись некоторых данных, позволяющих восстановить файловую систему при сбоях в работе компьютера.
  • Ext2 — файловая система, используемая в операционных системах на ядре Linux. Достаточно быстра для того, чтобы служить эталоном в тестах производительности файловых систем. Она не является журналируемой файловой системой и это её главный недостаток.
  • BTRFS — Достаточно новая универсальная ФС, используемая в операционных системах на ядре Linux. Ее особенностями являются: индексное хранение структур данных (в В-деревьях), возможность создания снепшотов, и многие другие интересные вещи.
  • XFS — высокопроизводительная журналируемая файловая система. Распределение дискового пространства — екстентами, храниение каталогов в B-деревьях. Автоматическая аллокация и высвобождение I-node. Дефрагментируется «на лету». Невозможно уменьшить размер существующей файловой системы. При сбое питания во время записи возможна потеря данных (хотя этот недостаток нельзя относить к одной только XFS, он свойственен любой журналируемой ФС, но, вместе с тем, XFS, по умолчанию, достаточно активно использует буферы в памяти).
  • Fat16 — файловая система, сейчас широко используемая в картах памяти фотоаппаратов и других устройств.
  • Fat32 — файловая система основанная на Fat16. Cоздана, чтобы преодолеть ограничения на размер тома в Fat16.
  • NTFS — файловая система для семейства операционных систем Microsoft Windows. Поддержка в Ubuntu осуществляется специальным драйвером — NTFS-3G.
  • HFS — файловая система, разработанная Apple Inc. для использования на компьютерах, работающих под управлением операционной системы Mac OS.
  • HSF+ — файловая система, разработанная Apple Inc. для замены HFS. Является улучшенной версией HFS, с поддержкой файлов большого размера и использует кодировку Unicode для имён файлов и папок.
  • JFS — журналируемая файловая система. В отличие от Ext3, в которую добавили поддержку журналирования, JFS изначально была журналируемой. На момент выхода в свет JFS была самой производительной из существовавших файловых систем. На текущий момент сохраняет за собой одно из лидирующих мест по этому показателю.
  • SWAP — раздел жёсткого диска, предназначенная для виртуальной памяти (файла/раздела подкачки).
  • ReiserFS — журналируемая файловая система, разработанная специально для Linux. Обычно под словом ReiserFS понимают третью версию (последняя — 3.6.21), а четвёртую называют Reiser4. В настоящий момент разработка Reiser3 прекращена.
  • Reiser4 — журналируемая файловая система ReiserFS (4-я версия), разработанная специально для Linux. Одна из самых быстрых файловых систем для Linux (с включённым плагином-архиватором — самая быстрая).
  • UFS — файловая система, созданная для операционных систем семейства BSD. Linux поддерживает UFS на уровне чтения, но не имеет полной поддержки для записи UFS. Родной Linux ext2 создан по подобию UFS.

О всех существующих файловых системах можно прочитать в этой статье.

Основные функции файловых систем

Файловая система отвечает за оптимальное логическое распределение информационных данных на конкретном физическом носителе. Драйвер ФС организует взаимодействие между хранилищем, операционной системой и прикладным программным обеспечением. Правильный выбор файловой системы для конкретных пользовательских задач влияет на скорость обработки данных, принципы распределения и другие функциональные возможности, необходимые для стабильной работы любых компьютерных систем. Иными словами, это совокупность условий и правил, определяющих способ организации файлов на носителях информации.

Основными функциями файловой системы являются:

  • размещение и упорядочивание на носителе данных в виде файлов;
  • определение максимально поддерживаемого объема данных на носителе информации;
  • создание, чтение и удаление файлов;
  • назначение и изменение атрибутов файлов (размер, время создания и изменения, владелец и создатель файла, доступен только для чтения, скрытый файл, временный файл, архивный, исполняемый, максимальная длина имени файла и т.п.);
  • определение структуры файла;
  • поиск файлов;
  • организация каталогов для логической организации файлов;
  • защита файлов при системном сбое;
  • защита файлов от несанкционированного доступа и изменения их содержимого. 

Немного о дисках и разделах

В отличие от Windows, в Linux-системах понятие «диск» некорректно, а сами «диски» напрямую пользователю недоступны. Надо понимать, что в Linux среди прочих объектов системы существует понятие «файл-устройство», которое подразумевает в том числе и устройства хранения — то, что в Windows называется «дисками». Процесс взаимодействия с устройствами хранения в Linux, образно выражаясь, «отображается» на разделы через соответствующие файлы устройств (ну и конечно драйверы). В свою очередь, структура разделов отображена на файловые системы, поскольку они монтируются непосредственно к разделам. Таким образом, оборудование скрыто от прямого воздействия пользователя — этим занимается системное ядро и драйверы, пользователь лишь работает с файловыми системами.

Файловая система в Linux – это корневой каталог, включающий в себя подкаталоги, которые могут быть отдельными файловыми системами, подключенными (смонтированными) к отдельным разделам (и даже на отдельных устройствах хранения). Таким образом, структура разделов на устройствах хранения представляется деревом файловой системы.

Советы по настройке разделов в Linux

Итак, для успешной установки нужно создать вышеприведённые разделы. Ключевым моментом для установки системы является назначение каждому из разделов соответствующих файловых систем путём установки точек монтирования. Это делается на одном из этапов установки Linux. Наименование точки монтирования идентично наименованию файловой системы, т. е. для корневого раздела это «/», для каталога «/usr» — «/usr», для домашнего каталога — «/home» и т. д.

Выбор формата для файловых систем зависит от используемой системы — здесь нужно придерживаться рекомендаций разработчиков, изучая соответствующие материалы и справочную литературу. Самой распространённой для Linux является система ext3 или ext4.

Раздел с домашними каталогами должен иметь самый большой объём. По крайней мере экономить пространство для этого раздела точно не следует

Следующей по величине файловой системой обычно является «/usr», неважно вынесена она в отдельный раздел или расположена на одном разделе с «/»

Рекомендуется также выносить в отдельные разделы системы «/opt» и «/var». А файловую систему «/home» вообще монтировать на отдельное устройство. Это даже обязательно при наличии возможности задействовать отдельный диск для пользовательских данных.

Не стоит всё подряд выносить на отдельные разделы, если в этом нет осознанной необходимости. Наличие большого количества разделов может внести путаницу и таким образом легко при переустановке что-нибудь не туда смонтировать или не то отформатировать.

Типичная структура ФС системы Linux

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

/
/bin
/boot
/dev
/etc
/home
/lib
/lib64
/lost+found
/media
/mnt
/opt
/proc
/root
/run
/sbin
/selinux
/srv
/sys
/tmp
/usr
/var

Итак, рассмотрим все по-порядку.

/bin — главные бинарные файлы (исполняемые программы)

Содержит основные модули, утилиты и командные оболочки, которые могут обеспечить необходимый минимально уровень работоспособности ОС. Размещение этих файлов в директории /bin гарантирует, что в системе эти важные утилиты будут даже в случае, если другие файловые системы не смонтированы.

/dev — файлы устройств

В Linux все устройства предоставлены в виде специфических файлов, расположеных в этой директории. К примеру, файл /dev/sda представляет диск SATA. Также в этой директории хранятся файлы псевдо-устройств (виртуальных), для этих файлов нет соответствующего реального устройства. Например, файл /dev/random генерирует случайные числа, а файл /dev/null является специальным устройством для удаления всех входных данных.

/home — домашние директории пользователей

По идеологии UNIX для обеспечения безопасности ОС рекомендуется хранить пользовательские данные именно в этой директории. Например, если ваше имя пользователя user, то у вас есть домашняя дирекотория, которая находится в /home/user и содержит пользовательские конфигурационные файлы и личную информацию. Каждый пользователь имеет доступ на запись только в свою домашнюю директорию.

/lib — основные библиотеки

Эта директория предназначена для хранения системных библиотек и компонентов компилятора языка С, необходимых для работы программ из директорий /bin и /sbin и операционной системы в целом.

/lib64 — 64-битные основные библиотеки

Эта директория присуствует в основном на 64-битных системах, содержит набор библиотек и компонентов компилятора языка С для 64-битных программ.

/lost+found — восстановленные файлы

Присуствует во всех ОС Linux. При сбое в работе файловой системы и дальнейшей проверке файловой системы (при загрузке ОС), все найденные поврежденные файлы будут помещены в директорию lost+found, их можно попытаться восстановить.

/mnt — точка для ручного монтирования

Используется для временного ручного монтирования (с помощю команды mount) различных устройств, таких как CD-ROM, USB-накопителей и т.д.

/opt — вспомогательные пакеты программ

Находятся субдиректории для дополнительных пакетов программного обеспечения. Каталог широко используется проприетарным программным обеспечением, которое не подчиняется стандартной иерархии файловых систем.

/proc – файлы ядра и процессов

В эту директорию примонтирована виртуальная файловая система procfs. В ней находятся специальные файлы, в которых представлена информация о системе и о выполняющихся процессах. Например, в файле /proc/cpuinfo собержиться информация о процессоре.

/run – файлы состояния приложений

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

/sbin — бинарные файлы (программы) для администрирования системы

Директория /sbin похожа на /bin. В ней находятся важные двоичные файлы, которые, как правило, предназначены для их запуска пользователем при администрировании системы.

/selinux – виртуальная файловая система SELinux

В некоторых дистрибутивах (Red Hat, Fedora и т.п) для обеспечения безопасности используется пакет SELinux (Security-Enhanced Linux), при этом создается директория с файлами /selinux.

/srv – данные сервисных служб

Эта директория присуствует не во всех дистрибутивах, содержит «данные для сервисов, предоставляемых системой» (например сервер Apache может хранить файлы вашего сайта в этой директории). В большинстве случаев директория пуста.

/sys — виртуальная файловая система sysfs

Эта директория появилась с выходом ядра версии 2.6 и в нее примонтирована виртуальная файловая система sysfs с информацией об устройствах, драйверах, ядре ОС и т.п.

/tmp — временные файлы

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

Как узнать файловую систему в ОС Linux?

Оказывается, что команда file сможет дать много информации не только об обычных файлах, но и о файлах механизмов (вспомните, что в Linux всё есть файл). Иногда случается необходимо узнать файловую систему раздела диска в Linux. Установить файловую систему для смонтированных разделов можно с поддержкою команды df с ключем -T. Если же раздел не смонтирован, то выручит команда file с ключем -s, как указано выше. Пример, чтобы определить, какая файловая система на разделе /dev/sda1, накопите в командной строке команду file с ключем -s. Как это постоянно бывает в системах типа Linux/UNIX, спрашиваемый результат можно получить множеством способов.

Разделы жесткого диска

Раздел — часть долговременной памяти жёсткого диска или флеш-накопителя, выделенная для удобства работы, и состоящая из смежных блоков. На одном устройстве хранения может быть несколько разделов.

Создание разделов на различных видах современных накопителей почти всегда предусмотрено (хотя, к примеру, на, ныне уже не используемых, флоппи-дисках было невозможно создать несколько разделов). Однако в Windows, с флешки с несколькими разделами будет доступен только первый из них (в Windows принято считать флешки аналогом флоппи-диска, а не жесткого диска).

Преимущества использования нескольких разделов

Выделение на одном жёстком диске нескольких разделов даёт следующие преимущества:

  • на одном физическом жёстком диске можно хранить информацию в разных файловых системах, или в одинаковых файловых системах, но с разным размером кластера (например, выгодно хранить файлы большого размера — например, видео — отдельно от маленьких, и задавать больший размер кластера для хранилища больших файлов);
  • можно отделить информацию пользователя от файлов операционной системы;
  • на одном жёстком диске можно установить несколько операционных систем;
  • манипуляции с одной файловой системой не сказываются на других файловых системах.

Структура диска, разбитого на разделы (MBR)

  • Информация о размещении разделов на жёстком диске хранится в таблице разделов, которая является частью главной загрузочной записи (MBR).
  • Раздел может быть либо первичным, либо расширенным.
  • В первом секторе каждого первичного раздела находится загрузочный сектор, отвечающий за загрузку операционной системы с этого раздела. Информация о том, какой раздел будет использован для загрузки операционной системы, тоже записана в главной загрузочной записи.
  • В MBR под таблицу разделов выделено 64 байта. Каждая запись занимает 16 байт. Таким образом, всего на жестком диске может быть создано не более 4 разделов. Когда разрабатывалась структура MBR, это считалось достаточным. Однако, позднее был введён расширенный раздел, в котором можно прописать несколько логических разделов.
  • По правилам расширенный раздел может быть только один. Таким образом, в максимальной конфигурации на жёстком диске может быть сформировано три первичных и один расширенный раздел, содержащий несколько логических.

Первичный (основной) раздел

Первичный раздел обязательно должен быть на физическом диске. Этот раздел всегда содержит либо одну файловую систему, либо другие логические разделы. На физическом диске может быть до четырёх первичных разделов.
Некоторые старые операционные системы — например, MS-DOS и Windows — могли быть установлены только на первичный раздел.

Расширенный и Логические разделы

Таблица разделов может содержать не более 4 первичных разделов, поэтому были изобретёны расширенный разделы. В расширенном разделе можно создать несколько логических разделов. Логические разделы выстраиваются в цепочку где информация о первом логическом разделе храниться в MBR, а информация о последующем хранится в первом секторе логического раздела. Такая цепочка позволяет (в теории) создавать неограниченное количество разделов, но (на практике) число логических разделов ограничивается утилитами и, обычно, больше 10 логических разделов не создать.

Важно отметить что некоторые версии Windows не могут загрузиться с логического раздела (нужен обязательно первичный раздел), тогда как для Linux никакой разницы в виде разделов — нет, Linux загружается и работает с разделами совершенно независимо от их вида (первичный или логический).

Регистр имен

Также стоит отметить чувствительность файловой системы Linux к регистру. Файлы Temp.txt и temp.txt будут интерпретироваться как разные файлы и могут находиться в одной директории, в отличие от ОС Windows, который не различает регистр имен. То же правило действует и на каталоги — имена в разных регистрах указывают на разные каталоги.

Назначение каждой директории регламентирует «Стандарт иерархии файловой системы» FHS (Filesystem Hierarchy Standard). Ниже опишем основные директории согласно стандарту FHS:


Стандарт иерархии файловой системы

  • / — root каталог. Содержит в себе всю иерархию системы;
  • /bin — здесь находятся двоичные исполняемые файлы. Основные общие команды, хранящиеся отдельно от других программ в системе (прим.: pwd, ls, cat, ps);
  • /boot — тут расположены файлы, используемые для загрузки системы (образ initrd, ядро vmlinuz);
  • /dev — в данной директории располагаются файлы устройств (драйверов). С помощью этих файлов можно взаимодействовать с устройствами. К примеру, если это жесткий диск, можно подключить его к файловой системе. В файл принтера же можно написать напрямую и отправить задание на печать;
  • /etc — в этой директории находятся файлы конфигураций программ. Эти файлы позволяют настраивать системы, сервисы, скрипты системных демонов;
  • /home — каталог, аналогичный каталогу Users в Windows. Содержит домашние каталоги учетных записей пользователей (кроме root). При создании нового пользователя здесь создается одноименный каталог с аналогичным именем и хранит личные файлы этого пользователя;
  • /lib — содержит системные библиотеки, с которыми работают программы и модули ядра;
  • /lost+found — содержит файлы, восстановленные после сбоя работы системы. Система проведет проверку после сбоя и найденные файлы можно будет посмотреть в данном каталоге;
  • /media — точка монтирования внешних носителей. Например, когда вы вставляете диск в дисковод, он будет автоматически смонтирован в директорию /media/cdrom;
  • /mnt — точка временного монтирования. Файловые системы подключаемых устройств обычно монтируются в этот каталог для временного использования;
  • /opt — тут расположены дополнительные (необязательные) приложения. Такие программы обычно не подчиняются принятой иерархии и хранят свои файлы в одном подкаталоге (бинарные, библиотеки, конфигурации);
  • /proc — содержит файлы, хранящие информацию о запущенных процессах и о состоянии ядра ОС;
  • /root — директория, которая содержит файлы и личные настройки суперпользователя;
  • /run — содержит файлы состояния приложений. Например, PID-файлы или UNIX-сокеты;
  • /sbin — аналогично /bin содержит бинарные файлы. Утилиты нужны для настройки и администрирования системы суперпользователем;
  • /srv — содержит файлы сервисов, предоставляемых сервером (прим. FTP или Apache HTTP);
  • /sys — содержит данные непосредственно о системе. Тут можно узнать информацию о ядре, драйверах и устройствах;
  • /tmp — содержит временные файлы. Данные файлы доступны всем пользователям на чтение и запись. Стоит отметить, что данный каталог очищается при перезагрузке;
  • /usr — содержит пользовательские приложения и утилиты второго уровня, используемые пользователями, а не системой. Содержимое доступно только для чтения (кроме root). Каталог имеет вторичную иерархию и похож на корневой;
  • /var — содержит переменные файлы. Имеет подкаталоги, отвечающие за отдельные переменные. Например, логи будут храниться в /var/log, кэш в /var/cache, очереди заданий в /var/spool/ и так далее.

Что такое файловая система?

Так же, современные ОС Linux совместимы с файловыми системами (ФС дальше), используемыми ОС Windows, такими как NTFS и FAT32, но применение данных ФС в Linux крайне не желательно по причине этого, что данные ФС разрабатывались под ОС Windows и поддержка Windows-разделов ядром Linux выполнена с помощью сторонних утилит/драйверов/модулей, что прикладывает некоторые ограничения (например, согласно проекту Linux-NTFS на сегментах с NTFS поддерживается практически только чтение (запись — только в существующие файлы без изменения их размера), так же ОС Linux не обладает возможности разграничивать права доступа к файлам на сегментах NTFS. Операционная система (ОС далее) Linux удерживает множество файловых систем, в настоящее время более широко используются: ext2, ext3,ext4, reiserfs. Данная ситуация со порой может поменяться.

В Linux объектами файловой системы представляются: процессы, устройства, структуры данных ядра и характеристики настройки, каналы межзадачного взаимодействия, папки, и, безусловно, обычные файлы. К недостаткам относится реализация файловой системы по способу Франкенштейна.
Файловая система состоит из четырех главных компонентов: Такое устройство файловой системы обладает как преимущества, так и недостатки. Файловая система — это единая иерархическая конструкция, которая начинается с каталога / и разветвляется, охватывая случайное число каталогов.
Несмотря на то, что основным назначением файловой системы представляется упорядочение хранимых ресурсов, программистам не очень желалось бы «изобретать велосипед» для управления объектами других типов. К превосходствам относится единый программный интерфейс, легкость доступа из интерпретатора бригад.

  • Пространство имен — методы именования объектов и компании в виде единой иерархии
  • API — набор системных призывов для перемещения между объектами и управления ими
  • Методы сохранности — схема защиты, сокрытия и совместного использования объектен
  • Реализация — программный код, который связывает логические модификации с дисковой подсистемой

В повседневной работе вы даже не станете замечать, какую именно файловую систему теперь используете. От файловой системы зависит очень значительное, скорость работы с файлами, скорость записи и простонар размер файлов. Простейшие команды, например ls или cp, управление преимуществами доступа и др. — все это работает независимо от файловой системы. Абсолютно всем этим занимается файловая система. Также от устойчивости файловой системы будет зависеть сохранность ваших файлов.
Файловые системы Linux приноровлены для установки Linux и работы с ней. Чтобы на каждом разделе возможно было работать с файлами и каталогами, необходима файловая система. Мы имели возможность бы писать просто содержимое файлов на диск, но необходимо еще где-то хранить данные о папках, имена файлов, их габарит, адрес на жестком диске, атрибуты доступа.

К данным признакам относятся: скорость обработки внушительных по габариту файлов или большого количества сравнительно небольших файлов, результативность выполнения операций считывания и записи, нагрузка, показываемая на процессор, функция журналирования (меры, предпринимаемые после авантюристичного прекращения работы системы), функции квотирования (вероятность ограничить максимальное потребление памяти на пользователя), сопоставимость с NFS, дополнительные затраты энергии на управление системой, помощь дополнительных прав доступа (ACL), совместимость с SELinux и т. д. Файловые системы выделяются по признакам, представляющим интерес в первую очередь для многоопытных пользователей либо для тех, кто работает с сервером.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: