Файловые системы против разделов против каталогов


30

Я новичок в Linux, так что извините за возможную путаницу, с которой вы можете столкнуться в этом вопросе.

Из того, что я понимаю, файловая система определяет, как раздел хранит / управляет файлом, с такими стандартами, как ext2, ext3, reiserfs, xfs и т. Д. Иногда я вижу, что люди, кажется, ссылаются на каждое " directory" как

    /boot filesystem
    /usr/bin filesystem
    /root filesystem
    /bin filesystem

Почему мы называем это filesystems?

Если каждый из них является раздел, что меня смущает , потому что, насколько я знаю, /usrи , как /usr/binправило, в том же разделе, но я видел людей , относится к обоим /usr filesystemи /usr/bin filesystem.

Если filesystemздесь это эквивалентно Windows directory, мне не ясно, поскольку файловая система - это нечто большее, чем просто каталоги. Также, насколько я знаю, у Linux нет directoryконцепции; все файлы.


Я никогда не видел экземпляра "файловой системы / root". Независимо от того, какая файловая система смонтирована в «/», это «корневая файловая система». Другими вероятными точками монтирования в современном дистрибутиве Linux могут быть «/ boot», «/ home» и «/ mnt / xx» или «/ media / xx» для различных значений «xx». Дистрибутивы ядра 2.x + (?) Будут иметь "/ proc" и "/ sys", Systemd имеет точки монтирования "/ var / run / nnnn" для различных числовых UID nnnn. Старые версии Unix могут монтировать "/ usr" через NFS, но это вряд ли в личном дистрибутиве Linux. «/ bin» и «/ usr / bin» обычно не являются отдельными точками монтирования.
Дэвид

Есть / root , не так ли? Вы имеете в виду, что он никогда не находится в отдельной файловой системе?
Кенни

Правильно. «/ root» является стандартным домашним каталогом для пользователя «root», но обычно это просто еще один каталог в корневой файловой системе.
Дэвид

Эта тема широко обсуждалась в Ask Ubuntu , что, IMNSHO, глупо, поскольку, AFAIK, концепции в Ubuntu ничем не отличаются от того, что они есть в любой другой форме Unix или Linux. Например, что такое «крепление»? спросили всего несколько дней назад.
Скотт

Я весьма впечатлен вопросами. Исходя из небольшого количества знаний, вы уже могли понять довольно много в это время, и что вы пропустили вывод, что «/ корневая файловая система» может относиться к файловой системе, в которой находится раздел, который смонтирован /root, я думаю, что это отвергается, учитывая сложность ситуация.
erikbwork

Ответы:


14

Как я писал в https://superuser.com/a/293160/38062 :

Проблема здесь заключается в слове «файловая система». В мирах POSIX / Unix / Linux это означает несколько разных вещей.

  1. «Файловая система» иногда представляет собой целую систему файлов, основанную на /ядре операционной системы и представленную прикладным программным обеспечением. Под этим значением люди говорят, например, об операционных системах POSIX, имеющих «одно дерево файловой системы ».
  2. «Файловая система» иногда представляет собой один (или несколько) слайс (ов) из (или нескольких) DASD (ов) - одну или несколько коллекций смежных секторов диска, отформатированных в виде одного тома с заданным форматом - как обозначено некоторым разбиением диска схема. С этим значением люди говорят, скажем, о «форматировании моей /usrфайловой системы ». " /usr" здесь - это (ожидаемая) точка монтирования тома или (в некоторых схемах разбиения) его метка идентификации.
  3. «Файловая система» иногда представляет собой абстрактное объединяемое дерево файлов и каталогов, представленное драйвером файловой системы (т. Е. Уровнем VFS) для остальной части системы. С этим значением, люди говорят, скажем, «установка ргос файловой системы на /proc» или « с помощью TMPFS файловой системы для /tmp».

Вы видите значение №1, когда видите « /usr/binфайловую систему». Это дерево файловой системы с корнем в каталоге /usr/bin. Да, Linux очень делает есть понятие каталогов.

Значение № 2 и значение № 3 - это то, что вы неправильно читаете. Люди не говорят о /usr/binнаборе данных на диске, разграниченном нарезкой / разбиением диска. При этом речь не идет о /usr/binконкретном типе драйвера файловой системы или конкретном формате тома диска.

дальнейшее чтение

  • Рамеш Бангиа (2010). "файловая система". Словарь информационных технологий . Laxmi Publications, Ltd. ISBN 9789380298153. с. 224.
  • Файловая система . «Базовые определения». Базовые спецификации Open Group . Выпуск 7 IEEE 1003.1. Открытая группа. 2013.
  • Бинь Нгуен (2004-08-16). "файловая система". Словарь Linux . Версия 0.16. п. 616.

8

Конечно, Linux использует концепцию каталогов. Концепция каталогов такая же, как в Windows.

Понятие файловых систем также очень похоже на то, что используется в Windows. Windows обычно использует NTFS или FAT - Linux обычно использует ext2, ext3, ext4 и т. Д., В этом вся разница.

Отличие состоит в том, что в Linux файлы / каталоги из всех доступных разделов организованы в одно дерево. В Windows вы обращаетесь к различным разделам, используя букву, например, «a:», «c:», в Linux полный путь к любому доступному файлу начинается с «/» - корневого каталога. Например, на вашем жестком диске есть отдельный раздел с файлами, восстановленными для загрузки системы: вы запускаете команду «mount» с соответствующими аргументами, и содержимое этого раздела становится доступным по пути «/ boot /». Таким образом, например, пути "/ boot" и "/ home" могут ссылаться на данные в разных разделах, эти разделы могут иметь разные файловые системы. Вероятно, вызвало ваше недоразумение.

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

(Незначительное и, возможно, несущественное исправление: иногда файловая система является виртуальной, и нет соответствующего раздела. Например, «/ proc» содержит что-то, очень похожее на файлы, но эти «файлы» являются виртуальными, они не находятся на любой жесткий диск и содержит информацию о запущенных процессах. И есть специальная файловая система "procfs", которая обеспечивает обычный файловый интерфейс для этих данных)


Вы упомянули «файловую систему каталога», она каскадно распространяется на все свои подкаталоги. Возможно ли, чтобы один каталог и его подкаталоги имели разную файловую систему? Например / д и / а / б , с / б в другой раздел со своей собственной файловой системой F2 , установленным на вид имеющую файловой F1?
Кенни

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

@ Кенни Да, ты прав. Живой пример: я вставляю компакт-диск в CD-привод. Мой linux монтирует компакт-диск в "/ mount / cdrom". Каталог / mount (и любые файлы, которые я в нем создаю) находится на моем жестком диске. Но содержимое "/ mount / cdrom" уже есть на CD.
Лесник

6

Диск разделен на один или несколько разделов . Для Windows обычно есть только один, может быть, с разделом восстановления, где-то скрывающимся. Раздел - это логически непрерывная область диска, например, «секторы с 1 по 10 000 000».

На раздел может быть встроена файловая система. Для Windows это NTFS или FAT; для Linux это одна из extверсий или другие варианты.

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

Как операционная система представляет пользователю несколько разделов на нескольких дисках? В Windows это делается с помощью букв дисков : C:и D:т. Д. В Linux нет букв дисков, и все выполняется с помощью точек монтирования : в определенном каталоге перенаправьте доступ к другой файловой системе. (+) Часто, если вы вставляете компакт-диск или флешка появится где-то под /mediaили /mnt.

/usrи /usr/binобычно будет в той же файловой системе, но не обязательно. Люди могут иметь в виду «файловую систему, которая содержит /usr/binкаталог», когда они используют эту фразу.

(+) Вы можете сделать это и с точками соединения NTFS, но люди редко делают это. Пока у них не заканчиваются буквы дисков.


Поправьте меня, если я ошибаюсь: в Linux 1 физический диск можно разделить на несколько разделов, каждый из которых имеет свою файловую систему? Аналогично тому, как жесткий диск в Windows содержит несколько разделов, один может быть FAT, а другой NTFS?
Кенни

1
Да, вы правы: но это не аналог, это точно такой же основной механизм. Машины с двойной загрузкой могут иметь разделы NTFS и ext3 на одном диске, и диспетчер дисков каждой операционной системы видит один и тот же набор разделов. Просто Windows не может увидеть монтирование разделов ext3, чтобы увидеть файлы.
pjc50

3

Можно хранить всю систему Linux в одном разделе, причем все подкаталоги находятся в одной файловой системе.

Также возможно распределить его по нескольким разделам, причем определенные поддеревья каталогов находятся в разных файловых системах. Например, это общее положить /home, /tmp, /usrи /varна отдельных файловых системах. Чтобы ответить на один из ваших вопросов, иногда /usr/binбудет и собственная файловая система.

