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

Обновлено: 05.07.2024

Несмотря на большое количество поддерживаемых файловыхсистем, большая часть дистрибутивов базируются наединой в системе ext2/ext3. Иногда в качестве опциипредлагается использование ReiserFS, но такжена общесистемном уровне. При этом не учитываются достоинства и недостаткиконкретных систем, хотя, например ReiserFS ведетсебя лучше на мелких файлах, а XFS – накрупных. Также у каждой файловой системы есть свои опции. Было бы неплохопользовательские домашние каталоги подключать с nosuid,nodev,так как ни устройств ни системных файлов там быть недолжно.

С другой стороны благодарястандартизации файловой иерархии в UNIX–подобных системах можно однозначноопределять тип файлов в определенный каталог.Например, в /usr/include будет много мелких неизменяющихсятекстовых файлов, а в /var/log,наоборот часто меняющиеся файлы. Значит, длямаксимальной производительности нужно для разных каталогов выбирать разныефайловые системы.

1 Файловые системы, поддерживаемые Linux

Linux поддерживает очень много файловых систем, в том числеFAT(32), HPFS, UFS и многие другие, но в качестве рабочих файловых системрекомендуется использовать только ext2, ext3, ReiserFS, XFS, а такжеспециализированные файловые системы: devfs, tmpfs, proc, devpts, romfs.

ext2 – стандартная система Linux c ядром 2.2 и более старых. Не поддерживаетжурналирование, но является достаточно устойчивой, наиболее совместимой и не оченьтребовательна к ресурсам.

ext3– фактически ext2 с журналом.Метаданные журналируются всегда.

ReiserFS– файловая система, разработанная Hans Reiser. Основное еепреимущество: быстрая работа с большим количество маленьких файлов, а также ихболее компактное хранение. В качестве недостатка можно упомянутьнесовместимость ее версий, а также отсутствие поддержки квот без дополнительныхпатчей. Также следует помнить, что не во всех rescue дисках есть поддержка этойфайловой системы, поэтому нежелательно ее использование в корневом разделе.

XFS– файловая система от SGI. В ней есть несколько очень полезных свойств.Во-первых, она сразу поддерживает ACL (права для Windows клиентов) и EA(атрибуты в OS/2). Во-вторых она лучше всех работает с большими файлами.Поэтому ее целесообразно использовать на файл-серверах в разделах, к которымдается доступ из Windows или просто хранятся multimedia данные.

devfs, devpts: файловые системы для /dev и /dev/pts соответственно.Использоваться должна либо одна, либо другая. devpts создает файлывиртуальных консолей согласно их реальному количеству, а devfs создает все файлыустройств при обращении к ним.

tmpfs: файловая система в памяти. Используется в основном для /tmp, но можноиспользовать и для других нужд.

romfs: файловая система только для чтения в памяти. Используется при загрузкедля initrd, так как ее драйвер самый маленький.

2 Опции подключения

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

ro– режим только чтение

nodev– невозможность использования файлов устройств

nosuid– отключение SUID бита

noexec– отключение возможности выполнения программ

noatime– не обновлять время доступа: значительно ускоряет работу

sync– все операции выполнять синхронизировано: медленней, но надежней.

nodev, noexec, nosuid желательно использовать для повышениябезопасности системы. ro используется как для повышения производительности, таки для повышения безопасности. Разумеется, для использования этих опцийнеобходимо удостоверится, что отключаемая возможность на данном разделе ненужна. То же самое относится и к noatime.


3 Структура файловой иерархии

Структура файловой иерархии в Linux унаследована отUNIX-систем. В настоящее время эта структура стандартизована документом File Hierarchy Standard 2.3.

Краткое описание корневых каталогов:

/bin– бинарные файлы, необходимые при загрузке

/boot– статические файлы для загрузчика

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

/etc– файлы настроек

/home– домашние каталоги

/lib– библиотеки, необходимы для загрузки

/media,/mnt – точки монтирования

/opt– большие программные пакеты

/sbin– системные бинарные файлы, необходимые при загрузке

/srv– данные для сервисов

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

/usr– вторичная иерархия

/var– изменяемые данные 3.1 Каталог /bin

Каталог /bin содержит команды, которые могут использоватьсякак системным администратором, так и рядовыми пользователями, причем только текоманды, которые необходимы, когда никакая другая файловая система, кромекорневой, еще не смонтирована (например, в однопользовательском режиме). В этомкаталоге могут также содержаться команды, которые используются не напрямуюпользователем, а включаются в сценарии оболочки (скрипты). Исполняемые файлы,которые не так важны, чтобы быть расположенными в каталоге /bin, должны размещатьсяв каталоге /usr/bin.

В /bin должны иметься следующие команды или символическиессылки на соответствующие команды:

cat, chgrp, chmod, chown, cp, date, dd, df, dmesg, echo,false,hostname, kill, ln, login, ls, mkdir, mknod, more, mount, mv, ps,pwd, rm, rmdir, sed, sh, stty, su, sync, true, umount, uname.

Следующие программы или символические ссылки на программыдолжны находиться в каталоге /bin, если только соответствующие пакетыустановлены в системе:

csh, ed, tar, cpio, gzip,gunzip, zcat, netstat, ping.

В каталоге /bin не должно быть подкаталогов.

3.2 Каталог /boot

Этот каталог содержит все, что необходимо в процессезагрузки, исключая конфигурационные файлы и установщик карты загрузки (the mapinstaller). Таким образом, в /boot хранятся данные, которые используются дотого, как ядро начинает исполнять программы пользователя. Здесь же находятсярезервные сохраненные копии главной загрузочной записи (master boot sectors) идругие данные, которые не подлежат прямому редактированию.

Каталог /boot может находится либо в корневой системе (файлыв нем статические), либо подключаться отдельно. Обычно она подключаетсяотдельно в том случае, если корневая система находится в конце диска. Старыезагрузчики могут некорректно работать, в таких случаях создается маленькийраздел /boot в начале диска. Файловая система на нем ext2 (загрузчик может неуметь работать с другими файловыми системами). Подключается в режим ro (толькочтение), чтобы не повредить файлы.

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

Для каталога /devсуществует 3 варианта подключения:

Оставить в корневом каталоге.

Подключить на другой файловойсистеме.

Подключить как devfs.

Согласно стандарту в корневой файловой системе должны быть утилиты,необходимые для подключения файловых систем, восстановления системы ивосстановления файловых систем из архивных копий. Также прикладные программы недолжны создавать файлы или каталоги в корневом каталоге. Для загрузкинеобходимо устройство /dev/console и должны быть дисковые устройства, но еслиядро поддерживает файловую систему devfs, то возможно в любом случаеподключать эту файловую систему в /dev.

Второй вариант удобен тем, что тогда можно корневую файловуюсистему подключать с флагом nodev. Но при этом возникает проблема монтированияфайловой системы, где лежит /dev, так как для монтирования необходимо, чтобыбыл доступен файл устройства, которое монтируется. Поэтому хорошим вариантомявляется, например, монтирование dev в память (tmpfs), с последующимсозданием всех устройств. Флаг монтирования noexec. Неудобство этого варианта:задержка при загрузке компьютера и затраты памяти на неиспользуемые устройства,поэтому в современных ядрах ОС Linux существует файловая система devfs,позволяющая создавать устройства и подгружать соответствующие устройства припопытке доступа к файлам устройств. Эта файловая система хранится в памяти, нодля ее работы необходим сервис devfsd. Основной недостаток этого подхода:неполная совместимость devfs с старым стандартом на именаустройств.

Каталог /etc содержит конфигурационные файлы и каталоги,специфичные для данной конкретной системы. В каталоге /etc не должно бытьбинарных файлов. В соответствии со стандартом FHS этот каталог в обязательномпорядке должен содержать подкаталог /opt, в котором должны размещатьсяподкаталоги с конфигурационными файлами отдельных пакетов и приложений. Длякаждого установленного пакета должен создаваться конфигурационныйкаталог /etc/opt/package.

Если же /etc подключается отдельно от корневой системы, тофайловая система для него должна быть ext2, а флаги монтирования: nodev, sync.Первый указывает, что в /etc не должно быть файлов устройств, а sync означает,что любые изменения файлов /etc должны немедленно записываться на диск. Этожелательно, так как при аварийном восстановлении перезагрузка часто выполняетсябез выполнения скриптов завершения работы, вследствие чего могут быть утеряныпоследние изменения, которые еще не записаны на диск.

3.5 Каталог /home

В небольшихсистемах каждый домашний каталог пользователя является одним из непосредственныхподкаталогов каталога /home, таких как /home/smith, /home/torvalds,/home/operator и так далее. В больших системах (особенно когда каталоги /homeявляются разделяемыми между многими хостами посредством NFS) полезно объединитьдомашние каталоги в группы, введя подкаталоги групп такие как /home/staff,/home/guests, /home/students и так далее. Но как бы то ни было, структурадомашних каталогов различается от хоста к хосту. Следовательно, никакаяпрограмма не должна полагаться на какие-то предположения о структуре домашнихкаталогов.

Рассмотрим как лучше использовать /home. С одной стороны,очевидно, нужны опции nodev, nosuid, так ни устройств, ни suid-файлов упользователей быть не должно. Иногда можно также устанавливать noexec. Обычнопользователям разрешено создавать запускаемые файлы в ~/bin. Тип файловойсистемы также имеет смысл выбирать в зависимости от того, какие файлы хранятсяу пользователей. Если много маленьких (пользователи – программисты) и не нужныквоты, то лучше ставить ReiserFS. Если крупные файлы(пользователи обрабатывают или хранят видео, музыку, архивы), то лучше XFS.Также XFS рекомендуется, если необходимо давать доступ по протоколуSamba (также известный как Windows Network Neighbourghood), так как XFSподдерживает права доступа в формате ACL, которые используются в MS Windows.Если пользователям не надо знать время доступа к файлам, можно такжеиспользовать noatime.

Каталог /lib содержит те разделяемые библиотеки, которыенеобходимы для загрузки системы и запуска команд, расположенных в каталогах/bin и /sbin.

Не должны располагаться в /lib разделяемые библиотеки,которые необходимы только исполняемым файлам, расположенным в /usr (таким, какбинарные файлы системы X Window).

Более одного варианта каталога /lib может существовать всистемах, поддерживающих более одного формата исполняемых файлов (например,32-х и 64-х разрядные форматы), при этом для каждого формата требуется свойотдельный вариант разделяемых библиотек (которые могут называться /lib32 и/lib64).

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

Этот каталог не должен использоваться программами инсталляцииПО; для создания и хранения временных файлов на этапе инсталляции должныиспользоваться временные каталоги, не используемые системой.

Стандарт FHS резервирует каталог /opt для установкидополнительных пакетов программного обеспечения. Предполагается, что любойпакет, который устанавливается в каталог /opt, должен размещать своистатические файлы в отдельной каталоговой структуре /opt/, где– название соответствующего пакета программного обеспечения.

Как правило, все данные, необходимые для поддержкифункционирования пакета, должны присутствовать в каталоге /opt/,включая файлы, копируемые в каталоги /etc/opt/и/var/opt/а также специально создаваемые для пакета каталоги в/opt.

Каталоги /opt/bin, /opt/doc, /opt/include, /opt/info,/opt/lib и /opt/man зарезервированы для использования локальным системнымадминистратором.

Программы, вызываемые на исполнение пользователем, должнырасполагаться в каталоге /opt//bin. Если пакет ПО содержит всвоем составе страницы обычного в UNIX интерактивного руководства man, онидолжны устанавливаться в каталог /opt//man, который должен иметьтакую же структуру, как и каталог /usr/share/man.

Файлы пакета, которые являются переменными (изменяемыми привыполнении стандартных операций), должны устанавливаться в /var/opt.Специфичные для хоста конфигурационные данные должны устанавливаться в/etc/opt.

Никакие файлы пакета не должны размещаться вне каталогов/opt, /var/opt и /etc/opt, кроме тех файлов, которые должны оказаться в другихместах по той причине, что иначе пакет не сможет функционировать нормально.Например, файлы блокирования устройств должны располагаться в /var/lock, афайлы устройств должны располагаться в /dev.

Дистрибутивы могут устанавливать программное обеспечение вкаталог /opt, но не должны модифицировать или удалять ПО, установленное местнымсистемным администратором, без разрешения этого самого администратора.

Каталог /opt можно подключать на отдельном разделе. Какправило, файлы в этом разделе не изменяются и не требуются в экстренныхслучаях, поэтому лучше использовать ReiserFS или ext3 с опцией ro.

3.9 Каталог /root

Каталог /root – это домашний каталог суперпользователя. Онможет быть задан разработчиком или определен при инсталляции системы, норекомендуемое место его расположения по умолчанию – корневая файловая система.

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

3.10 Каталог /sbin

Утилиты для выполнения задач системного администрирования (идругие команды, используемые только пользователем root) размещаются в /sbin,/usr/sbin и /usr/local/sbin. Каталог /sbin содержит исполняемые файлы,необходимые для загрузки системы и ее восстановления в различных ситуациях(restoring, recovering, and/or repairing the system), не попавшие в каталог/bin.

Единственная команда, которая обязательно должнаприсутствовать в /sbin, это команда shutdown – команда остановки системы.

Авторы стандарта рекомендуют предоставить всем пользователямправо на чтение и выполнение для всех файлов, расположенных в /sbin, кроме,может быть тех программ, для которых установлены биты setuid и setgid.Разделение каталогов /bin и /sbin делается не из соображений безопасности и недля того, чтобы лишить пользователей возможности видеть системные утилиты.Целью такого деления является установление явного различия между исполняемымифайлами, которые используются всеми, и теми утилитами, которые в основномиспользуются для решения административных задач. С точки зрения безопасностинет никаких преимуществ в том, чтобы сделать /sbin недоступным дляпользователей.

3.11 Каталог /tmp

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

После перезагрузки он обязан быть пустым, поэтому его можноразмещать либо на диске, либо в памяти. noatime на него ставить нельзя, так какпо нему ориентируется tmpwatch (программа для чистки /tmp от старых файлов).Если оставлять на диске, то лучше ставить на ReiserFS, так как тамобычно много мелких файлов. Для монтирования в память используется файловаясистема tmpfs. В любом случае рекомендуется, во-первых, выносить /tmpна отдельный раздел, во-вторых, подключать с флагом noexec. Если не ставитсяnoexec, тогда должно стоять хотя бы nosuid. И в любом случае nodev.

3.12 Каталоговая структура /usr

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

/usr/bin– бинарные файлы

/usr/include– заголовочные файлы для C

/usr/local– локальная иерархия (структура как у /usr)

/usr/sbin– системные бинарные файлы

/usr/share– данные независимые от архитектуры

/usr – это обычно достаточно большой раздел, который, какправило, делается с таким расчетом, чтобы его можно было использовать нанескольких однотипных машинах. Поэтому его можно монтировать только для чтения.Но в этом случае нужно отдельно подмонтировать /usr/local (хотя бы из техсоображений, что в нем устанавливаются программы нужные только на одноймашине).

/usr/local монтируется с теми же параметрами, что и /usr.

3.13 Каталоговая структура /var

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

Некоторые части каталоговой структуры /var не являютсяразделяемыми между разными системами. К ним относятся /var/log, /var/lock и/var/run. Другие части могут быть разделяемыми, например, /var/mail,/var/cache/man, /var/cache/fonts и /var/spool/news.

Структура каталогов /var определяется в стандарте FHS с тойцелью, чтобы сделать возможным монтирование каталога /usr в режиме только длячтения. Все, что записывается на диск в процессе выполнения системных операций(в противоположность процессам инсталляции и поддержки программногообеспечения), должно размещаться в каталоге /var.

На весь раздел лучше ставить ReiserFS, желательно сфлагом noexec, или хотя бы nosuid. Обычно можно использовать noatime, но невсегда.

В каталоге /var/spool/mail хранится почта пользователей. Нанего рекомендуется ставить ext3 с data=journal, noatime, noexec,nodev и включенными квотами.

/var/cache – кэш прокси. Тут много мелких файлов, поэтому ReiserFSс noexec, nodev, noatime.

/var/tmp – временные файлы, нужные после перезагрузки. Из техже соображений, что и для /tmp выбираем ReiserFS с опциями noexec, nodev,noatime.

Таким образом, для максимальной производительности Linuxследует для разных каталогов выбирать разные файловые системы. Файловую системуext2лучше устанавливать в каталоги /boot и /etc; ext3 – в каталоги /opt и /var/spool/mail;ReiserFS– в каталоги /home, /tmp, /var, /var/log, /var/cache, /var/tmp и /opt; XFS – в каталог /home. devfs,devpts – файловые системы для каталогов/dev и /dev/pts соответственно. tmpfs используется в основном для/tmp. Также следует указывать соответствующие опции: ro, nodev, nosuid, noexec,noatime, sync.

Разумеется возникает вопрос как лучше разместить такоеколичество файловых систем на жестком диске. Можно создавать файловые системы вфайлах. Делается это при помощи команды

  • Для учеников 1-11 классов и дошкольников
  • Бесплатные сертификаты учителям и участникам

Работа с файловой системой LINUX

Цель работы : Изучить команды управления каталогами и файлами.

Порядок выполнения работы.

1. Включим компьютер, войдем в систему LINUX и пройдем процедуру идентификации:

Появилось окно приглашения командной оболочки для ввода команд.

2. Убедимся, что находимся в домашнем каталоге:

3. Создадим в домашнем каталоге подкаталог STUDENT следующей структуры:

DEC

STUDENT

4. Переименуем подкаталог EKO в МРМ.

5. Сделаем текущим каталог МРМ:

6. Создадим файл из 5 строк с помощью редактора nano :

Сохраним его на диск с названием borodino :

Выйдем из редактора, нажав комбинацию клавиш: Ctrl + x .

7. Просмотрим содержимое созданного файла:

8. Откроем созданный файл в редакторе с помощью команды nano borodino :

а) добавим в конец текста еще одну строку:

б) вставим новую строку между второй и третьей строками:

в) в первой строке сотрем любое слово;

Сохраним файл под новым именем:

Выйдем из редактора, нажав комбинацию клавиш: Ctrl + x .

9. Просмотрим содержимое созданного файла:

10. Создадим копию последнего файла в каталог DEC :

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

Построим граф, соответствующей созданной структуре каталогов:

12. Удалим каталоги с дублирующими именами:

13. Скопируем файл из каталога DEC в каталог CATl / CAT 8:

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

15. Используя восьмеричное представление прав доступа, изменим права каталога CAT 5 так, чтобы к каталогу имел полный доступ только сам владелец:

После выполнения данной команды, владелец имеет полный доступ, а группа владельца и остальные пользователи только на чтение и выполнение.

16. Выведем содержимое всех каталогов, начиная с самого верхнего из задания (ис­ пользуем только одну команду и один раз):

- перейти в домашний каталог;

- выдать содержимое файла / etc / passwd , отсортированное по имени пользователей в файл passwd . orig .

- ( для проведения сортировки файла используйте команду sort ):

Просмотрим файл passwd.orig:

18. Используя перенаправление ввода с разделителем и перенаправление вывода добавить в файл, созданный в пункте 9 и 10 задания, новую информацию:

19. Убедимся, что добавление записи прошло успешно:

Вопросы для контроля:

1. Что такое командная оболочка? Как можно определить её тип?

Командная оболочка - это программа, предназначенная для обработки, преобразования и выполнения команд, введенных пользователем. Под обработкой и преобразованием понимается набор действий командной оболочки по интерпретации и исполнению команд пользователя.

- По симво­ лу, приглашающему ввести очередную команду:

- Bourne использует символ "$".

- С shell - знак процента ("%").

- Korn shell - тот же символ, что и Bourne shell ("$").

-Просмотреть в файле / etc / passwd .

-С помощью команды ps .

2. Что такое файл?

Файл - поименованная область данных па магнитном носителе. Как и во многих со­ временных операционных системах, в LINUX файлы организованы в виде древовидной структуры (дерева), называемой файловой системой, которая может быть представле­ на как неориентированный древовидный граф, вершинам которого соответствуют файлы и каталоги

3. Что такое каталог?

Каталог (директория) - элемент файловой системы, включающий в себя другие файлы и каталоги, т.е. каталог это вершина графа, имеющая больше чем одну инцидентную связь.

4. Что такое путь файла? Абсолютный и относительный путь?

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

Пути бывают относительные (начало пути находится в текущем каталоге) и абсо­лютные (началом пути является корневой каталог).

5. Типы файлов, используемые в ОС Linux .

В UNIX системах существует 6 типов файлов, различающихся по функциональному на­значению и действиям операционной системы при выполнении тех или иных операций над ними:

- Обычный файл (regular file)

- Специальный файл устройства ( special device file )

- FIFO или именованный канал ( named pipe )

6. Стандартные каналы ввода-вывода.

Стандартным каналом вывода любой информации является вывод на экран монитора.

Стандартным каналом ввода является ввод с клавиатуры.

7. Операторы перенаправления каналов ввода-вывода.

Перенаправление вывода производится с помощью оператора >.

Если же надо информацию добавить в уже существующий файл, то используется оператор " >>":

Если требуемые вам данные лежат в файле, их можно оттуда взять, используя оператор перенаправления "

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

Предназначение файловой системы

В ОС Linux, как и в любой другой ОС семейства UNIX, любой объект является файлом, хранящимся на файловой системе. Файловая система представляет собой некоторое устройство (например, жесткий диск), отформатированное для хранения файлов. Файловые системы могут находиться на жестких дисках, гибких дисках, CD-ROM или других носителях, которые позволяют осуществлять произвольный или последовательный доступ к данным.

Условно файловую систему ОС Linux можно разделить на следующие компоненты.

Пространство имен - методы именования объектов файловой системы и их иерархическая организация.

Программный интерфейс приложения (API) - набор системных вызовов и библиотек, предназначенных для управления объектами файловой системы.

Модель безопасности - содержит в себе общую схему защиты, разделения прав доступа к объектам и совместного использования объектов.

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

Основными задачами файловой системы являются:

упорядочивание хранимых данных;

простой и быстрый доступ к хранимым данным;

обеспечение целостности хранимых данных.

Точный формат и способы хранения файлов в ОС Linux не имеют значения, так как система обеспечивает общий интерфейс для всех распознаваемых ею типов файловых систем. В ОС Linux файловой системой, устанавливаемой по умолчанию, является ext3fs. При доступе к любой файловой системе из ОС Linux данные представляются в виде иерархии каталогов с находящимися в них файлами вместе с идентификаторами владельцев и групп, битами прав доступа и прочими атрибутами.

Иерархия файловой системы

Иерархия каталогов файловой системы ОС Linux соответствует общепринятому в мире UNIX стандарту Filesystem Hierarchy System (FHS). Основное преимущество данного стандарта заключается в том, что определенные типы файлов расположены в соответствующих каталогах.

Например, большинство конфигурационных файлов располагается в каталоге /etc, а файлы журналов различных сервисов располагаются в каталоге /var/log.

Описание каталогов файловой системы ОС Linux


Каталоги /bin, /usr/bin, /usr/locl/bin, /sbin, /usr/sbin и /usr/local/sbin содержат установленные в системе команды. При работе в системе под обычным пользователем, вам будут доступны только команды каталогов /bin, /usr/bin и /usr/locl/bin, так как в стандарте FHS определено, что в каталогах sbin должны содержаться только административные команды.


Рисунок 1.2.Структура каталогов ОС Linux

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

Монтирование файловой системы к точке монтирования осуществляется при помощи команды mount. В следующем листинге приведен пример монтирования DVD привода, содержащего дистрибутив ОС RedHatEnterpriseLinux 5.

mount: block device /dev/hdc is write-protected, mounting read-only

В результате выполнения команды mount система вывела информацию о том, что блочное устройство (в данном случае DVD привод) было смонтировано в режиме чтения.

Список смонтированных файловых систем хранится в файле /etc/fstab. Благодаря этому возможны автоматическая проверка целостности файловой системы при помощи команды fsck и монтирование файловых систем на этапе начальной загрузки, а также выполнение сокращенных команд наподобие mount /var/spool. Информация, содержащаяся в этом файле, отражает расположения файловых систем на диске. Подробнее файл /etc/fstab будет рассмотрен в модуле 3.

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

proc on /ргос type proc (rw)

sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) /dev/hdc on /mnt type iso9660 (ro)

Как видим, в выводе команды mount последовательно отображается подмонтированное устройство, точка монтирования, тип файловой системы и дополнительные опции монтирования.

Типы файлов

При работе с ОС Linux важно понимать, что любой объект ОС является файлом. Это ключевая особенность ОС Linux по сравнению с операционными системами семейства Windows.

Файлы различаются как по своей структуре, так и по своему предназначению. В ОС Linux определены семь типов файлов:

регулярные файлы (обычные файлы);

файлы блочных устройств;

файлы символьных устройств.

Определить тип файла можно с помощью команды Is -Id. Первый символ в строке вывода обозначает тип файла. В следующем листинге выдается информация о файле

brw-rw------ 1 root disk 22, 0 Dec 22 13:30 /dev/hdc

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

Файлы данного типа хранят именованные ссылки на другие файлы. Имя файла, находящегося в каталоге, в действительности хранится в родительском каталоге, а не в самом файле.

В ОС Linux принято различать символические и жесткие ссылки, каждая из которых имеет особенное значение.

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

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

ОС Linux подсчитывает количество ссылок на каждый файл и при удалении файла не освобождает блоки данных до тех пор, пока не будет удалена последняя ссылка на него.

Сокет - это специальный тип файла, используемый процессами для взаимодействия друг с другом. Установленные посредством сокетов соединения позволяют процессам взаимодействовать, не подвергаясь влиянию других процессов. В ОС Linux выделяется несколько видов сокетов, использование которых предполагает наличие сетевой инфраструктуры. Локальные сокеты доступны только на локальном компьютере, обращение к ним осуществляется через специальные объекты файловой системы, а не через сетевые порты. Такие сокеты принято называть сокетами домена UNIX (UNIXdomainsocket). Помимо локальных сокетов существуют сетевые сокеты, позволяющие процессам обмениваться данными по сети.

Несмотря на то, что другие процессы распознают файлы сокетов как элементы каталога, только процессы, между которыми установлено соответствующее соединение, могут осуществлять чтение и запись файлов сокета. С локальными сокетами работают различные сервисы ОС Linux - CUPS, XWindow и Syslog.

Именованные каналы ( FIFO)

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

Файлы блочных и символьных устройств

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

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

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

Файлы блочных устройств обрабатываются драйверами, которые осуществляют ввод-вывод данных цельными блоками. В данном случае, на уровне ядра выполняется буферизация данных ввода-вывода. К блочным устройствам относятся такие устройства как жесткие диски, DVD приводы, модули памяти, а так же все остальные устройства, поддерживающие произвольный доступ к данным.

Файлы блочных и символьных устройств характеризуются двумя номерами: старшим (major) и младшим (minor). Старший номер устройства позволяет ядру определить, к какому драйверу относится файл, а младший номер идентифицирует конкретное физическое устройство.

Просмотреть номера файлов устройств можно, используя команду Is:

brw-г-------- 1 root disk 8, 0 Dec 22 13:30 sda

brw-r-------- 1 root disk 8, 2 Dec 22 13:30 sda2

brw-rw------- 1 root disk 22, 0 Dec 22 13:30 hdc

crw-rw--------- 1 root root 4, 0 Dec 22 16:29 ttyO

crw--w--------- 1 root tty 4, 1 Dec 23 00:05 ttyl

crw-------------- 1 rootroot 5, 1 Dec 22 16:43 console

Из данного листинга видно, что блочному устройству sda2 соответствует старший номер 8 (номер драйвера) и младший номер 2 (номер устройства). Номер драйвера 8 в ОС Linux соответствует драйверу SCSI дисков sd. Младший номер устройства 2 является порядковым номером данного устройства, т.е, по сути, файл /dev/sda2 представляет второй раздел, созданный на жестком диске SCSIsda.

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

Основные команды управления файлами

Длина имени файла в ОС Linux зависит от типа файловой системы, на которой располагается данный файл. На файловой системе ext3, используемой в ОС Linux по умолчанию, максимальная длина имени файла не может превышать 255 символов.

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

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

Способ организации файловой системы в Linux

В качестве способа повышения эффективности ОС, в Linux применяется следующая модель файловой системы:


Благодаря такому подходу, добавление поддержки какой-нибудь новой файловой системы не потребует вносить соответствующих изменений в само ядро ОС.

Ядро Linux поддерживает различные типы файловых систем (ext3, ext4, ReiserFS, Btrfs, XFS и многие другие). На сегодняшний день наиболее часто используемой файловой системой является ext4, поэтому в данной статье основной упор будет сделан именно на нее.

Примечание: В Linux практически все объекты представлены в виде файлов (например, каталоги, принтеры, разделы диска, устройства и т.д.). Это делает еще более важным изучение того, как работает файловая система Linux.

Эволюция файловой системы ext в Linux

Давайте детально рассмотрим эволюцию файловой системы ext в Linux:


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

Файловая система Minix — это первая файловая система, являющаяся прообразом современных файловых систем в Linux, которая была представлена в 1987 году Эндрю С. Таненбаумом в составе одноименной ОС Minix.

Операционная система Minix и её файловая система использовались в виде наглядного пособия для студентов, изучающих основы строения ОС (одним из таких студентов был сам Линус Торвальдс). Из-за того, что Minix была, прежде всего, учебной системой, её файловая система обладала множеством недостатков: производительность файловой системы оставляла желать лучшего; длина имени файла была ограничена 14 символами, а размер разделов — 64 МБ. Для сравнения, жесткие диски того времени имели размер вплоть до 140 МБ.

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

Хотя ext и удалось решить проблемы, присутствовавшие в файловой системе Minix, у нее был один серьезный недостаток — временная метка. Сейчас, когда каждый файл в Linux имеет три временные метки (доступа к файлу, изменения содержимого файла, изменения свойств и метаданных файла (например, разрешений)), файловая система ext поддерживала только одну временную метку.

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

В январе 1993 года, менее чем через год после выхода ext, Реми Кард разрабатывает новую файловую систему — ext2.

В ext2 были расширены функциональные возможности ext:

увеличена производительность файловой системы;

данные файлов хранились в блоках данных одинаковой длины;

поддерживался максимальный размер файла в 2 тебибайта;

длина имени файла была ограничена 255 байтами (а не количеством символов, как раньше).

Повреждение файлов, если в момент записи данных на диск отключалось питание или возникал сбой системы.

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

Система ext2 использовалась по большей части до начала 2000-х годов, когда была представлена файловая система ext3.

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

В ноябре 2001 года, благодаря усилиям программиста Стивена Твиди, вместе с релизом ядра Linux 2.4.15 увидела свет и новая файловая система — ext3.

Файловая система ext3 — это улучшенная версия файловой системы ext2, в которой появилась возможность ведения логов. Она, как и ext2, поддерживает файлы размером в 2 тебибайта, а имена файлов ограничены 255 байтами.

Ядро Linux поддерживает три уровня ведения логов:

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

Ordered — процесс сохранения данных выполняется в определенном порядке: сначала в лог-файл записываются метаданные, затем содержимое файла записывается в основную файловую систему и уже тогда метаданные соединяются с основной файловой системой. В случае сбоя, основная файловая система не будет повреждена; риску повреждения подвергаются только те файлы, которые находятся во время сбоя непосредственно в процессе записи.

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

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

Файловая система ext4 была представлена в октябре 2008 года вместе с ядром Linux 2.6.28. Она поддерживает максимальный размер файла в 16 тебибайт и ограничивает максимальную длину имени файла 255 байтами.

Особенности файловой системы ext4

Давайте рассмотрим основной функционал файловой системы ext4:

Обратная совместимость. Файловая система ext4 поддерживает обратную совместимость с файловыми системами ext3 и ext2. Дополнительной функцией является автоматическое монтирование файловой системы ext3 в режиме ext3 с помощью драйвера ext4.

Улучшения распределения. Файловая система ext4 более эффективно распределяет блоки данных перед их записью на диск. Это повышает производительность как чтения, так и записи.

Расширение диапазона временных меток. Файловая система ext4 добавляет еще 408 лет к диапазону значений временных меток и поддерживает даты вплоть до 10 мая 2446 года. Также улучшилась точность временных меток — теперь они измеряются в наносекундах.

Многоблочное распределение. Особый механизм распределения блоков ищет свободные блоки, которые можно использовать для записи данных на диск. Файловая система ext4 задействует многоблочное распределение, позволяющее распределять несколько блоков всего лишь одним вызовом. Это уменьшает фрагментацию диска.

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

