- Файловая система Linux
- Что такое файловая система?
- Основные функции файловой системы
- Структура каталогов
- Типы файловых систем
- Монтирование файловых систем
- Выводы
- Разделы жесткого диска и файловые системы
- Содержание
- Разделы жесткого диска
- Преимущества использования нескольких разделов
- Таблица разделов жесткого диска
- Структура диска, разбитого на разделы (MBR)
- Виды разделов
- Первичный (основной) раздел
- Расширенный и Логические разделы
- Выбор файловой системы
- Точки монтирования
- Структура файловой системы
- Дисковые файловые системы, применяемые в Ubuntu
- Как разбить жесткий диск для установки Ubuntu
- Расположение разделов на жестком диске
- Нужен ли SWAP?
- Объем раздела для корня файловой системы
- Объем раздела для /home
- Перенос папки /home на новый раздел после установки
- Создание отдельного раздела
- Перенос данных на новый раздел
Файловая система 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. Если у вас есть вопросы, спрашивайте в комментариях!
Источник
Разделы жесткого диска и файловые системы
Содержание
Так же, как и при установке новой копии Windows, о разбиении винчестера на разделы нужно продумать заранее. Есть несколько вещей, которые вы должны знать о разделах, которые требуются при установке Ubuntu Linux. Установка Ubuntu требует как минимум двух разделов: один для самой операционной системы — обозначается «/» и называется «root» (корневой раздел), а второй для виртуальной памяти (для файлов подкачки) — называется «swap». Есть еще третий раздел — Home, создается по желанию, на нем будут храниться основные настройки приложений и файлы пользователя.
Разделы жесткого диска
Раздел — часть долговременной памяти жёсткого диска или флеш-накопителя, выделенная для удобства работы, и состоящая из смежных блоков. На одном устройстве хранения может быть несколько разделов.
Создание разделов на различных видах современных накопителей почти всегда предусмотрено (хотя, к примеру, на, ныне уже не используемых, флоппи-дисках было невозможно создать несколько разделов). Однако в Windows, с флешки с несколькими разделами будет доступен только первый из них (в Windows принято считать флешки аналогом флоппи-диска, а не жесткого диска).
Преимущества использования нескольких разделов
Выделение на одном жёстком диске нескольких разделов даёт следующие преимущества:
Таблица разделов жесткого диска
Существует несколько типов таблиц разделов жестких дисков. Наиболее распространенной на данным момент являемся IBM-PC совместимая таблица разделов, являющаяся частью главной загрузочной записи (MBR). MBR располагается в первом(нулевом) физическом секторе жесткого диска. Однако в последнее время начинает все чаще использоваться таблица GPT (GUID Partition Table). Если ваш диск имеет таблицу разбиения GPT, то вам не нужно заботится о количестве разделов (в GPT по умолчанию зарезервировано место под 128 разделов) и разбираться с типами разделов (в GPT — все разделы первичные). Если у вас MBR разбивка — то в данной статье приводится детальное описание такого разбиения диска.
Структура диска, разбитого на разделы (MBR)
Виды разделов
Первичный (основной) раздел
Первичный раздел обязательно должен быть на физическом диске. Этот раздел всегда содержит либо одну файловую систему, либо другие логические разделы. На физическом диске может быть до четырёх первичных разделов. Некоторые старые операционные системы — например, MS -DOS и Windows — могли быть установлены только на первичный раздел.
Расширенный и Логические разделы
Таблица разделов может содержать не более 4 первичных разделов, поэтому были изобретёны расширенный разделы. В расширенном разделе можно создать несколько логических разделов. Логические разделы выстраиваются в цепочку где информация о первом логическом разделе храниться в MBR, а информация о последующем хранится в первом секторе логического раздела. Такая цепочка позволяет (в теории) создавать неограниченное количество разделов, но (на практике) число логических разделов ограничивается утилитами и, обычно, больше 10 логических разделов не создать.
Важно отметить что некоторые версии Windows не могут загрузиться с логического раздела (нужен обязательно первичный раздел), тогда как для Linux никакой разницы в виде разделов — нет, Linux загружается и работает с разделами совершенно независимо от их вида (первичный или логический).
Выбор файловой системы
Подобно Windows, Linux за свою жизнь повидала несколько разных файловых систем. Ubuntu «понимает» файловые системы Windows, но не установится на них. Ubuntu может сразу же записывать и считывать из разделов FAT16, FAT32 и VFAT и NTFS. Однако Windows не может работать с файловыми системами Linux, и вам придётся передавать файлы в и из Windows из-под операционной системы Ubuntu.
Помимо знакомых файловых систем Windows, вы можете выбрать несколько таких, которые вы, возможно, не знаете. Среди таких файловых систем — ext4. Ext4 в настоящий момент является одной из самых подходящих файловых систем для настольной системы. Файловые системы ext3 и ext2 сейчас используются редко: ext3 — чуть более старая версия ext4, и не имеет никаких преимуществ перед ext4, а ext2 не имеет журналирования, без него при, системном сбое будет трудно восстановить данные. Файловые системы BTRFS, XFS, ReiserFS, Reiser4, JFS и т.д. также можно использовать, однако их стоит выбирать исходя из понимания особенностей этих ФС (стоит почитать немного о разных ФС, что бы сделать правильный выбор). Раздел «swap» предназначен только для виртуальной памяти и в отличие от других файловых систем ему не требуется точка монтирования.
Точки монтирования
Linux не назначает буквы каждому диску и разделу, как в Windows и DOS. Вместо этого вы должны задать точку монтирования для каждого диска и раздела. Linux работает по принципу иерархического дерева каталогов, где корневой каталог ( / ) является основной точкой монтирования, в которую по умолчанию входят все остальные. В отличии от Windows в Linux все используемые разделы дисков монтируются в подкаталоги корня, а не как отдельные устройства (C:, D: …).
К примеру, в /home хранятся все ваши персональные файлы. Если вы хотите разместить эти данные в отдельном от корня разделе, то создадите новый раздел и установите точку монтирования на /home. Это можно сделать для любого подкаталога. Во время установки Ubuntu предоставляет возможность задать следующие точки монтирования: /boot (начальный загрузчик и заголовки ядра), /dev (драйверы и устройства), /home (пользовательские файлы), /opt (дополнительное программное обеспечение), /srv (системные сервисы) /tmp (временные файлы), /usr (приложения), /usr/local (данные, доступные всем пользователям) и /var (server spool и логи). Также при установке можно создать и свои точки монтирования с произвольными именами.
Для типичной настольной системы нет никакого смысла выделять собственные разделы для /dev, /opt, /srv, /tmp, /usr/local и /var. Если вы планируете запускать более двух операционных систем или использовать шифрование корневого раздела, то возможно потребуется отдельный раздел для /boot. Иногда стоит также создать раздел для /usr, но только если вы уже имеете чёткое представление о том, сколько места займут приложения. Желательно создать отдельный раздел для /home. Это предоставит вам дополнительные удобства при обновлении и переустановке системы.
Минимально можно ограничится только двумя разделами: «root» и «swap», тогда /boot, /home, /usr и все остальные будут просто храниться в корневом разделе ( / ).
Структура файловой системы
Ubuntu поддерживает стандарт FHS 1) , описывающий какая информация должна находится в том или ином месте «дерева». Ниже приведена таблица с кратким описанием основных директорий.
Директория | Описание |
---|---|
/ | Корневая директория, содержащая всю файловую иерархию. |
/bin/ | Основные системные утилиты, необходимые как в однопользовательском режиме, так и при обычной работе всем пользователям (например: cat, ls, cp). |
/boot/ | Загрузочные файлы (в том числе файлы загрузчика, ядро и т.д.). Часто выносится на отдельный раздел. |
/dev/ | Основные файлы устройств системы (например физические устройства sata винчестеры /dev/sda, видео камеры или TV-тюнеры /dev/video или псевдоустройства, например «чёрные дыры» /dev/null, /dev/zero ). |
/etc/ | Общесистемные конфигурационные файлы, лежат в корне директории и файлы конфигурации установленных программ (имя происходит от et cetera). |
/etc/X11/ | Файлы конфигурации X Window System версии 11. |
/etc/apt/ | Файлы конфигурации пакетного менеджера Apt. |
/etc/samba/ | Файлы конфигурации сервера Samba, расшаривающего файлы по сети с windows машинами. |
/home/ | Содержит домашние директории пользователей, которые в свою очередь содержат персональные настройки и данные пользователя. Часто размещается на отдельном разделе. |
/lib/ | Основные библиотеки, необходимые для работы программ из /bin/ и /sbin/. |
/media/ | Точки монтирования для сменных носителей, таких как CD-ROM, DVD-ROM, flash дисков. |
/opt/ | Дополнительное программное обеспечение. |
/proc/ | Виртуальная файловая система, представляющая состояние ядра операционной системы и запущенных процессов в виде каталогов файлов. |
/root/ | Домашняя директория пользователя root. |
/sbin/ | Основные системные программы для администрирования и настройки системы, например, init, iptables, ifconfig. |
/srv/ | Данные, специфичные для окружения системы. |
/tmp/ | Временные файлы (см. также /var/tmp). |
/usr/ | Вторичная иерархия для данных пользователя; содержит большинство пользовательских приложений и утилит, используемых в многопользовательском режиме. Может быть смонтирована по сети только для чтения и быть общей для нескольких машин. |
/usr/bin/ | Дополнительные программы для всех пользователей, не являющиеся необходимыми в однопользовательском режиме. |
/usr/include/ | Стандартные заголовочные файлы. |
/usr/lib/ | Библиотеки для программ, находящихся в /usr/bin/ и /usr/sbin/. |
/usr/sbin/ | Дополнительные системные программы (такие как демоны различных сетевых сервисов). |
/usr/share/ | Архитектурно-независимые общие данные. |
/usr/src/ | Исходные коды (например, здесь располагаются исходные коды ядра). |
/usr/local/ | Третичная иерархия для данных, специфичных для данного хоста. Обычно содержит такие поддиректории, как bin/, lib/, share/. Она пригодится, когда /usr/ используется по сети. |
/var/ | Изменяемые файлы, такие как файлы регистрации (log-файлы), временные почтовые файлы, файлы спулеров. |
/var/cache/ | Данные кэша приложений. Сюда скачиваются пакеты перед их установкой в систему, здесь же они какое-то время и хранятся |
/var/lib/ | Информация о состоянии. Постоянные данные, изменяемые программами в процессе работы (например, базы данных, метаданные пакетного менеджера и др.). |
/var/lock/ | Lock-файлы, указывающие на занятость некоторого ресурса. |
/var/log/ | Различные файлы регистрации (log-файлы). |
/var/mail/ | Почтовые ящики пользователей. |
/var/run/ | Информация о запущенных программах (в основном, о демонах). |
/var/spool/ | Задачи, ожидающие обработки (например, очереди печати, непрочитанные или неотправленные письма). |
/var/tmp/ | Временные файлы, которые должны быть сохранены между перезагрузками. |
/var/www/ | Директория веб-сервера Apache, всё что находится внутри транслируется им в интернет (конфигурация по-умолчанию) |
Дисковые файловые системы, применяемые в Ubuntu
Как разбить жесткий диск для установки Ubuntu
Настоятельно рекомендуется при установке разбивать жесткий диск вручную, создавая как минимум 2 раздела (для корня файловой системы и для /home), что в последствии облегчает процессы обновления, переустановки, восстановления системы или переход на другой дистрибутив.
Для разбития жесткого диска можно воспользоваться программой GParted, входящей в состав LiveCD Ubuntu или же любой другой программой поддерживающей необходимые вам файловые системы.
Расположение разделов на жестком диске
Есть мнение, что физическое место положения раздела (в начале или конце диска, соответственно ближе или дальше к\от шпинделя диска) определяет скорость обращения к разделу. Возможно это и так, но на современных компьютерах разница почти не заметна. Если же вы всё таки хотите разбить жесткий диск правильно расположив разделы, то ближе к шпинделю диска (первым) необходимо создавать swap, так как в него чаще всего будет записываться информация и головка диска будет часто обращаться именно к этому месту 2) , далее раздел для корня системы и в конце- раздел для /home.
Нужен ли SWAP?
Раздел SWAP используется системой при нехватке оперативной памяти и для спящего режима, поэтому его необходимость определяется двумя факторами: размером оперативной памяти 3) и намерением использовать спящий режим.
Более подробную информацию о SWAP вы можете прочитать в статье SWAP.
Объем раздела для корня файловой системы
Свежеустановленная система Ubuntu занимает 4-6 Гб дискового пространства, однако при активном использовании (установке большого количества программ, увеличении кэша программ, и т.д.) или возникновении сбоев в работе, что приводит к росту объема папок с логами системы (/var/log) может понадобиться большее количество дискового пространства, поэтому для корня файловой системы необходимо выделять раздел 10-15Гб.
Объем раздела для /home
Разделу с папкой /home обычно отдают всё оставшееся пространство, если Ubuntu будет единственной системой на ПК и все мультимедиа данные будут храниться в ней, или, в случае установки рядом с Windows, выделяют отдельный раздел в формате NTFS для мультимедиа данных, а раздел для /home делают минимальным только для хранения файлов конфигурации.
Перенос папки /home на новый раздел после установки
Часто возникает желание привести в порядок неправильно разбитый жесткий диск при установке Ubuntu. При этом возникает необходимость перенести папку /home на отдельный раздел жесткого диска. Ниже приведена краткое руководство действий для выполнения этой задачи.
Создание отдельного раздела
Загрузите компьютер с LiveCD(LiveUSB);
Создайте новый раздел в неразмеченной области или отделив необходимое количество свободного пространства от уже существующего. Отформатируйте его в выбранную вами файловую систему.
Перенос данных на новый раздел
загрузитесь с LiveCD(LiveUSB)
примонтируйте раздел c корнем системы и раздел с будущим расположением /home к текущей файловой системе (заменив sda1 и sda2 своими значениями)
переместите папку /home на новый раздел
посмотрите UUID нового раздела
добавьте в файл
(fstab файл установленной на жестком диске системы) строку (заменив UUID на свой, естественно):
Источник