Есть преимущества этой схемы. Например, если /varзаполнено большим количеством электронных писем, остальная часть системы не затрагивается. Аналогично, если одна файловая система повреждена из-за сбоя или чего-то еще, другие файловые системы все еще исправны, и систему проще восстановить.

Когда система загружается, сначала доступна только корневая файловая система. Хранящиеся там программы запускаются во время процесса загрузки. Одна из этих программ mountзапускается несколько раз, используя данные из файла /etc/fstab, таблицы файловой системы. Возьмем один пример: изначально /homeэто просто обычный каталог в корневой файловой системе. Затем мы запускаем эту команду как root:

mount /dev/sda7 /home

Это говорит системе, что файловая система в разделе /dev/sda7 должна быть смонтирована в каталоге /home. Так что теперь все в этой файловой системе считается под /home.

Вы можете увидеть, что сейчас установлено, запустив df.


3

Мы иногда называем их так filesystems, потому что иногда эти каталоги являются точками монтирования. Вот вам и единственный вопрос, который вы задали ...

filesystem может ссылаться на две разные вещи ... или на самом деле две очень разные аспекты одного и того же:

  1. Логическая структура, используемая для организации данных на носителе.
  2. Методология, используемая ОС для предоставления процессам унифицированного доступа к данным.

Концепция файлов и каталогов является метафорой. Для компьютера есть только данные, а все носители - это не что иное, как устройства, которые могут хранить данные. Некоторые устройства допускают чтение и запись данных (например, HDD), другие устройства позволяют только чтение данных (например, CD-ROM), и есть даже устройства, которые разрешают только запись данных (например, принтер). Мы используем метафору файла и каталога для структурирования данных, чтобы мы могли получить доступ к небольшим фрагментам данных, а не ко всем одновременно.

Файловые системы, которые мы помещаем на носитель, например ext4, xfs, fat, выполняют структурирующую часть. Мы используем их для размещения меток на порциях данных (файлов) и для получения согласованного структурированного списка всех меток (каталогов). Структурированный список на самом деле является деревом. Наиболее важным аспектом является то, что дерево имеет ровно одно начало, его корень. Поддержание этой структуры и обеспечение доступности и доступности данных - это довольно сложная задача, поэтому не существует только одного вида файловой системы.

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

  1. ОС предлагает ровно один (программный) интерфейс для доступа и взаимодействия с файлами и каталогами. Для программ / процессов не имеет значения, является ли файловая система на устройстве хранения ext2, xfs, fat или чем-то еще. Программы / процессы обращаются к файлам и каталогам единообразным способом.

  2. ОС организует все носители, то есть их файловые системы, в одну подчиненную структуру. Программы получают доступ к файлам и каталогам через эту подчиненную структуру и не должны напрямую взаимодействовать с устройствами хранения. Таким образом, программы не должны заботиться о том, на каком устройстве фактически находятся данные. Эта структура высшего уровня часто упоминается как «виртуальная файловая система» ядра.

Добавление файловой системы устройства хранения в виртуальную файловую систему называется «монтированием» файловой системы. Когда ваш Linux запускается, ядро ​​создает виртуальную файловую систему (VFS). Сразу после создания он пуст и состоит только из его точки входа, то есть его корня, транскрибированного /. Затем ядро ​​монтирует файловую систему в корне VFS. Это либо виртуальный диск, либо непосредственно файловая система в разделе на жестком диске. Поскольку он добавляется в корень VFS, этот раздел часто называют корневой файловой системой.

Теперь наступает момент, когда линии размываются, и мы видим, что файловые системы на устройствах хранения и VFS ядра на самом деле являются двумя аспектами одной и той же задачи ОС: при монтировании корневой файловой системы VFS содержит много файлов и каталогов, которые все существует в корневом разделе. Однако каждый каталог может стать «точкой монтирования». Точка монтирования - это место, где VFS помещает точку входа в файловую систему на устройстве хранения. Это означает, что всякий раз, когда мы монтируем файловую систему в каталоге, мы сообщаем VFS, что вместо доступа к данным, хранящимся в этом каталоге, мы предпочитаем доступ к данным на другом устройстве хранения. Точки монтирования обычно представляют собой пустые каталоги, поэтому мы не делаем данные недоступными, монтируя другие файловые системы сверху.

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

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

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


1

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

Даже окно использования файловых систем , такие как NTFSили, ранее, FAT.

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

Таким образом, FS не эквивалентен каталогу, а также в Linux есть каталоги, которые представляют собой особый вид файла

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.