Моя цель: популярно рассказать о файловых системах, которые «понимает» Linux, про их преимущества и недостатки. Файлы данных, файлы устройств и др..
Друзья, начинаем повышать уровень знаний о Linux! О файловых системах — поподробней!
Файловые системы, поддерживаемые Linux.
Linux поддерживает много различных файловых систем. Начинающий пользователь просто теряется, когда видит такое многообразие выбора, — ведь в качестве корневой файловой системы доступны: ext2, ext3, ext4, XFS, ReiserFS, JFS.
"Родной" файловой системой современных дистрибутивов Linux является журналируемая файловая система ext4, но при установке Linux вы можете выбрать и предыдущие версии — ext3 или даже ext2.
ЗАМЕЧАНИЕ:
Linux до сих пор поддерживает файловую систему ext— самую первую файловую систему Linux, однако выбрать ext при установке системы вы не сможете. Поддержка ext добавлена в ядро только на тот случай, если вам попадется носитель информации, отформатированный в этой файловой системе.
ЖУРНАЛИРУЕМОСТЬ
Все перечисленные файловые системы (кроме ext2) ведут журналы своей работы, что позволяет восстановить данные в случае сбоя. Осуществляется это таким образом — перед тем как выполнить операцию, журналируемая файловая система записывает эту операцию в особый файл — журнал, а после выполнения операции удаляет запись из журнала. Представим, что после занесения операции в журнал произошел сбой (например, отключилось электропитание). Позже, когда сбой будет устранен, файловая система по журналу выполнит все действия, которые в него занесены. Конечно, и это не всегда позволяет уберечься от последствий сбоя — стопроцентной гарантии никто не дает, но все же такая схема работы лучше, чем вообще ничего.
Основное отличие ext3 от ext2 как раз и заключается в ее журналируемости. При этом файловые системы ext2 и ext3 совместимы, т. е. раздел ext3 могут читать программы (например, Total Commander в Windows), рассчитанные на ext2.
Версия ext4 построена на базе ext3, но отличия существенны.
Итак, в качестве корневой файловой системы и файловой системы других Linux-разделов могут служить файловые системы ext3 и ext4, а также XFS, ReiserFS, JFS. Далее мы рассмотрим особенности этих файловых систем, чтобы понять, нужно ли их использовать или же остановить свой выбор на стандартной ext4.
Файловая система XFS была разработана компанией Silicon Graphics в 2001 году. Основная особенность данной системы — высокая производительность (до 7 Гбайт/с). XFS может работать с блоками размером от 512 байтов до 64 Кбайт. Ясно, что если у вас много маленьких файлов, то в целях экономии места можно установить самый маленький размер блока. А если вы работаете с файлами большого размера (например, мультимедиа), то нужно выбрать самый большой размер блока — так файловая система обеспечит максимальную производительность (конечно, если "железо" позволяет). Учитывая высокую производительность этой файловой системы, ее нет смысла устанавливать на домашнем компьютере, поскольку все ее преимущества будут сведены на нет. А вот если вы будете работать с файлами очень большого размера, XFS проявит себя с лучшей стороны.
Файловая система ReiserFS считается самой экономной, поскольку позволяет хранить несколько файлов в одном блоке (другие файловые системы могут хранить в одном блоке только один файл или одну его часть). Например, если размер блока равен 4 Кбайт, а файл занимает всего 512 байт (а таких файлов очень много в разных каталогах), то 3,5 Кбайт в этом блоке просто не будут использоваться. А вот ReiserFS позволяет задействовать буквально каждый байт вашего жесткого диска!
Но у этой файловой системы есть два больших недостатка: она неустойчива к сбоям, и ее производительность сильно снижается при фрагментации. Поэтому, если вы выбираете данную файловую систему, покупайте UPS (источник бесперебойного питания) и почаще дефрагментируйте жесткий диск.
Файловая система JFS (разработка IBM) сначала появилась в операционной системе AIX, а потом была модифицирована под Linux. Основные достоинства этой файловой системы — надежность и высокая производительность (выше, чем у XFS). Но у нее маленький размер блока (от 512 байтов до 4 Кбайт). Следовательно, она хороша на сервере баз данных, но не при работе с данными мультимедиа, поскольку блок в 4 Кбайт для работы, например, с видео в реальном времени, будет маловат.
Выбор файловой системы.
С точки зрения производительности рассмотренных файловых систем, можно дать следующие рекомендации:
для рабочей станции и сервера общего назначения оптимальной файловой системой являются ext3/ext4 или ReiserFS (в крайнем случае);
на сервере баз данных можно использовать JFS — в этом случае (особенно, если база данных огромная) будет наблюдаться определенный прирост производительности;
файловая система XFS — это для мультимедиастанции, на обычной рабочей станции или обычном сервере ее использовать не следует.
Но производительность — это не единственный критерий выбора файловой системы, особенно для сервера. Да, производительность учитывать нужно, но, кроме того, нельзя пренебрегать и следующими факторами:
надежностью — все-таки мы выбираем файловую систему для сервера, а не для домашнего компьютера;
наличием программ для восстановления файловой системы в случае сбоя — сбой может произойти даже в случае использования самой надежной файловой системы, поэтому наличие программного комплекса для восстановления файловой системы не будет лишним;
максимальным размером файла — сервер обрабатывает огромные объемы информации, поэтому данный критерий для нас также важен.
Файловые системы ext3/ext4, ReiserFS и XFS одинаково надежны, а вот надежность JFS иногда оставляет желать лучшего. Учитывая это, а также то, что программы для восстановления файловой системы имеются только для ext*, на сервере лучше использовать все-таки ext3/ext4.
Если вы уже интересовались характеристиками файловых систем, то могли в некоторых источниках встретить неправильную информацию о максимальном размере файла для файловой системы ext3. Так, иногда сообщается, что максимальный размер файла для ext3 равен 2 Гбайт, что делает ее непригодной для использования на сервере. Это не так. Раньше, во времена ext2 и ядер 2.2 и 2.4, действительно, существовало такое ограничение, но для ext2. Файловая система ext3 поддерживает файлы размером до 1 Тбайт, а максимальный размер тома (раздела) равен 4 Тбайт, что вполне достаточно даже для сервера. Если же вам нужна поддержка больших объемов данных, тогда рекомендую обратить внимание на другие файловые системы, например на ReiserFS (максимальный размер файла 16 Тбайт) или на XFS/JFS (размер файла вообще исчисляется в петабайтах).
Linux и файловые системы Windows.
Linux почти безо всяких ограничений поддерживает файловые системы FAT12 (DOS), FAT16 (или просто FAT, как в Windows 95) и FAT32 (Windows 98 и все последующие версии) и, конечно, NTFS. Вы можете из Linux читать в файловых системах Windows файлы и каталоги, изменять, создавать новые файлы и каталоги, удалять их — в общем все, что можно делать в файловой системе непосредственно в Windows.
Однако файловые системы Windows не поддерживают установку прав доступа, поэтому можно даже не пытаться установить в Linux права доступа к файлу, который находится на Windows-разделе, — у вас ничего не получится.
Сменные носители.
Linux замечательно работает со сменными CD/DVD и USB-дисками, даже выполняется автоматическое монтирование и размонтирование сменных носителей. С другой стороны, автоматическое монтирование сменных носителей на сервере нежелательно, на домашнем компьютере — да.
Имена файлов в Linux
По сравнению с Windows в Linux немного другие правила построения имен файлов. Начнем с того, что в Linux нет такого понятия, как расширение имени файла. В Windows, например, для файла Document1.doc именем файла является фрагмент Document1, а doc — это расширение. В Linux Document1.doc — это имя файла, никакого расширения нет.
Максимальная длина имени файла — 254 символа. Имя может содержать любые символы (в том числе и кириллицу), кроме / \ ? < > * " |. Но кириллица в именах файлов не рекомендуется. Дело в том, что при обмене файлами по электронной почте имя файла лучше писать латиницей, потому что из-за различия в кодировке вместо русскоязычного имени пользователь может увидеть“абракадабру”.
Также вам придется привыкнуть к тому, что Linux чувствительна к регистру в имени файла: FILE.txt и FiLe.Txt — это два разных файла.
Разделение элементов пути осуществляется символом / (прямой слэш), а не \ (обратный слэш), как в Windows.
Файлы и устройства
После Windows мы привыкли к тому, что файл — это именованная область данных на диске. Отчасти так оно и есть. Отчасти — потому, что приведенное определение файла было верно для DOS (Disk Operating System) и Windows.
В Linux понятие файла значительно шире. В Linux есть файлы устройств, позволяющие обращаться с устройством, как с обычным файлом. Файлы устройств находятся в каталоге /dev (вспомните структуру каталогов Linux Mint ) (от devices). Через файл устройства можно обратиться к устройству. Если (вдруг) вы работали в DOS, то, наверное, помните, что что-то подобное было и там — существовали зарезервированные имена файлов: PRN (принтер), CON (клавиатура при вводе, дисплей при выводе), LPTn (параллельный порт, n — номер порта), COMn (последовательный порт). Друзья, извините, что не совсем по теме, но хочу заметить: в нынешнем, 2022 году, у нас на работе до сих пор вполне успешно паботают программки под DOS, роэтому не удивляйтесь, что эта операционная система упоминается.
Примечание.
Кому-то может показаться, что разработчики Linux "украли" идею специальных файлов у Microsoft — ведь Linux появилась в начале 90-х годов, а DOS — в начале 80-х годов прошлого века. На самом деле это не так. Наоборот, Microsoft позаимствовала идею файлов устройств из операционной системы UNIX, которая была создана еще до создания DOS... Однако, вернемся к файлам устройств.
Вот некоторые примеры файлов устройств:
/dev/sdx — файл жесткого диска;
/dev/sdxN — файл устройства раздела на жестком диске, N — это номер раздела;
/dev/scdN — файл устройства CD/DVD-привода;
/dev/mouse — файл устройства мыши;
/dev/modem — файл устройства модема (на самом деле является ссылкой на файл устройства ttySn);
/dev/ttySn — файл последовательного порта, n — номер порта (ttyS0 соответствует COM1, ttyS1 — COM2 и т. д.).
В свою очередь, файлы устройств бывают двух типов: блочные и символьные. Обмен информацией с блочными устройствами, например, с жестким диском, осуществляется блоками информации, а с символьными — отдельными символами. Пример символьного устройства — последовательный порт.
Корневая файловая система и монтирование.
Если у вас, как у меня, на компьютере вместе с Linux установлена и Windows., запустите Проводник Windows и просмотрите список логических дисков вашего компьютера.
Скорее всего, вы увидите пиктограммы разделов жесткого диска (у меня обычно C: и D:), пиктограмму привода CD/DVD (например, E:). Таким способом, с помощью буквенных обозначений C:, D:, E: и т. п., в Windows обозначаются корневые каталоги разделов жесткого диска и сменных носителей.
В Linux существует понятие корневой файловой системы. Допустим, вы установили Linux в раздел с именем /dev/sda3. В этом разделе и будет развернута корневая файловая система вашей Linux-системы. Корневой каталог обозначается прямым слэшем — /, т. е. для перехода в корневой каталог в терминале (или консоли) нужно ввести команду cd / .
Разделы, которые видны установщику Linux, монтируются при запуске Linux Mint и описаны в файле fstab. Я рассказывал, как в нем создавать привязки каталогов. Кстати, копию fstab берегу как зеницу ока! :-) . Чтобы получить доступ к не смонтированным разделам, вам нужно подмонтировать их к корневой файловой системе.
После монтирования вы можете обратиться к содержимому разделов через точку монтирования — назначенный вами при монтировании специальный каталог, например, /mnt/cdrom. А также, впрочем, монтирование происходит, если пощелкать мышью на рабочем столе по пиктограмме “Компьютер” и в раскрывшемся окне — по нужному устройству (двойной щелчок).
В заключение.
Друзья, мы начали делать шаги к профессиональным знаниям о Linux. Я постарался популярно рассказать о файловых системах, с которыми работает Linux.
***
Вам понравилось, оказалось полезным? Ставьте, пожалуйста, "лайк"!
Буду рад вашим подпискам.