Какие файловые системы поддерживает Linux
Обновлено: 21.11.2024
Файловые системы — это одна из вещей, с которыми должен ознакомиться любой новичок в Linux. В мире Microsoft вам никогда не придется беспокоиться об этом, по умолчанию используется NTFS. Однако Linux, основанный на открытом исходном коде и различных мнениях, не имеет таких ограничений, поэтому пользователь должен понимать, что такое файловая система и как она влияет на компьютер.
В основе компьютера лежат все единицы и нули, но организация этих данных не так проста. бит равен 1 или 0, байт состоит из 8 бит, кибибайт равен 1024 (т.е. 2^10) байт, мебибайт равен 1024 кибибайт и т.д. и так далее. Все эти биты и байты постоянно хранятся на жестком диске. Жесткий диск хранит все ваши данные, каждый раз, когда вы сохраняете файл, вы записываете тысячи единиц и нулей на металлический диск, изменяя магнитные свойства, которые позже можно прочитать как 1 или 0. На жестком диске так много данных. жесткий диск, что должен быть какой-то способ его организовать, например, библиотеку книг и старые ящики для карточек, которые индексировали их все, без этого индекса мы бы заблудились. Библиотеки по большей части используют Десятичную систему Дьюи для систематизации своих книг, но существуют и другие системы для этого, ни одна из которых не достигла такой же известности, как изобретение г-на Дьюи. Файловые системы такие же. Большинство пользователей знают, что Windows использует системы vFat или NTFS, это файловые системы Windows по умолчанию.
Существует несколько различных атрибутов, необходимых для определения файловых систем, в том числе максимальный размер файла, максимальный размер раздела, независимо от того, журналируются они или нет.
Журналируемая файловая система более надежна, когда речь идет о хранении данных. Журналируемые файловые системы не обязательно предотвращают повреждение, но они предотвращают несогласованность и намного быстрее проверяют файловую систему, чем нежурналируемые файловые системы. Если во время сохранения файла произойдет сбой питания, сохранение не будет завершено, и вы получите поврежденные данные и несовместимую файловую систему. Вместо фактической записи непосредственно в ту часть диска, где хранится файл, журналируемая файловая система сначала записывает его в другую часть жесткого диска и отмечает необходимые изменения в журнале, а затем в фоновом режиме просматривает каждую запись в журнал и начинает выполнять задачу, а когда задача выполнена, он отмечает ее в списке. Таким образом, файловая система всегда находится в согласованном состоянии (файл был сохранен, журнал сообщает, что он не полностью сохранен, или журнал несогласован (но может быть восстановлен из файловой системы)). Некоторые журналируемые файловые системы также могут предотвратить повреждение путем двойной записи данных.
Ниже приведено очень краткое сравнение наиболее распространенных файловых систем, используемых в мире Linux.
Цель этой публикации – предоставить системным администраторам обзор и сравнение файловых систем, доступных в Linux.
Файловые системы Linux
Одной из самых интересных особенностей ОС Linux является разнообразие файловых систем. Файловые системы могут быть определены и построены на основе разделов. Файловые системы VFAT, ext2, ext3, ext4 и Reiser могут сосуществовать в одной системе Linux вместе с несколькими другими файловыми системами и необработанными разделами.
Ваш выбор, какой из них использовать, зависит от возможности поддержки, надежности, безопасности и производительности. Oracle обычно не сертифицирует свои продукты по файловым системам, но сертифицирует операционные системы. Однако для некоторых дистрибутивов Linux Oracle может выбрать сертификацию для разных файловых систем. В зависимости от версии Linux может включать системы хранения ext2, ext3, ext4, btrfs и NFS (например, NetApp).
Рекомендуемые файловые системыM
Для ОС Linux доступны различные файловые системы:
- Файловые системы ext2, ext3, ext4 надежны. ext2 была файловой системой по умолчанию в ядре 2.2. ext3 — это просто улучшенная файловая система ext2 с возможностью ведения журнала. ext3 является файловой системой по умолчанию для RHEL 3 и 4. ext4 был разработан как преемник ext3. Он предоставляет функции для больших файловых систем, производительности, повышенных ограничений и надежности.
- Oracle Cluster File System (OCFS) — это общая файловая система, разработанная специально для Oracle Real Application Cluster (RAC). OCFS устраняет необходимость связывания файлов базы данных Oracle с логическими драйверами. Тома OCFS могут охватывать один общий диск или несколько общих дисков для обеспечения избыточности и повышения производительности.
- OCFS2 — это следующее поколение файловой системы Oracle Cluster для Linux. Это основанная на экстенте файловая система, совместимая с POSIX. В отличие от предыдущей версии (OCFS), OCFS2 — это файловая система общего назначения, которую можно использовать для общих домашних установок Oracle, что еще больше упрощает управление установками Oracle Real Application Cluster (RAC).
- XFS обеспечивает высокую масштабируемость и обеспечивает производительность операций ввода-вывода, близкую к естественной, даже если файловая система охватывает несколько устройств хранения.
- Один узел: любая файловая система, поддерживаемая поставщиком Linux. Обратите внимание, что любые проблемы с файловой системой должны решаться поставщиком Linux.
- Многоузловые (RAC): OCFS, необработанные, системы хранения на основе NFS (например, NetApp).
Характеристики файловой системы
При выборе файловой системы производительность не является самым важным моментом. Например, если существует риск повреждения, потери или компрометации данных, не следует использовать быструю файловую систему. Oracle не поддерживает файлы в файловых системах, не поддерживающих кэширование со сквозной записью. Файловая система должна подтверждать операции записи. Например, стандартная NFS основана на UDP, сетевом протоколе, который не включает механизм подтверждения. Одним из поставщиков поддерживаемой сетевой файловой системы является Network Appliance, и они используют модифицированный протокол NFS.
Кроме того, существуют требования безопасности. СУРБД Oracle и файлы базы данных требуют специальных прав доступа к файлам, которые недоступны в некоторых файловых системах (например, VFAT). Если определенные права доступа к файлам не установлены должным образом, Oracle RDBMS не работает должным образом. Файлы данных должны быть доступны только для владельца базы данных. Сервер базы данных должен иметь возможность контролировать доступ ко всем другим файлам и данным.
Ведение журналов — популярная характеристика. Основным преимуществом является то, что изменения в файловой системе записываются в файл журнала. Если сервер выходит из строя или выключается без синхронизации диска, файл журнала можно применить к файловой системе. Проверка целостности и восстановление таких файловых систем выполняются очень быстро. Это очень заметно во время загрузки системы. Команда fsck проверяет журналируемые файловые системы быстрее, чем нежурналируемые файловые системы.
Одноузловые (локальные) файловые системы
ext2, ext3, ext4
– Файловые системы ext2, ext3 и ext4 тесно связаны между собой.
– ext2 можно конвертировать в ext3.
– ext3 можно монтировать как файловую систему ext2.
– ext3 — это журналируемая файловая система.
– ext3 имеет несколько улучшений производительности по сравнению с ext2.
– ext3 можно монтировать как ext4.
– ext4 обладает всеми функциями, предоставляемыми ext3, и предоставляет функции для больших файловых систем, производительности, повышенных ограничений и надежности.
РайзерФС
– это файловая система по умолчанию для Novell/SuSE Linux. В дистрибутивах RedHat он по умолчанию не установлен, но необходимые пакеты есть на носителе дистрибутива.
– ReiserFS в настоящее время находится в режиме обслуживания с SuSE/Novell.
бтрфс
– Из вики Btrfs: Btrfs — это новая файловая система копирования при записи (CoW) для Linux, предназначенная для реализации расширенных функций с упором на отказоустойчивость, восстановление и простоту администрирования.
– Btrfs, совместно разработанная Oracle, Red Hat, Fujitsu, Intel, SUSE, STRATO и многими другими, распространяется под лицензией GPL и открыта для любого участника.
XFS обеспечивает высокую масштабируемость и обеспечивает производительность операций ввода-вывода, близкую к естественной, даже если файловая система охватывает несколько устройств хранения. Дополнительную информацию см. в разделе Файловая система XFS в Oracle Linux.
Многоузловые (общие/кластерные) файловые системы
Необработанные разделы
– Необработанные разделы считаются высокопроизводительным решением.
– Необработанные операции чтения и записи не используют буферный кеш ОС.
– Необработанные операции чтения и записи могут перемещать большие буферы, чем операции ввода-вывода файловой системы.
– Raw требует более опытного администратора.
Кластерная файловая система Oracle (OCFS)
– файловая система Oracle Cluster предназначена для использования с RAC. Oracle поддерживает OCFS для использования с файлами баз данных. OCFS не является журналируемой файловой системой, но имеет очень хорошие показатели производительности.
– Его производительность меньше чем на 5% по сравнению с необработанными устройствами, а в большинстве тестов всего на 2% медленнее.
– Начиная с версии OCFS. 1.0.14-1, OCFS поддерживает асинхронный ввод-вывод.
OCFS2
Джастин Гаррисон
Джастин Гаррисон
Писатель
Джастин Гаррисон (Justin Garrison) — энтузиаст Linux и инженер по облачной инфраструктуре в одной из крупнейших мировых компаний. Он также является соавтором книги Cloud Native Infrastructure компании O'Reilly. Подробнее.
При форматировании разделов на ПК с Linux вы увидите множество вариантов файловой системы. Эти варианты не должны быть подавляющими. Если вы не знаете, какую файловую систему Linux использовать, есть простой ответ.
Быстрый ответ: используйте Ext4, если вы не уверены
Ext4 не просто так является файловой системой по умолчанию в большинстве дистрибутивов Linux. Это улучшенная версия старой файловой системы Ext3. Это не самая передовая файловая система, но это хорошо: это означает, что Ext4 надежна и стабильна.
В будущем дистрибутивы Linux будут постепенно переходить на BtrFS. BtrFS все еще находится на переднем крае и активно развивается, поэтому вам следует избегать ее использования в производственных системах. Риск повреждения данных или других проблем не стоит потенциального повышения скорости.
Обратите внимание, однако, что этот совет «использовать Ext4» применим только к системным разделам Linux и другим разделам на диске, доступ к которым имеет только Linux. Если вы форматируете внешний диск, которым хотите поделиться с другими операционными системами, вам не следует использовать Ext4, потому что Windows, macOS и другие устройства не могут читать файловые системы Ext4. Вы захотите использовать exFAT или FAT32 при форматировании внешнего диска в Linux.
Если вы настраиваете разделы на основном загрузочном диске Linux, при настройке этих разделов также необходимо создать раздел подкачки размером не менее нескольких ГБ. Этот раздел используется для «пространства подкачки». Это похоже на файл подкачки в Windows. Linux подкачивает память в пространство подкачки, когда его ОЗУ заполнено. Этот раздел должен быть отформатирован как «подкачка», а не как определенная файловая система.
Что такое ведение журнала?
Выбирая между файловыми системами, вы заметите, что некоторые из них помечены как "журналируемые", а некоторые нет. Это важно.
Ведение журнала предназначено для предотвращения повреждения данных при сбоях и внезапном отключении питания. Допустим, ваша система находится на полпути к записи файла на диск и внезапно теряет питание. Без журнала ваш компьютер не знал бы, был ли файл полностью записан на диск. Файл останется на диске поврежденным.
В журнале ваш компьютер отметит, что он собирается записать определенный файл на диск в журнале, запишет этот файл на диск, а затем удалит это задание из журнала. Если во время записи файла отключилось питание, Linux проверит журнал файловой системы при загрузке и возобновит любые частично завершенные задания. Это предотвращает потерю данных и повреждение файлов.
Ведение журналов немного снижает производительность записи на диск, но оно того стоит на настольном компьютере или ноутбуке. Это не так много накладных расходов, как вы думаете. Полный файл не записывается в журнал. Вместо этого в журнал записываются только метаданные файла, индексный дескриптор или местоположение на диске, прежде чем они будут записаны на диск.
Каждая современная файловая система поддерживает ведение журнала, и вы захотите использовать файловую систему, поддерживающую ведение журнала, при настройке настольного компьютера или ноутбука.
Файловые системы, не поддерживающие ведение журнала, доступны для использования на высокопроизводительных серверах и других подобных системах, где администратор хочет получить дополнительную производительность. Они также идеально подходят для съемных флэш-накопителей, когда вам не нужны более высокие накладные расходы и дополнительные записи для ведения журнала.
В чем разница между всеми этими файловыми системами Linux?
В то время как Microsoft разрабатывает Windows, а Apple контролирует macOS, Linux — это проект с открытым исходным кодом, разработанный сообществом. Любой (или любая компания), обладающий навыками и временем, может создать новую файловую систему Linux. Это одна из причин, почему существует так много вариантов. Вот отличия:
- Ext означает «Расширенная файловая система» и была первой, созданной специально для Linux. Он претерпел четыре основных изменения. «Ext» — это первая версия файловой системы, представленная в 1992 году. Это было серьезное обновление по сравнению с файловой системой Minix, использовавшейся в то время, но в ней отсутствуют важные функции. Многие дистрибутивы Linux больше не поддерживают Ext.
- Ext2 не является журналируемой файловой системой. На момент своего появления это была первая файловая система, поддерживающая расширенные атрибуты файлов и диски емкостью 2 терабайта. Отсутствие журнала в Ext2 означает, что он меньше записывает на диск, что делает его полезным для флэш-памяти, такой как USB-накопители. Однако файловые системы, такие как exFAT и FAT32, также не используют журналирование и более совместимы с различными операционными системами, поэтому мы рекомендуем вам избегать Ext2, если вы не знаете, что она вам нужна по какой-то причине.
- Ext3 — это просто Ext2 с журналированием. Ext3 был разработан с учетом обратной совместимости с Ext2, что позволяет преобразовывать разделы между Ext2 и Ext3 без какого-либо форматирования.Он существует дольше, чем Ext4, но Ext4 существует с 2008 года и широко тестируется. На данный момент вам лучше использовать Ext4.
- Ext4 также был разработан с учетом обратной совместимости. Вы можете смонтировать файловую систему Ext4 как Ext3 или файловую систему Ext2 или Ext3 как Ext4. Он включает в себя новые функции, которые уменьшают фрагментацию файлов, позволяют работать с большими томами и файлами, а также используют отложенное выделение для увеличения срока службы флэш-памяти. Это самая современная версия файловой системы Ext, которая используется по умолчанию в большинстве дистрибутивов Linux.
- BtrFS, произносится как «Масло» или «Лучше» FS, изначально была разработана Oracle. Это означает «Файловая система B-Tree» и позволяет создавать пулы дисков, моментальные снимки «на лету», прозрачное сжатие и онлайн-дефрагментацию. Он разделяет ряд тех же идей, что и в ReiserFS, файловой системе, которую некоторые дистрибутивы Linux использовали по умолчанию. BtrFS разработан, чтобы полностью отказаться от файловых систем серии Ext. Тед Тсо, сопровождающий файловой системы Ext4, считает Ext4 краткосрочным решением и считает, что BtrFS — это путь вперед. Ожидайте, что BtrFS станет стандартом по умолчанию как для корпоративных серверов, так и для потребительских настольных дистрибутивов Linux в ближайшие несколько лет по мере дальнейшего тестирования.
- ReiserFS была большим шагом вперед для файловых систем Linux, когда она была представлена в 2001 году и включала в себя множество новых функций, которые Ext никогда не сможет реализовать. В 2004 году ReiserFS был заменен на Reiser4, в котором были улучшены многие функции, которые были неполными или отсутствовали в первоначальном выпуске. Но разработка Reiser4 застопорилась после того, как главный разработчик Ханс Райзер был отправлен в тюрьму в 2008 году. в основном ядре линукса и вряд ли туда попадет. BtrFS — лучший выбор в долгосрочной перспективе.
- ZFS была разработана Sun Microsystems для Solaris и теперь принадлежит Oracle. ZFS поддерживает множество расширенных функций, включая создание пулов дисков, моментальные снимки и динамическое чередование дисков — BtrFS по умолчанию привнесет многие из этих функций в Linux. У каждого файла есть контрольная сумма, поэтому ZFS может определить, поврежден файл или нет. ZFS с открытым исходным кодом Sun находится под лицензией Sun CDDL, что означает, что ее нельзя включить в ядро Linux. Однако вы можете установить поддержку ZFS в любом дистрибутиве Linux. Ubuntu теперь также предлагает официальную поддержку ZFS, начиная с Ubuntu 16.04. Ubuntu по умолчанию использует ZFS для контейнеров.
- XFS была разработана Silicon Graphics в 1994 году для операционной системы SGI IRX и перенесена на Linux в 2001 году. В чем-то она похожа на Ext4, так как также использует отложенное выделение для облегчения фрагментации файлов и не допускает смонтированные снимки. Его можно увеличивать, но не уменьшать на лету. XFS имеет хорошую производительность при работе с большими файлами, но хуже, чем другие файловые системы, при работе с большим количеством маленьких файлов. Это может быть полезно для определенных типов серверов, которым в первую очередь нужно работать с большими файлами.
- JFS, или «журналируемая файловая система», была разработана IBM для операционной системы IBM AIX в 1990 году, а затем перенесена на Linux. Он может похвастаться низкой загрузкой ЦП и хорошей производительностью как для больших, так и для маленьких файлов. Размер разделов JFS можно динамически изменять, но не уменьшать. Он был очень хорошо спланирован и поддерживается почти во всех основных дистрибутивах, однако его производственное тестирование на серверах Linux не так обширно, как Ext, поскольку он был разработан для AIX. Ext4 используется чаще и более широко тестируется.
- Подкачка — это вариант форматирования диска, но не файловая система. Он используется как виртуальная память и не имеет структуры файловой системы. Вы не можете установить его, чтобы просмотреть его содержимое. Подкачка используется ядром Linux в качестве «временного пространства» для временного хранения данных, которые не помещаются в ОЗУ. Он также используется для спящего режима. В то время как Windows хранит файл подкачки как файл на основном системном разделе, Linux просто резервирует отдельный пустой раздел для пространства подкачки.
- FAT16, FAT32 и exFAT: файловые системы Microsoft FAT часто используются при форматировании диска в Linux. В этих файловых системах нет журнала, поэтому они идеально подходят для внешних USB-накопителей. Они являются стандартом де-факто, который может прочитать любая операционная система — Windows, macOS, Linux и другие устройства. Это делает их идеальной файловой системой для форматирования внешнего диска, который вы захотите использовать с другими операционными системами. FAT32 старше. exFAT — идеальный вариант, так как он поддерживает файлы размером более 4 ГБ и разделы размером более 8 ТБ, в отличие от FAT32.
Существуют и другие файловые системы Linux, в том числе файловые системы, разработанные специально для флэш-памяти во встроенных устройствах и на SD-картах.Но это параметры, которые чаще всего встречаются при использовании Linux.
Команды Linux | |
Файлы | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm |
Процессы | alias · screen · top · nice · renice · прогресс · strace · systemd · tmux · chsh · история · at · пакетное · бесплатное · которое · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · стена · yes · kill · спать · sudo · su · время · groupadd · usermod · группы · lshw · выключение · перезагрузка · halt · poweroff · passwd · lscpu · crontab · date · bg · fg |
Сеть | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · копать · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
- › Является ли EndeavourOS самым простым способом использования Arch Linux?
- › Что такое файловая система и почему их так много?
- › Как управлять и использовать LVM (управление логическими томами) в Ubuntu
- › 20 лучших обучающих тем 2010 года
- › Как настроить программный RAID для простого файлового сервера в Ubuntu
- › Что нового в Fedora 35
- › Что нового в Ubuntu 19.10 «Eoan Ermine» уже доступно
- › Как восстановить метки панели задач в Windows 11
Эта статья предназначена для обсуждения концепций файловой системы Linux на очень высоком уровне. Он не предназначен для низкоуровневого описания того, как работает конкретный тип файловой системы, такой как EXT4, и не предназначен для обучения командам файловой системы.
Дополнительные ресурсы по Linux
Каждый компьютер общего назначения должен хранить данные различных типов на жестком диске (HDD) или его эквиваленте, например на USB-накопителе. На это есть несколько причин. Во-первых, оперативная память теряет свое содержимое при выключении компьютера. Существуют энергонезависимые типы ОЗУ, которые могут поддерживать данные, хранящиеся там, после отключения питания (например, флэш-ОЗУ, используемое в USB-накопителях и твердотельных накопителях), но флэш-ОЗУ намного дороже, чем стандартная энергозависимая ОЗУ, такая как DDR3 и другие подобные типы.
Вторая причина, по которой данные необходимо хранить на жестких дисках, заключается в том, что даже стандартная оперативная память по-прежнему дороже дискового пространства. Стоимость ОЗУ и диска быстро снижается, но ОЗУ по-прежнему лидирует по стоимости байта. Быстрый расчет стоимости байта, основанный на стоимости 16 ГБ оперативной памяти по сравнению с жестким диском емкостью 2 ТБ, показывает, что единица оперативной памяти примерно в 71 раз дороже, чем жесткий диск. Типичная стоимость оперативной памяти сегодня составляет около 0,0000000043743750 долларов США за байт.
В качестве краткой исторической справки, чтобы представить нынешние затраты на ОЗУ в перспективе, на самых ранних этапах развития вычислений один тип памяти основывался на точках на экране ЭЛТ. Это было очень дорого — около 1 доллара США за бит!
Определения
Вы можете слышать, как люди говорят о файловых системах по-разному и сбивая с толку. Само слово может иметь несколько значений, и вам, возможно, придется определить правильное значение из контекста обсуждения или документа.
Я попытаюсь определить различные значения слова "файловая система" на основе того, как я наблюдал его использование в различных обстоятельствах. Обратите внимание, что, пытаясь соответствовать стандартным «официальным» значениям, я намерен определить термин на основе его различных вариантов использования. Эти значения будут рассмотрены более подробно в следующих разделах этой статьи.
- Вся структура каталогов Linux, начиная с верхнего (/) корневого каталога.
- Особый тип формата хранения данных, например EXT3, EXT4, BTRFS, XFS и т. д. Linux поддерживает почти 100 типов файловых систем, включая как очень старые, так и новейшие. Каждый из этих типов файловых систем использует свои собственные структуры метаданных для определения того, как данные хранятся и доступны.
- Раздел или логический том, отформатированный с использованием файловой системы определенного типа, который можно смонтировать в указанной точке монтирования в файловой системе Linux.
Основные функции файловой системы
Дисковое хранилище — это необходимость, которая приносит с собой некоторые интересные и неизбежные детали. Очевидно, что файловая система предназначена для предоставления места для энергонезависимого хранения данных; это его конечная функция.Однако из этого требования вытекает множество других важных функций.
Все файловые системы должны предоставлять пространство имен, то есть методологию именования и организации. Это определяет, как можно назвать файл, в частности длину имени файла и подмножество символов, которые могут использоваться для имен файлов из общего набора доступных символов. Он также определяет логическую структуру данных на диске, например использование каталогов для организации файлов вместо того, чтобы просто сваливать их все вместе в один огромный конгломерат файлов.
После того как пространство имен определено, необходима структура метаданных, чтобы обеспечить логическую основу для этого пространства имен. Сюда входят структуры данных, необходимые для поддержки иерархической структуры каталогов; структуры для определения того, какие блоки пространства на диске используются, а какие доступны; структуры, позволяющие сохранять имена файлов и каталогов; информация о файлах, такая как их размер и время их создания, изменения или последнего доступа; и местоположение или местоположения данных, принадлежащих файлу на диске. Другие метаданные используются для хранения высокоуровневой информации о подразделениях диска, таких как логические тома и разделы. Эти метаданные более высокого уровня и структуры, которые они представляют, содержат информацию, описывающую файловую систему, хранящуюся на диске или разделе, но они отделены от метаданных файловой системы и не зависят от них.
Для файловых систем также требуется интерфейс прикладного программирования (API), обеспечивающий доступ к вызовам системных функций, управляющих объектами файловой системы, такими как файлы и каталоги. API обеспечивают такие задачи, как создание, перемещение и удаление файлов. Он также предоставляет алгоритмы, которые определяют такие вещи, как расположение файла в файловой системе. Такие алгоритмы могут учитывать такие цели, как скорость или минимизация фрагментации диска.
Современные файловые системы также предоставляют модель безопасности, которая представляет собой схему определения прав доступа к файлам и каталогам. Модель безопасности файловой системы Linux помогает гарантировать, что пользователи имеют доступ только к своим собственным файлам, а не к чужим или к самой операционной системе.
Последний строительный блок — это программное обеспечение, необходимое для реализации всех этих функций. В Linux используется программная реализация, состоящая из двух частей, чтобы повысить эффективность как системы, так и программиста.
Рисунок 1. Программная реализация файловой системы Linux, состоящая из двух частей.
Первая часть этой реализации, состоящей из двух частей, — виртуальная файловая система Linux. Эта виртуальная файловая система предоставляет ядру и разработчикам единый набор команд для доступа ко всем типам файловых систем. Программное обеспечение виртуальной файловой системы вызывает специальный драйвер устройства, необходимый для взаимодействия с различными типами файловых систем. Драйверы устройств, специфичные для файловой системы, являются второй частью реализации. Драйвер устройства интерпретирует стандартный набор команд файловой системы как специфичный для типа файловой системы раздела или логического тома.
Структура каталогов
Как обычно очень организованная Дева, я предпочитаю хранить вещи в небольших, организованных группах, а не в одном большом ведре. Использование каталогов помогает мне хранить и затем находить нужные файлы, когда я их ищу. Каталоги также называются папками, потому что их можно рассматривать как папки, в которых хранятся файлы по аналогии с физическим рабочим столом.
В Linux и многих других операционных системах каталоги могут быть структурированы в виде древовидной иерархии. Структура каталогов Linux четко определена и задокументирована в стандарте иерархии файловой системы Linux (FHS). Ссылка на эти каталоги при доступе к ним осуществляется с использованием последовательно расположенных более глубоких имен каталогов, соединенных косой чертой (/), таких как /var/log и /var/spool/mail. Они называются путями.
В следующей таблице представлен очень краткий список стандартных, хорошо известных и определенных каталогов Linux верхнего уровня и их назначения.
Таблица 1. Верхний уровень иерархии файловой системы Linux.
Каталоги и их подкаталоги, показанные в Таблице 1, вместе с их подкаталогами, имеющими бирюзовый фон, считаются неотъемлемой частью корневой файловой системы. То есть их нельзя создать как отдельную файловую систему и смонтировать во время запуска. Это связано с тем, что они (в частности, их содержимое) должны присутствовать во время загрузки, чтобы система загружалась правильно.
Каталоги /media и /mnt являются частью корневой файловой системы, но они никогда не должны содержать никаких данных. Скорее, это просто временные точки подключения.
Остальные каталоги, которые не имеют фонового цвета в Таблице 1, не обязательно должны присутствовать во время последовательности загрузки, но будут смонтированы позже, во время последовательности запуска, которая подготавливает хост к выполнению полезной работы.
Обязательно обратитесь к официальной веб-странице стандарта иерархии файловой системы Linux (FHS) для получения подробной информации о каждом из этих каталогов и их многочисленных подкаталогах. В Википедии также есть хорошее описание FHS. Этот стандарт должен соблюдаться как можно точнее, чтобы обеспечить операционную и функциональную согласованность. Независимо от типов файловых систем, используемых на хосте, эта иерархическая структура каталогов одинакова.
Единая структура каталогов Linux
В некоторых операционных системах ПК, отличных от Linux, при наличии нескольких физических жестких дисков или нескольких разделов каждому диску или разделу назначается буква диска. Необходимо знать, на каком жестком диске находится файл или программа, например C: или D:. Затем вы вводите букву диска в виде команды, D:, например, чтобы перейти на диск D:, а затем вы используете команду cd, чтобы перейти в правильный каталог, чтобы найти нужный файл. У каждого жесткого диска есть свое отдельное полное дерево каталогов.
Файловая система Linux объединяет все физические жесткие диски и разделы в единую структуру каталогов. Все начинается сверху — с корневого (/) каталога. Все остальные каталоги и их подкаталоги расположены в одном корневом каталоге Linux. Это означает, что существует только одно дерево каталогов, в котором можно искать файлы и программы.
Это может работать только потому, что файловая система, такая как /home, /tmp, /var, /opt или /usr, может быть создана на отдельных физических жестких дисках, в другом разделе или в другом логическом томе из / ( root) файловая система, а затем монтируется в точку монтирования (каталог) как часть дерева корневой файловой системы. Даже съемные диски, такие как флэш-накопитель USB или внешний жесткий диск USB или ESATA, будут подключены к корневой файловой системе и станут неотъемлемой частью этого дерева каталогов.
Одна из веских причин для этого очевидна при обновлении одной версии дистрибутива Linux до другой или переходе с одного дистрибутива на другой. В целом, помимо любых утилит обновления, таких как dnf-upgrade в Fedora, целесообразно время от времени переформатировать жесткий диск (диски), содержащие операционную систему, во время обновления, чтобы полностью удалить весь мусор, который накопился с течением времени. Если /home является частью корневой файловой системы, она также будет переформатирована, и тогда ее придется восстанавливать из резервной копии. Имея /home в качестве отдельной файловой системы, она будет известна программе установки как отдельная файловая система, и ее форматирование можно пропустить. Это также может относиться к /var, где хранятся база данных, почтовые ящики, веб-сайт и другие переменные пользовательские и системные данные.
Есть и другие причины для сохранения определенных частей дерева каталогов Linux в виде отдельных файловых систем. Например, давным-давно, когда я еще не знал о потенциальных проблемах, связанных с тем, что все необходимые каталоги Linux являются частью / (корневой) файловой системы, мне удалось заполнить свой домашний каталог большим количеством очень большие файлы. Поскольку ни каталог /home, ни каталог /tmp не были отдельными файловыми системами, а были просто подкаталогами корневой файловой системы, вся корневая файловая система заполнялась. У операционной системы не оставалось места для создания временных файлов или расширения существующих файлов данных. Сначала прикладные программы начали жаловаться, что нет места для сохранения файлов, а потом очень странно начала себя вести и сама ОС. Загрузка в однопользовательском режиме и удаление проблемных файлов в моем домашнем каталоге позволили мне снова начать работу. Затем я переустановил Linux, используя довольно стандартную настройку нескольких файловых систем, и смог предотвратить повторение полного сбоя системы.
Однажды у меня была ситуация, когда хост Linux продолжал работать, но не позволял пользователю войти в систему с помощью рабочего стола с графическим интерфейсом. Я смог войти в систему с помощью интерфейса командной строки (CLI) локально, используя одну из виртуальных консолей, и удаленно, используя SSH. Проблема заключалась в том, что файловая система /tmp была заполнена, и некоторые временные файлы, необходимые для рабочего стола с графическим интерфейсом, не могли быть созданы во время входа в систему. Поскольку вход в CLI не требовал создания файлов в /tmp, нехватка места не помешала мне войти в систему с помощью CLI. В этом случае каталог /tmp был отдельной файловой системой, и в группе томов, частью которой был логический том /tmp, было достаточно места. Я просто расширил логический том /tmp до размера, который соответствовал моему свежему пониманию объема временного файлового пространства, необходимого на этом хосте, и проблема была решена. Обратите внимание, что это решение не требовало перезагрузки, и как только файловая система /tmp была увеличена, пользователь смог войти на рабочий стол.
Еще одна ситуация произошла, когда я работал администратором лаборатории в одной крупной технологической компании. Один из наших разработчиков установил приложение в неправильном месте (/var). Приложение аварийно завершало работу из-за того, что файловая система /var была заполнена, а файлы журналов, хранящиеся в /var/log в этой файловой системе, не могли быть дополнены новыми сообщениями из-за нехватки места. Однако система продолжала работать, потому что критические файловые системы / (root) и /tmp не заполнялись. Эта проблема была решена путем удаления вызывающего ошибку приложения и его переустановки в файловой системе /opt.
Типы файловых систем
Linux поддерживает чтение около 100 типов разделов; он может создавать и записывать только некоторые из них. Но возможно — и очень часто — монтировать файловые системы разных типов в одной и той же корневой файловой системе. В этом контексте мы говорим о файловых системах с точки зрения структур и метаданных, необходимых для хранения и управления пользовательскими данными на разделе жесткого диска или логическом томе. Полный список типов разделов файловой системы, распознаваемых командой Linux fdisk, приведен здесь, чтобы вы могли почувствовать высокую степень совместимости Linux с очень многими типами систем.
Основная цель поддержки возможности чтения столь многих типов разделов – обеспечить совместимость и, по крайней мере, некоторую совместимость с файловыми системами других компьютерных систем. Варианты, доступные при создании новой файловой системы в Fedora, показаны в следующем списке.
Другие дистрибутивы поддерживают создание различных типов файловых систем. Например, CentOS 6 поддерживает создание только тех файловых систем, которые выделены жирным шрифтом в приведенном выше списке.
Монтаж
Термин «смонтировать» файловую систему в Linux относится к ранним временам вычислительной техники, когда ленту или съемный диск необходимо было физически смонтировать на соответствующем дисковом устройстве. После физического размещения на диске файловая система на диске будет логически монтироваться операционной системой, чтобы сделать содержимое доступным для ОС, прикладных программ и пользователей.
Точка монтирования — это просто каталог, как и любой другой, созданный как часть корневой файловой системы. Так, например, домашняя файловая система смонтирована в каталоге /home. Файловые системы можно монтировать в точках монтирования других файловых систем, отличных от root, но это менее распространено.
Корневая файловая система Linux монтируется в корневой каталог (/) в самом начале последовательности загрузки. Другие файловые системы монтируются позже, с помощью программ запуска Linux, либо с помощью rc в SystemV, либо с помощью systemd в более новых версиях Linux. Монтирование файловых систем в процессе запуска управляется конфигурационным файлом /etc/fstab. Простой способ запомнить это: fstab означает «таблица файловой системы» и представляет собой список файловых систем, которые должны быть смонтированы, их назначенные точки монтирования и любые параметры, которые могут потребоваться для определенных файловых систем.
Файловые системы монтируются в существующий каталог/точку монтирования с помощью команды mount. В общем, любой каталог, который используется в качестве точки монтирования, должен быть пустым и не содержать никаких других файлов. Linux не запрещает пользователям монтировать одну файловую систему поверх уже существующей или в каталог, содержащий файлы. Если вы монтируете файловую систему в существующий каталог или файловую систему, исходное содержимое будет скрыто, и будет видно только содержимое вновь смонтированной файловой системы.
Заключение
Я надеюсь, что эта статья развеяла часть возможной путаницы, связанной с термином файловая система. Мне потребовалось много времени и очень полезный наставник, чтобы по-настоящему понять и оценить сложность, элегантность и функциональность файловой системы Linux во всех ее значениях.
Если у вас есть вопросы, задайте их в комментариях ниже, и я постараюсь на них ответить.
В следующем месяце
Еще одна важная концепция заключается в том, что для Linux все представляет собой файл. У этой концепции есть несколько интересных и важных практических применений для пользователей и системных администраторов. Причина, по которой я упоминаю об этом, заключается в том, что вы, возможно, захотите прочитать мою статью «Все есть файл» перед статьей, которую я планирую опубликовать в следующем месяце в каталоге /dev.
Читайте также: