Понятие файловой системы linux
Тема: Файловая система Linux .
Вид занятия: лекция, практическое занятие.
1. Основные понятия: корневой каталог, точка монтирования,
2. Типы файлов. Обычные файлы. Каталоги. Файлы устройств.
3. Навигация по файловой системе: команды cd , pushd ,
4. Создание, удаление и копирование файлов. Команды
5. Операции с каталогами. Команды mkdir и rmdir .
6. Важнейшие каталоги файловой системы Linux .
1. Робачевский А.М. Операционная система Unix . — СПб.:
БВХ — Санкт-Петербург, 1999. — 528 с., ил.
2. Армстронг (мл.) Джеймс. Секреты Unix : 2-е изд.: Пер. с
англ.: Уч. пос. — М.: Издательский дом Вильямс, 2000. —
1072 с.: ил. — Парал. тит. англ.
3. Паркер Тим. Linux 5.2. Энциклопедия пользователя: Пер. с
англ. — К.: Издательство ДиаСофт, 1999. — 688 с.
1. Файловая система Linux , в отличие от операционных систем семейства Windows не не разделена по томам (дискам, устройствам), а имеет единую древовидную структуру, в основе которой лежит корневой каталог . Корневой каталог — это уровень файловой системы, выше которого по дереву каталогов подняться невозможно. В Linux корневой каталог обозначается как / (именно / — слэш, а не \ — обратный слэш). Система позволяет устанавливать много корневых каталогов. Так например для некоторого пользователя ftp / home будет корневым каталогом и при обращении к клиенту ftp на смену каталога на корневой пользователь будет попадать в / home .
Возникает вопрос, а как тогда разные физические устройства участвуют в формировании единой файловой системы? Сделаем небольшой экскурс в историю. В то время, когда создавалась ОС Юникс устройства — накопители информации представляли собой ящик размером с письменный стол и назывались магнитными барабанами. В то время не было необходимости подключать и отключать его по нескольку раз в час. Поэтому не был выработан и механизм быстрой смены. Для подключения любого устройства к файловой системе используется так называемая точка монтирования — каталог, все вложенные уровни которого являются файловой системой на устройстве-носителе. Например, при монтировании дискеты обычно используется каталог / media / floppy . То есть, все каталоги и файлы, находящиеся внутри / media / floppy на самом деле содержаться на дискете, вставленной в дисковод компьютера. Для подключения, или монтирования, устройств используется специальная команда, которую мы изучим на следующих занятиях. Таким образом подключаются и сетевые файловые системы, то есть такие системы, которые реально находятся где-то на сервере сети, однако различий в работе с ними пользователь не ощущает и видит сетевые файлы и каталоги, как если бы они были расположены на локальном компьютере.
Есть у файловой системы Linux и еще одна особенность. Каждому пользователю в ней выделяется домашний каталог — специальный каталог, необходимый для хранения пользователем своих личных данных. При входе пользователя в систему, он сразу оказывается в своем домашнем каталоге. Обычно права доступа к домашнему каталогу пользователя выставлены таким образом, что доступ к каталогу запрещен всем кроме владельца и администратора.
2. В файловой системе Линукс различают несколько типов файлов. Понятие файл включает в себя также и интерфейсы работы с периферийными устройствами, и каналы, позволяющие разным процессам в системе обмениваться данными.
[student@ns lesson_2]$ ls -l
-rwxr-xr-x 1 root root 2872 Aug 27 2001 arch
-rw-rw-rw- 1 root root 612 Jun 25 2001 chain.b
brw-rw—- 1 root disk 3, 1 Feb 3 15:38 hda1
drwxrwxrwx 2 root root 32768 Feb 3 15:38 ida
Преподаватель объясняет, как различить разные типы устройств, перечисляет основные типы:
b блочное устройство
с символьное устройство
Объясняет понятие скрытых файлов, а также каталогов . и . Показывает разницу между командой ls и ls — a .
3. Навигация по файловой системе является одним из самых важных навыков при работе с операционной системой Linux . Основными командами, используемыми при навигации по файловой системе, являются:
pwd — показывает полное имя каталога, в котором находится пользователь.
[student@ns student]$ pwd
cd — изменяет текущий каталог на указанный. cd без параметров или с параметром
изменяет текущий каталог на домашний. cd с параметром .. изменяет каталог на тот, который находится на один уровень выше по дереву каталогов.
[student@ns student]$ pwd
[student@ns student]$ cd primer
[student@ns primer]$ pwd
[student@ns primer]$ cd ..
[student@ns student]$ pwd
[student@ns student]$ cd /home/student/primer
[student@ns primer]$ pwd
[student@ns primer]$ cd
[student@ns student]$ pwd
[student@ns student]$ cd /bin
[student@ns bin]$ pwd
[student@ns bin]$ cd
[student@ns student]$ pwd
pushd , popd — эти команды работают в связке. Команда pushd изменяет каталог на указанный. pushd c параметром .. изменяет каталог на тот, который находится на один уровень выше по дереву каталогов. Основное отличие этой команды от cd в том, что вся история смены каталогов запоминается в стек и потом может быть использована для быстрой обратной навигации с помощью команды popd .
[student@ns student]$ pushd /var
[student@ns var]$ pushd log
[student@ns log]$ popd
[student@ns var]$ popd
4. Пользователю Linux ежедневно приходиться создавать, копировать и удалять файлы. Эти операции являются такими же важными, как перемещение по файловой системе.
Команда cp используется для копирования файлов. Её синтаксис таков:
Наиболее часто используемым параметром является параметр — R , позволяющий рекурсивно копировать каталоги, т.е со всем их содержимым.
[student@ns primer_3]$ cd ../primer_1/in_primer_1
[student@ns in_primer_1]$ ls
[student@ns primer_3]$ cd ../primer_3
[student@ns primer_3]$ cp in_primer_3 ../primer_1/in_primer_1/
[student@ns primer_3]$ cd ../primer_1/in_primer_1
[student@ns in_primer_1]$ ls
[student@ns primer_2]$ cd ../primer_2
[student@ns primer_2]$ ls
[student@ns primer_3]$ cp -R * ../primer_2
[student@ns primer_3]$ cd ../primer_2
[student@ns primer_2]$ ls
in_primer_2 in_primer_2_2 in_primer_3
[ student @ ns primer _2]$
Команда touch позволяет создавать файлы. Её применение наиболее просто: touch . Если файл с заданным именем существует в текущей директории, команда touch обновит его время создания на текущее.
[student@ns lesson_3]$ ls
primer_1 primer_2 primer_3
[student@ns lesson_3]$ touch file
[student@ns lesson_3]$ ls
file primer_1 primer_2 primer_3
[student@ns lesson_3]$ _
Команда rm используется для удаления файлов. Основные параметры, используемые с командой rm это — i (удаление с подтверждением удаления), — r (рекурсивное удаление) и — f (удаление всех файлов без подтверждения), — v (подробный описание производимых действий). Параметры — r и — f используются для удаления большого количества файлов. Но при их использовании необходимо быть предельно осторожным, т.к. с помощью этих параметров можно уничтожить систему.
[student@ns lesson_3]$ rm -iv ./file
rm: remove `./file’? y
[ student @ ns lesson _3]$_
5 . Операции с каталогами также важны для пользователя Linux , как и основные операции с файлами. Основные команды, используемые при работе с каталогами это — rmdir и mkdir .
Команда mkdir позволяет создать каталог:
[student@ns student]$ ls
file primer_1 primer_2 primer_3
[student@ns student]$ mkdir catalog
[student@ns student]$ ls
catalog file primer_1 primer_2 primer_3
[ student @ ns student ]$_
rmdir , наоборот, позволяет удалить каталог:
[student@ns student]$ ls
catalog file primer_1 primer_2 primer_3
[student@ns student]$ mkdir catalog
[student@ns student]$ ls
file primer_1 primer_2 primer_3
Обращаю ваше внимание на то, что команда rmdir, без использования дополнительных параметров, может удалять ТОЛЬКО ПУСТЫЕ КАТОЛОГИ.
6 . Файловая система Linux, как и любой другой unix- подобной операционной системы, имеет строгую структуру каталогов. Каждый дистрибутив Linux может несколько изменять структуру в зависимости от предпочтений разработчиков. Мы рассмотрим те каталоги, которые используются в каждом дистрибутиве:
в этом каталоге находятся основные исполняемые файлы, жизненно необходимые для функционирования системы
содержит ядро операционной системы и карты загрузки, а также конфигурационные файлы загрузчиков ( lilo, grub )
содержит файлы, которые являются интерфейсом с периферийными устройствами
содержит основные файлы настроек приложений Linux
содержит дамашние папки пользователей
содержит основные библиотеки, необходимые для нормальной работы системы
информация, восстановленная при проверке файловой системы на наличие ошибок
содержит каталоги — точки монтирования переносимых файловых систем ( floppy, cdrom, etc. )
каталог предназначен для коммерческого программного обеспечения
внутри этого каталога находится виртуальная файловая система proc , создаваемая ядром Linux “ на лету ”
в этом каталоге находятся временные файлы, используемые запущенными в данный момент процессами
программы, библиотеки и другие данные пользовательских приложений
Источник
Файловая система Linux
В этой статье мы поговорим про файловую систему Linux. Но здесь вы не найдете описания тонкостей работы с определенной файловой системой, например, ext4, а также не найдете команд для работы с какой-либо ФС. Мы остановимся на более общих понятиях и попытаемся разобраться что такое файловая система, и как она работает в целом.
Каждый компьютер сохраняет данные и результаты на жестком диске, твердотельном накопителе SSD или любом другом носителе информации, это неизбежно. Для этого есть несколько причин. Во-первых, содержимое RAM очищается при каждой перезагрузке компьютера. Конечно, есть быстрые энергонезависимые устройства хранения, такие как флеш память, но они стоят намного дороже, чем стандартные модули DDR3.
Вторая причина хранить данные на диске, это то, что оперативная память намного дороже чем более медленные, но вместительные жесткие диски. Фактически 16 Гб оперативной памяти будет стоить столько же, сколько жесткий диск на 2 Тб. Таким образом, мы видим, что оперативная память в 71 раза дороже чем HDD.
Что такое файловая система?
Люди могут подразумевать под файловой системой совсем разные понятия. Само словосочетание может иметь несколько значений и вам придется понимать о чем идет речь из контекста документа.
Давайте рассмотрим наиболее часто используемые значения слов файловая система. Мы не будем останавливаться на официальной трактовке, а попытаемся обратить внимание на сферу применения:
- Все структура каталогов Linux, начиная с корня (/);
- Конкретный формат раздела хранения данных, например, Ext3, Ext4, Btrfs, XFS и так далее. Ядро Linux поддерживает более 100 типов файловых систем, в том числе очень старых и новых. Каждый тип файловой системы использует свои структуры метаданных чтобы организовать работу с данными на диске;
- Раздел или логический том, отформатированный в определенный тип файловой системы, который можно примонтировать к определенной точке монтирования.
Дальше рассмотрим как выполнена организация файловой системы Linux и ее основные функции.
Основные функции файловой системы
Необходимость использования дисковых хранилищ приносит некоторые особенности работы файловых систем. Основная функция файловой системы — предоставление организованного пространства для хранения файлов на энергонезависимом запоминающем устройстве. Но есть несколько дополнительных функций, которые вытекают из основной.
Все файловые системы должны обеспечивать пространство имен. Оно определяет как будут называться файлы, ограничения на длину имени, используемые символы, а также логическую структуру данных на диске, например, использование каталогов для организации файлов, а не просто складывания их в одном месте.
Когда пространство имен определено, необходимо создать для него основу с помощью метаданных файловой системы. Она включает в себя структуры данных для создания иерархии каталогов, структуры для хранения занятых и свободных блоков на диске, структуры с именами файлов и каталогов, информацией о файлах, такой как размер, время создания, расположение файла на диске и так далее. В самих блоках файла на диске хранится только его содержимое, вся же остальная информация находится в метаданных.
Также метаданные используются для описания логических томов и подразделов, если таковые поддерживаются, и еще одни содержат информацию, описывающую файловую систему.
Для доступа к файлам также необходим набор функций API, с помощью которых программы могли бы управлять различными объектами файловой системы. Обычно должны существовать методы для создания, перемещения и удаления файлов.
Современные файловые системы также обеспечивают модель безопасности, которая представляет из себя схему прав доступа к файлам для пользователей. Модель безопасности ФС в Linux гарантирует что пользователи будут иметь доступ только к своим файлам.
Дальше, нам нужно программное обеспечение, которое будет выполнять все эти функции. Организация файловой системы linux состоит из двух частей:
Первая часть — это виртуальная файловая система. Она представляет собой единый набор команд ядра, с помощью которого разработчики могут получить доступ к любой из файловых систем. Виртуальной файловой системе необходим драйвер для работы с различными типами ФС. Драйвера файловой системы — это вторая часть реализации, в них реализован стандартный набор команд, выполняющих специфичные для файловой системы действия.
Структура каталогов
Намного проще найти файлы, если они хранятся небольшими группами, каждый на своем месте, а не все в одной куче. Структуру файловой системы Linux можно представить в виде простой иерархии. Все каталоги находятся в корневом каталоге (/) поэтому каждый адрес файла начинается с него. Например, /var/log/dmesg, /usr/share/, /bin.
Корневая файловая система Linux — это ФС верхнего уровня, она должна содержать все файлы, необходимые для загрузки Linux еще до того как другие файловые системы будут смонтированы. Здесь уже должны быть все исполняемые файлы и библиотеки, нужные для подключения других ФС. Во время загрузки другие файловые системы монтируются в четко определенные для них каталоги. Более детально предназначение каждого каталога Linux мы рассматривали в статье структура файловой системы Linux.
Каталоги /bin, /dev, /etc, /lib, /root, /sbin не могут быть примонтированы и должны быть доступны еще до загрузки, так как в них находятся все необходимые файлы. Что касается каталогов /media и /mnt, то они должны быть пустыми, поскольку это точки монтирования для других файловых систем. Остальные каталоги можно смело монтировать позже, они никак не повлияют на запуск.
В некоторых не Unix операционных системах разделам присваиваются отдельные буквы, например, C: или D:. В них каждый раздел будет иметь отдельную файловую систему. Чтобы найти нужный файл на диске C: вам необходимо сначала выполнить команду C:, а затем искать путь к файлу.
В Linux все физические диски и разделы, объеденные в одну файловую структуру. Она начинается с корня (/) в котором расположены все другие каталоги. Это работает потому что файловые системы /var, /home, /boot, /tmp и т д могут находиться на других физических дисках. Даже съемные диски подключаются в основную файловую систему.
И это очень хорошо, потому что при обновлении версии дистрибутива можно сохранить абсолютно все файлы и настройки в домашнем каталоге. Иногда полезно переформатировать корневой раздел чтобы убрать оттуда весь мусор, если /home находится на отдельном разделе, то вы ничего не потеряете. Есть и другие причины так поступать, например, защита корневой ФС от переполнения, что привело бы к неработоспособности системы.
Типы файловых систем
Как уже было сказано, Linux поддерживает более 10 различных файловых систем, но создавать и выполнять запись, возможно, только в некоторые из них. Зато можно подключить их все к корневой файловой системе. Под типом мы подразумеваем совокупность структур и метаданных, необходимых для хранения файлов.
Linux может монтировать и читать такие файловые системы:
Основная причина почему они поддерживаются — это попытка организовать максимальную совместимость с другими операционными системами. А вот основные файловые системы linux, которые можно создавать:
Мы более подробно рассматривали особенности некоторых из них в статье типы файловых систем Linux.
Монтирование файловых систем
Термин смонтировать появился еще в самом начале развития Linux, тогда было необходимо вставить кассету или съемный диск в специальный привод. Только после этого можно было получить доступ к файловой системе устройства.
Точка монтирования — это обычный каталог, как любая другая часть файловой системы. Например, домашняя папка смонтирована в каталог /home. И так далее.
Корневая файловая система ос Linux / подключается на раннем этапе загрузки. Другие файловые системы монтируются системой инициализации, например, SysVinit или Systemd. Точки монтирования настраиваются с помощью файла /etc/fstab. Также можно выполнять ручное монтирование в Linux с помощью команды mount. Каталог для монтирования необязательно должен быть пустым, он может содержать файлы, но тогда они будут просто скрыты.
Выводы
Эта статья была ориентирована на новичков и я надеюсь, что некоторые вопросы, касаемо термина файловая система linux были сняты. Теперь вы можете оценить элегантность, сложность и функциональность файловой системы Linux. Если у вас есть вопросы, спрашивайте в комментариях!
Источник