У меня возникают проблемы с пониманием, что такое файловая система Linux.

Я понимаю, что это "каталог" файлов и папок, расположенных в системе: например, /bin , /sbin , /etc , /opt и так далее. Тем не менее, я также слышу такие вещи, как:

«Мне просто нужно установить файловую систему на этот диск».

Это просто относится к структуре папок в Linux? Как это связано с типами файловых систем ext2 , ext3 , ext4 и как они точно установлены?

1 ответ1

3

TL; DR:

Файловая система - это структура метаданных, описывающая двоичные данные на диске для операционной системы. Поскольку ОС должна использовать его, должен существовать драйвер, который знает, как читать метаданные, и использовать его для чтения / записи данных файла. Если ваша ОС не поддерживает данную файловую систему, вам необходимо установить драйвер для нее. Прежде чем ОС сможет использовать драйвер для работы с конкретным диском, диск должен быть отформатирован для файловой системы, поддерживаемой драйвером. Организация файлов операционной системы определяется самой ОС, и ее лучше всего назвать "структурой каталогов", но некоторые люди неправильно называют ее "файловой системой", как в "файловой системе BSD", но это несколько неоднозначно и должно вероятно, следует избегать.

Вся история:

Жесткий диск очень похож на доску, на которой кто-то написал кучу 1 и 0. Данные более или менее непрерывны по всей доске, и эти данные представляют все файлы на диске. Это немного сложнее, но это хорошая аналогия.

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

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

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

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

С практической точки зрения Microsoft предпочитает файловую систему NTFS в настоящее время. Windows реализует в своем ядре драйвер низкого уровня, который точно знает, как использовать диск в формате NTFS. Linux поддерживает множество файловых систем с различной степенью поддержки. Многие из модулей являются встроенными драйверами ядра, но для менее распространенных или более передовых файловых систем администратор должен загрузить модуль ядра или драйвер и установить его. Это может быть то, что имеют в виду ваши друзья, когда говорят "Установка файловой системы", но, исходя из вашей полной цитаты, я думаю, что они говорят:"Мне нужно отформатировать этот диск с этой файловой системой". В Windows вы можете установить поддержку Ext3 , а в старых дистрибутивах Linux вам пришлось устанавливать пакет ntfs-3g вручную, чтобы прочитать NTFS, но вы устанавливаете их в ОС, а не на диск. Форматирование происходит на диске.

Точная процедура установки для файловой системы варьируется от ОС к ОС, а также зависит от того, как разработчик решит упаковать и распространить драйвер. В Debian некоторые могут быть в apt-get, некоторые могут быть загружены как двоичные файлы, другие - как исходный код для компиляции. некоторые из них могут быть пользовательскими, другие могут нуждаться в загрузке в ядро или даже требовать пользовательской компиляции ядра со специальными параметрами сборки.

Структура каталогов операционной системы иногда в разговорной и неправильной форме называется "файловой системой Linux" или "файловой системой Windows", но это неточное (или, по крайней мере, неточное) утверждение. Это очевидно, потому что вы можете установить Windows на FAT32 или NTFS, и структура каталогов в любом случае одинакова. Ubuntu в ext3, ZFS, MurderFS, BTRFS или AFS всегда помещает свои журналы в /var /log, а свои профили в /home по умолчанию. Эти структуры могут отличаться от дистрибутива к дистрибутиву, даже если файловая система одинакова.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .