Для тех, кто привык работать только в Windows, файловая система Linux может показаться странной и непонятной. Но только до того момента, когда вы поймёте, насколько там всё просто и логично организовано.
Для начала во избежание путаницы определимся с терминологией. Диском будем называть физическое устройство для хранения данных (HDD, SSD, флешка, …), а разделом − логически выделенную и специальным образом организованную часть диска из смежных блоков, которая в Windows обычно называется диском C:, D:, …
Важное замечание. В отличие от Windows, где имена папок нечувствительны к регистру символов, в Linux это имеет значение. Файловая система Linux различает файлы readme.txt, README.txt и ReadMe.txt − это будут разные файлы, хотя Windows будет считать их одним и тем же файлом.
Любое устройство − файл!
Первое, что нужно понять, хотя с непривычки сложно: любое устройство в Unix-подобных операционных системах также является файлом. И с «точки зрения» операционной системы HDD − тоже файл. И процессор, и видеокарта, и звуковая карта, и сетевая − в общем, всё. Это может показаться нелогичным, но на самом деле есть большой плюс − унификация работы с устройствами. Если есть файл, в него можно записывать данные и из него можно читать. А теперь вспоминаем всё разнообразие драйверов в Windows, чему можно бесконечно удивляться − с каждым типом устройств нужно работать по-разному.
Файловая система Linux позволяет получить доступ к любому устройству компьютера, только следует принять во внимание, что для доступа ко многим устройствам нужны права администратора.
Но и это ещё не всё. Сложно представить файл, состоящий из файлов, но в Linux такое может быть. Например, /dev/cpu − процессор, а /dev/cpu0, /dev/cpu1 − его ядра. Аналогичная ситуация с дисковыми накопителями: /dev/sda − первый диск в системе, а /dev/sda1, /dev/sda2, … − его разделы.
Файловая структура
Файлы и папки имеют свои пути, которые можно указать относительно корневной папки / (в таком случае путь начинается со слэша /), или относительно текущей папки (путь начинается с любого иного символа).
Обращаю внимание, что нумерация разделов диска, в отличие от остальных устройств, начинается не с нуля, а с единицы.
Но это ещё не всё. В Unix-подобных системах (а это не только Linux, но и FreeBSD, и Android, и даже MacOS), в отличие от Windows, вообще нет логических дисков. Вы спросите, почему? А они там попросту не нужны − принципы организации дискового пространства там иные. Все разделы диска организованы в единую файловую структуру. В качестве примера приведу свою недавнюю установку Linux Mint на компьютер одного товарища. Всего на терабайтном диске организовано пять разделов:
- 100 мегабайт − загрузчик UEFI.
- 20 гигабайт − системный корневой раздел.
- 10 гигабайт − домашние папки пользователей.
- 10 гигабайт − раздел подкачки (виртуальная память).
- Всё оставшееся (по факту чуть менее 900 гигабайт) − пользовательские данные.
Если вы заметили несоответствие размеров, это нормально. Дело в том, что производители жёстких дисков указывают размеры в десятичных единицах (1 килобайт = 1000 байт), а операционные системы работают с двоичными (1 килобайт = 1024 байта). И один «десятичный» терабайт соответствует примерно 0,909 «двоичного».
Единое пространство
Привычных пользователям Windows дисков, обозначаемых буквами, вы не найдёте, поскольку все дисковые разделы будут видны как отдельные папки в корневом разделе /.
Корневой (основной) раздел в обязательном порядке создаётся при установке Linux, он имеет путь /, а относительно него монтируются все остальные разделы.
При перемещении по файловой системе пользователь не замечает перехода с одного раздела в другой, поскольку они монтируются (можно сказать «подключаются», но в Linux принят именно такой термин) как локальные папки. Например, первый раздел с загрузчиком монтируется в /boot/efi, второй является корневым /, третий монтируется в /home, а последний в /mnt/userdata. На самом деле, куда монтировать данные, выбор большой и в значительной мере определяется вкусом того, кто устанавливает систему. Раздел подкачки в монтировании не нуждается. А если не создать отдельного раздела для домашних папок пользователей, они будут являться обычной папкой в корневом разделе.
Это не означает, что доступное место на диске можно использовать под любую папку. Если на раздел с домашними папками /homes выделено 10 гигабайт, то больше туда не сохранить при всём своём желании.
А если вы подключите к компьютеру флешку, она тоже будет смонтирована в папку /media/имя_пользователя/метка_флешки. И с точки зрения системы, флешка будет файлом /dev/sdb, а раздел с данными на ней − либо /dev/sdb1, либо /dev/sdb4.
То есть, файловая система Linux организована просто и логично − единая организация дисков без необходимости использования специальных обозначений в виде букв, со всем можно работать как с файлами.
Comments: