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


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тут еквівалент Window 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 файлова система" може посилатися на файлову систему, на яку встановлений розділ /root, я вважаю, що це не можна використовувати з огляду на складність ситуація.
erikbwork

Відповіді:


14

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

Проблема тут - слово "файлова система". У світі POSIX / Unix / Linux використовується для позначення кількох різних речей.

  1. "Файлова система" іноді є цілою системою файлів, корінням /якої є ядро ​​операційної системи та представлена ​​програмним забезпеченням програм. З цим значенням люди говорять, наприклад, про операційні системи POSIX, що мають "єдине дерево файлових систем ", наприклад.
  2. "Файлова система" іноді є одним (або більше) фрагментами ( або декількома) DASD (s) - однією або декількома колекціями суміжних секторів дисків, відформатованих у вигляді одного тома з заданим форматом - як окреслено деяким розділом диска схема. З цим значенням люди говорять про, наприклад, "форматування моєї /usrфайлової системи ". « /usr» Ось (очікується) точка_монтірованіі обсягу, або (в деяких схемах поділу) його ідентифікує етикетки.
  3. "Файлова система" - це іноді абстрактне приєднане дерево файлів і каталогів, представлене драйвером файлової системи (тобто шаром VFS) для решти системи. З цим значенням люди говорять про, скажімо, "встановлення файлової системи proc/proc " на "або" за допомогою файлової системи tmpfs для /tmp".

Ви бачите значення №1, коли бачите " /usr/binфайлову систему". Це дерево файлових систем, корінне в каталозі /usr/bin. Так, Linux дуже робить є поняття каталогів.

Значення №2 і значення №3 - це те, що ви неправильно читаєте. Люди не говорять про /usr/binдисковий набір даних, розмежований нарізанням / розділенням дисків. Вони також не говорять про /usr/binпевний тип драйверів файлової системи або певний формат гучності диска.

Подальше читання

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

8

Звичайно, Linux використовує концепцію каталогів. Поняття каталогів таке ж, як у Windows.

Поняття файлових систем також дуже схоже на те, що використовується в Windows. Windows зазвичай використовує NTFS або FAT - Linux зазвичай використовує ext2, ext3, ext4 і так далі, в цьому і вся різниця.

Відмінність полягає в тому, що в Linux файли / каталоги з усіх доступних розділів організовані в одне дерево. У Windows ви посилаєтесь на різні розділи, використовуючи літеру, fe "a:", "c:", в Linux повний шлях до будь-якого доступного файлу починається з "/" - кореневої директорії. Наприклад, на вашому hdd є окремий розділ з файлами, отриманими для завантаження системи: ви запускаєте команду 'mount' з відповідними аргументами, і вміст цього розділу стає доступним на шляху "/ boot /". Отже, шляхи fe "/ boot" та "/ home" можуть посилатися на дані про різні розділи, ці розділи можуть мати різні файлові системи. Можливо, це спричинило ваше нерозуміння.

Каталоги, які фізично розташовані на одному розділі, завжди "мали б однакову файлову систему". Коли хтось говорить про файлову систему деякого каталогу, це насправді про файлову систему розділу, де знаходиться цей каталог.

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


Ви згадали про "файлову систему каталогу", чи це вона каскадує до всіх своїх підкаталогів. Чи можливо одна директорія та її підкаталоги мати різні файлові системи? Наприклад , / а і / а / б , з / б ще один розділ з його власної файлової системи F2 , встановлений на більш має файлову систему F1?
Кенні

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

@Kenny Так, ти маєш рацію. Живий приклад: я вставляю компакт-диск в компакт-диск. Мій Linux монтує компакт-диск на "/ mount / cdrom". Каталог "/ mount" (і будь-які файли, які я створюю в ньому) знаходиться на моєму жорсткому диску. Але вміст "/ mount / cdrom" вже є на компакт-диску.
lesnik

6

Диск розділений на один або кілька розділів . Для Windows зазвичай є лише один, можливо, з розділом відновлення десь ховається. Розділ - це логічно суміжна область диска, наприклад, "сектори з 1 по 10 000 000".

На розділі може бути побудована файлова система. Для Windows це NTFS або FAT; для Linux це одна з extверсій або різні інші параметри.

Всередині файлової системи знаходяться файли та каталоги. У Linux є каталоги, я не маю уявлення, як ви зрозуміли, що це не так.

Як операційна система представляє користувачеві кілька розділів на декількох дисках? У Windows це робиться за допомогою букв диска : C:і D:т. Д. У Linux немає літер диска, і все робиться за допомогою пунктів монтування : у певному каталозі перезавантажуйте доступ до іншої файлової системи. (+) Часто, якщо ви вставляєте компакт-диск або USB-накопичувач з’явиться десь під /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це просто звичайний каталог у кореневій файловій системі. Потім ми запускаємо цю команду як корінь:

mount /dev/sda7 /home

Це повідомляє системі, що файлова система на розділі /dev/sda7 повинна бути встановлена в каталозі /home. Отже, все, що у тій файловій системі вважається під /home.

Ви можете побачити, що зараз встановлено, запустивши df.


3

Іноді ми називаємо їх такими filesystems, тому що іноді ці каталоги - це точки монтажу. Стільки за єдине питання, яке ви задали ...

filesystem може посилатися на дві різні речі ... або насправді два дуже різні аспекти одного і того ж:

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

Поняття файлів і каталогів - метафора. На комп'ютері є лише дані, а всі носії інформації - це не що інше, як пристрої, на яких можна зберігати дані. Деякі пристрої дозволяють читати та записувати дані (наприклад, жорсткий диск), інші пристрої дозволяють лише зчитувати дані (наприклад, CD-ROM), а є навіть пристрої, які дозволяють записувати дані (наприклад, принтер). Ми використовуємо метафору файлів і каталогів для структурування даних, щоб ми могли отримати доступ до невеликих фрагментів даних, а не до всіх одночасно.

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

Інший аспект файлових систем полягає в тому, що завдання ОС - зробити дані, що зберігаються на пристроях зберігання даних, доступними для всіх програм. Це досягається двома речами:

  1. ОС пропонує точно один (програмуючий) інтерфейс для доступу та взаємодії з файлами та каталогами. Для програм / процесів не має значення, чи файлова система на накопичувальному пристрої ext2, xfs, жир чи інше. Прогами / процеси обробляють доступ до файлів і каталогів рівномірно.

  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.