Неограниченное количество подкаталогов. Ядро Linux версии 2.6.23 поддерживает неограниченное количество подкаталогов. Файловая система ext4 ввела древовидную структуру данных HTree, чтобы избежать снижения производительности. HTree представляет собой специализированную версию B-дерева.

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

Быстрая проверка файловой системы. Файловая система ext4 помечает нераспределенные группы блоков. Время, необходимое для выполнения команды проверки диска fsck , значительно сокращается, поскольку отмеченные группы пропускаются. Это повышает общую производительность.

Онлайн-дефрагментация. Фрагментация диска приводит к снижению производительности файловой системы, что было серьезной проблемой для ext2 и ext3. Файловая система ext4 поддерживает утилиту e4defrag, которая позволяет пользователям дефрагментировать отдельные файлы или всю файловую систему.

Ограничения файловой системы ext4

Хотя файловая система ext4 считается лучшей файловой системой для дистрибутивов Linux, есть несколько ограничений, которые следует учитывать в вашей дальнейшей работе:

Восстановление поврежденных данных. Файловая система ext4 не может обнаружить или восстановить поврежденные данные, уже записанные на диск.

Максимальный размер тома установлен в 1 эксбибайт. Однако файловая система не может обрабатывать более 100 тебибайт данных без значительной потери производительности и увеличения фрагментации диска.

Альтернативные файловые системы

Существует несколько альтернативных файловых систем, поддерживаемых ядром Linux.

XFS — это 64-разрядная файловая система, которая впервые была представлена в 1994 году и встроена в ядро Linux с 2001 года. XFS поддерживает максимальный размер файла в 8 эксбибайт и ограничивает длину имени файла 255 байтами. Она поддерживает ведение логов и, как и ext4, сохраняет изменения в лог-файле до того, как они будут зафиксированы в основной файловой системе. Это снижает вероятность повреждения файлов.

Данные структурированы в виде B + -деревьев, что обеспечивает эффективное распределение пространства и, следовательно, повышение производительности.

Основным недостатком этой системы является сложный процесс изменения размера существующей файловой системы XFS.

OpenZFS

OpenZFS — это платформа, которая объединяет функционал традиционных файловых систем и диспетчера томов. Впервые была представлена в 2013 году. OpenZFS поддерживает максимальный размер файла в 16 эксбибайт и ограничивает максимальную длину имени файла 255 символами. В качестве особенностей данной системы можно выделить защиту от повреждения данных, шифрование данных, поддержку накопителей увеличенного объема, копирование при записи и RAID-Z.

Основным недостатком OpenZFS является юридическая несовместимость между лицензиями CDDL (OpenZFS) и GPL (ядро Linux). Эта проблема решается путем компиляции и загрузки кода ZFS в ядро Linux.

Btrfs

Некоторые особенности Btrfs включают в себя:

добавление и удаление блочных устройств в режиме онлайн;

настраиваемое для каждого файла или тома сжатие;

контрольные суммы и возможность создания файлов подкачки и разделов подкачки.

ReiserFS

ReiserFS — это альтернатива файловой системе ext3, которая обладает улучшенной производительностью и расширенным функционалом. Ранее, ReiserFS использовалась в качестве файловой системы по умолчанию в SUSE Linux. ReiserFS поддерживает динамическое изменение размеров файловой системы. К недостаткам можно отнести относительно низкую производительность.

Примечание: Такие файловые системы, как NTFS, FAT и HFS могут использоваться в Linux, но корневая файловая система Linux на них не устанавливается, поскольку они для этого не предназначены. Swap — это файл подкачки, служащий источником дополнительной памяти в тех случаях, когда для выполнения программы требуется больше оперативной памяти, чем имеется в компьютере, — он не является отдельной файловой системой.

Как узнать, какая у меня файловая система?

Способ №1: Использование команды df

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

$ df -Th | grep "^/dev"


Как вы можете видеть, у меня используется файловая система ext4 (см. раздел /dev/sda1).

Примечание: Имена дисков в Linux расположены в алфавитном порядке. /dev/sda — это первый жесткий диск (основной), /dev/sdb — второй и т.д. Цифры относятся к разделам, поэтому /dev/sda1 — это первый раздел первого диска.

Способ №2: Использование команды fsck

Команда fsck применяется для проверки и, при необходимости, восстановления файловых систем Linux. При этом она также может отображать и тип файловой системы на указанных разделах диска, например:



Способ №3: Использование команды lsblk

Команда lsblk отображает информацию о блочных устройствах. Добавив опцию -f , мы также получим и информацию о типе файловой системе:



Способ №4: Использование команды mount

Команда mount применяется для монтирования файловой системы в Linux. Её также можно использовать для монтирования ISO-образа, удаленной файловой системы Linux и многого другого. Чтобы узнать тип файловой системы, используйте следующую комбинацию:

Читайте также: