Ext4
Пожалуй, самая известная и часто встречаемая ФС, которая используется по умолчанию в большинстве дистрибутивов. Наиболее стабильна, так как развитие положено ещё в прошлом веке, планомерное развитие из Ext > Ext2 > Ext3.
Использует в своей работе журналирование, что даёт большую надёжность для файлов, но снижает скорость. Если появляется ошибка, то ФС возвращается к предыдущей версии из журнала. Благодаря журналу, даже при сбое записи ФС остаётся в безопасности.
В Ext4 была добавлена дефрагментация в реальном времени.
Не смотря на почтенный возраст, всё ещё разрабатывается. Разработчики планируют заставить ФС работать с контрольными суммами а автоматическом режиме и улучшить квоты, переложить их на ядро, это улучшит производительность.
Получила в своё распоряжение различные современные механизмы для улучшения производительности, включая работу с SSD, но структура устарела.
Журнал, который используется в работе и часто встречается в описании — принцип работы, при котором транзакции записываются сначала в журнал, а изменение/запись происходят уже после.
Файловая система Ext4
Начнем с файловой системы Ext4 (Расширенная Файловая Система) является четвертым поколением семейства файловых систем Ext, происхождение которого можно проследить с операционной системы Minix. Которая была впервые представлена в 1987 году. Файловая система Ext является первой файловой системой, лежащей в основе ядра Linux. Когда она была представлена в 1992 году. Файловая система Ext4 появилась в 2008 году с Linux 2.6.28. сменив своего предшественника ext3.
Ext4 прекрасно управляет большим количеством небольших файлов и гарантирует правильную запись метаданных, даже если кэш записи теряет мощность.
Основные характеристики включают в себя:
- Поддержка больших размеров файлов — Ext4 поддерживает размер одного файла до 16 КБ ( Тебибайт), в то время как XFS поддерживает максимальный размер файла до 8 эксбибайт.
- Оптимизация задержек для более быстрого распределения файлов.
- Обратная совместимость — Еще одним преимуществом использования файловой системы Ext4 является ее обратная совместимость с системами Ext3 и Ext2. Это повышает производительность и гибкость FS. Так как некоторые функции Ext4 могут быть реализованы в файловых системах Ext3 и Ext2. И так же файловые системы Ext3 и Ext2 могут быть смонтированы как Ext4.
- Улучшенное распределение — блоки хранения более эффективно распределяются файловой системой Ext4 перед записью на диск. Это значительно повышает производительность чтения и записи.
- Контрольные суммы журнала — Файловая система Ext4 использует параметр контрольной суммы для минимизации риска повреждения файлов. Опция контрольной суммы выполняет частые проверки для выявления ошибок в объеме блока. Таким образом, сокращается время ведения журнала и повышается производительность.
- Более быстрая проверка файловой системы — В дополнение к контрольным суммам журнала, Ext4 обеспечивает более быструю проверку файловой системы. Например, команда fsck будет выполняться быстрее и выдаст результаты за более короткое время. По сравнению с более ранними версиями, такими как Ext3 и Ext2.
- Улучшенные временные метки — в Ext4 реализованы временные метки, измеряемые в наносекундах, что является улучшением по сравнению с детализацией временных меток на основе секунд. Так как метки в секундах считаются недостаточными. Кроме того к отметке времени было добавлено еще 408 лет, чтобы преодолеть установленный лимит 2038 года.
- Неограниченное количество подкаталогов — Файловая система Ext4 не ограничивает количество подкаталогов, которые могут быть созданы в одном каталоге, за исключением самого размера каталога. В Ext3 каталог может содержать не более 32 000 подкаталогов. Ext4 представила функцию HTreeindices для увеличения количества записей, которые могут храниться в каталоге.
- Прозрачное шифрование — Поддержка прозрачного шифрования была реализована для файловой системы Ext4 в ядре Linux 4.1.
Понимание Btrfs: за и против
Btrfs, который можно произносить как «Butter FS», «Better FS» или «B-Tree FS», является новой файловой системой, переделанной с нуля. Btrfs существует потому, что разработчики хотели расширить функциональность файловой системы, включив в нее дополнительные функции, такие как пул, моментальные снимки и контрольные суммы.
Проект начался в Oracle, но с тех пор другие крупные компании приняли участие в разработке. Список включает в себя Facebook, Netgear, Red Hat и SUSE.
В то время как улучшения, найденные в btrfs, могут принести пользу обычным пользователям, некоторые дополнительные функции представляют больший интерес для корпоративного использования. Такая функциональность предназначена для более требовательных случаев использования, которые часто требуют более надежных жестких дисков. а также.
Для организаций, использующих очень большие программы с большими базами данных, наличие, казалось бы, непрерывной файловой системы на нескольких жестких дисках может значительно упростить консолидацию данных. Дедупликация данных уменьшит объем фактического пространства, занимаемого данными, и зеркалирование данных станет проще, когда существует одна широкая файловая система, которую необходимо отразить.
Конечно, вы все равно можете создать несколько разделов, чтобы вам не приходилось отражать все. Максимальный размер раздела файловой системы btrfs составляет 16 exbibytes, а максимальный размер файла также составляет 16 exbibytes.
Учитывая, что btrfs сможет охватывать несколько жестких дисков, хорошо, что он поддерживает в 16 раз больше дискового пространства, чем ext4.
Дефрагментация
Файловые системы в Linux изначально спроектированы так, чтобы фрагментация файлов была как можно меньше. Тем не менее, фрагментированность файлов имеет место быть, и в некоторых случаях может привести к заметному падению производительности дисковой подсистемы.
Для Ext4 есть несколько дефрагментаторов:
- e2fsprogs. Онлайн дефрагментатор из стандартного набора утилит.
- Defrag. Дефрагментатор от Кона Коливаса. Случаются перерывы в разработке, но проект живой, в 2010 появился PPA-репозиторий: ppa:e2defrag/ppa.
- Shake. Онлайн-дефрагментатор, PPA-репозиторий: ppa:un-brice/ppa.
e2fsprogs
- Проверка необходимости дефрагментации:
$ sudo e4defrag -c /dev/<xxx>
- запуск дефрагментации:
$ sudo e4defrag /dev/<xxx>
- проверка результата (в последней строке вывода должно быть ⩽0.3% non-contiguous):
$ sudo fsck -n /dev/<xxx>
4. Драйвер поддержки Ext2Fsd
Программа Ext2Fsd – это драйвер Ext2/3/4, он реализует поддержку этих файловых систем на уровне операционной системы. С разделами диска и накопителями, форматированными в эти файловые системы, можно работать как с обычными, поддерживаемыми Windows устройствами информации в окне проводника или сторонних программ. Драйвер позволяет и считывать, и записывать данные.
Скачиваем последнюю актуальную версию Ext2Fsd.
При установке активируем (если для длительной работы) три предлагаемых чекбокса:
• 1 — Автозапуск драйвера вместе с Windows;• 2 — Поддержка записи для Ext2;• 3 — Поддержка форматирования для Ext3.
На предфинишном этапе активируем опцию запуска окошка диспетчера драйвера — Volume Manager — с попутным присвоением устройствам информации с Ext2/3/4 буквы диска.
В окошке открывшегося Volume Manager увидим носитель с уже присвоенной буквой. Например, в нашем случае носителю с Ext4 задана первая свободная буква F.
Теперь можем работать с диском F в окне проводника.
Присвоить букву новым подключаемым устройствам с Ext2/3/4 можно с помощью контекстного меню, вызываемого на каждом из отображаемых в окне Volume Manager устройств. Но просто при присвоении буквы диска такое устройство не будет отображаться после перезагрузки Windows, это решение только для одного сеанса работы с компьютером. Чтобы сделать новое устройство с Ext2/3/4 постоянно видимым в среде Windows, необходимо двойным кликом по нему открыть настроечное окошко и установить постоянные параметры подключения. Во второй графе нужно:
• Для съёмных носителей активировать чекбокс, обозначенный на скриншоте цифрой 1, и указать букву диска;• Для внутренних дисков и разделов активировать чекбокс, обозначенный на скриншоте ниже цифрой 2, и также указать букву диска.
Далее применяем всё только что настроенное: нажимаем внизу «Apply».
Compatibility
Any existing Ext3 filesystem can be mounted as Ext4 without requiring any on-disk format changes. However, it is possible to upgrade an Ext3 filesystem to take advantage of some Ext4 features by running a couple of commands in read-only mode (described in the next section). This means that you can improve the performance, storage limits and features of your current filesystems without reformatting and/or reinstalling your OS and software environment. If you need the advantages of Ext4 on a production system, you can upgrade the filesystem. The procedure is safe and doesn’t risk your data (obviously, backup of critical data is recommended, even if you aren’t updating your filesystem :). Ext4 will use the new data structures only on new data, the old structures will remain untouched and it will be possible to read/modify them when needed. This means that if you convert your filesystem to Ext4 you won’t be able to go back to Ext3 again.
Что такое файловая система
Обычно вся информация записывается, хранится и обрабатывается на различных цифровых носителях в виде файлов. Далее, в зависимости от типа файла, кодируется в виде знакомых расширений – *exe, *doc, *pdf и т.д., происходит их открытие и обработка в соответствующем программном обеспечении. Мало кто задумывается, каким образом происходит хранение и обработка цифрового массива в целом на соответствующем носителе.
Операционная система воспринимает физический диск хранения информации как набор кластеров размером 512 байт и больше. Драйверы файловой системы организуют кластеры в файлы и каталоги, которые также являются файлами, содержащими список других файлов в этом каталоге. Эти же драйверы отслеживают, какие из кластеров в настоящее время используются, какие свободны, какие помечены как неисправные.
Запись файлов большого объема приводит к необходимости фрагментации, когда файлы не сохраняются как целые единицы, а делятся на фрагменты. Каждый фрагмент записывается в отдельные кластеры, состоящие из ячеек (размер ячейки составляет один байт). Информация о всех фрагментах, как части одного файла, хранится в файловой системе.
Файловая система связывает носитель информации (хранилище) с прикладным программным обеспечением, организуя доступ к конкретным файлам при помощи функционала взаимодействия программ API. Программа, при обращении к файлу, располагает данными только о его имени, размере и атрибутах. Всю остальную информацию, касающуюся типа носителя, на котором записан файл, и структуры хранения данных, она получает от драйвера файловой системы.
На физическом уровне драйверы ФС оптимизируют запись и считывание отдельных частей файлов для ускоренной обработки запросов, фрагментации и «склеивания» хранящейся в ячейках информации. Данный алгоритм получил распространение в большинстве популярных файловых систем на концептуальном уровне в виде иерархической структуры представления метаданных (B-trees). Технология снижает количество самых длительных дисковых операций – позиционирования головок при чтении произвольных блоков. Это позволяет не только ускорить обработку запросов, но и продлить срок службы HDD. В случае с твердотельными накопителями, где принцип записи, хранения и считывания информации отличается от применяемого в жестких дисках, ситуация с выбором оптимальной файловой системы имеет свои нюансы.
Оптимизация дискового пространства
На свежесозданном разделе с Ext4 обычно выделяется заметно меньше свободного дискового пространства чем размер раздела. Это происходит потому, что используется порядка 1,8% на служебные нужды: заголовки групп блоков, бинарные поля для учета свободного места, индексные дискрипторы (i-node), основной и множество резервных копий суперблока.
Также по умолчанию, дополнительно резервируется 5% от объема раздела для нужд учетной записи суперпользователя (root) и системных служб (daemons). Обычно это полезно для системного корневого раздела, но на пользовательских разделах необходимости в этом резерве нет, особенно на разделах большого размера, где 5% превращаются в очень приличные объемы (недоступные пользователю).
Тем не менее с нами?
Джон Уэйн сказал, что смелость испугалась, но все равно обременяла. Я восхищаюсь кишки.
Первое, что мы собираемся сделать, это проверить версию ядра с помощью . команда может отображать различные типы информации системы.
На вашем старом компьютере Linux откройте окно терминала и введите команду следующего. Введите , пробел, , а затем нажмите Enter.
uname -r
Версия Linux на этом компьютере использует версию ядра 2.6.28-11, поэтому мы выполнили требование версии ядра.
Серьезно, если вы не соответствуете этому требованию, остановиться. Закрыть достаточно просто не хватает. Вы должны соответствовать или превышать этот номер версии ядра.
Теперь мы проверим идентификаторы дисков с помощью , который идентифицирует блочные устройства в системе.
BLKID
Эта система имеет один жесткий диск (SDA), который имеет файловую систему на нем (sda1), который установлен в / Dev / sda1. Это файловая система ext3. Это файловая система, которую мы собираемся преобразовать.
Существует также файловая система под названием swap, но это нас не интересует.
BtrFS
BtrFS от Oracle Corp – это новый тип файловой системы, которая была создана для уменьшения проблем, повышения производительности системы и упрощения восстановления.
Одна из причин, по которой многие предпочитают BtrFS для твердотельного накопителя, заключается в том, что он не использует журнал файловой системы.
Отсутствие ведения журнала позволяет сэкономить на пространстве записи (которое ограничено для твердотельных накопителей).
Кроме того, он имеет более современную архитектуру, что делает его довольно быстрым при доступе к данным.
Как и следовало ожидать, BtrFS поддерживает обычные функции SSD, такие как TRIM, и другие оптимизации SSD (такие как дефрагментация и т. д.).
Кроме того, BtrFS также имеет надежную функцию моментальных снимков, которая позволяет пользователям мгновенно создавать (и выполнять откат) изменения в системе.
Хорошо, я продан, давайте сделаем это
Давайте подумаем это до конца. На самом деле, вы, вероятно, не хотите, чтобы обновить файловую систему.
Это имеет смысл обновить всю систему Linux вместо этого. Под обновлением мы подразумеваем создание нескольких резервных копий данных, очистку системы, переустановку современного дистрибутива и восстановление ваших данных. Перейти к полному обновлению. Воспользуйтесь преимуществами современного дистрибутива Linux с обновленным программным обеспечением, а также с чистой, актуальной и недавно установленной файловой системой.
Если вы не можете запустить современный Linux на своем оборудовании, даже в одном из легких дистрибутивов, таких как Lubuntu , LinuxLite или CrunchBang ++ , и вам абсолютно необходимо придерживаться того Linux, который у вас есть, все равно есть предостережения.
Чтобы обновить файловую систему до ext4, вы должны использовать ядро версии 2.6.28 или новее. Поэтому, если у вас нет этой версии ядра или более поздней версии, вы должны сначала обновить ядро.
Предупреждение: даже не думать об этом , не удовлетворив это требование версии ядра. Вы будете в конечном итоге с незагружаемой компьютера. Проверьте, какую версию ядра вы используете, прежде чем продолжить.
Убедитесь, что у вас есть установочный диск для той версии Linux, которую вы сейчас используете, и держите его в режиме ожидания. Обновление файловой системы не без опасностей.
Резервные копии вашей сети безопасности. Прежде чем что-либо делать, сделайте пару резервных копий данных на другом носителе и убедитесь, что у вас есть этот старый установочный диск Linux. Если что-то идет не так, как надо, вы можете переустановить старый Linux и восстановить данные.
Вам также понадобится текущий Live CD / DVD современного дистрибутива Linux, чтобы выполнить обновление файловой системы. Поэтому убедитесь, что у вас есть один из тех, в руки тоже.
Кстати, эта статья была исследована с использованием в качестве компонента установки Ubuntu бойкого Jackalope, который был выпущен в апреле 2009 года он использовал ext3 в качестве файловой системы.
1.3 Группы мета-блоков (группы мета-блоков)
Обычно за каждым избыточным резервным суперблоком находится резервная копия полной таблицы дескрипторов группы блоков (включая все дескрипторы группы блоков). Это приведет к ограничению. Исходя из размера дескриптора группы блоков Ext4 в 64 байта, в файловой системе может быть не более 2 ^ 21 групп блоков, то есть максимальный размер файловой системы составляет 256 ТБ.
Группа метаблоков на самом деле представляет собой набор групп блоков, который может быть описан блоком дескриптора группы блоков.Проще говоря, он состоит из ряда групп блоков, и дескрипторы группы блоков, соответствующие этим группам блоков, хранятся в одном блоке. Его внешний вид вносит определенные изменения в структуру диска Ext3 и Ext4. Раньше за суперблоком следовал блок GDT переменной длины. Теперь суперблок по-прежнему зависит от того, является ли он степенью 3, 5 или 7, и блок Блок дескриптора группы хранится в начале первой, второй и последней группы блоков группы кортежей (см. Рисунок ниже). Мы можем использовать этот новый макет в двух ситуациях:
(1) Когда файловая система создана. Пользователь может указать использовать этот макет. Чтобы
(2) Когда файловая система растет и зарезервированные блоки дескрипторов группы исчерпаны. В настоящее время в суперблоке есть поле s_first_meta_bg для описания первой группы блоков, которая использует группу кортежей. Чтобы
При добавлении новой группы блоков нам не нужно резервировать место для таблицы дескрипторов группы, а просто добавить новую группу кортежей непосредственно за текущей файловой системой.
Несколько слов о Paragon Software
Компания Paragon Software была основана в 1994 г. студентами и выпускниками Московского физико-технического института (МФТИ), преимущественно вышедшими из компании «Физтехсофт». Первыми двумя продуктами фирмы стали Paragon DOS и Paragon BootManager. В дальнейшем к ним добавилось ПО для карманных компьютеров – компания начала с локализации популярного тогда PDA Newton и с технологии распознавания рукописного ввода Penreader.
Сегодня одним из приоритетных направлений компании является создание программных решений для управления жесткими дисками, распределения и защиты данных. Офисы группы расположены в США, Китае, Японии, Польше и России, головной офис – в немецком городе Фрайбург-им-Брайсгау.
В январе 2020 г. южнокорейская корпорация Samsung предложила собственную реализацию exFAT. Именно в ее пользу впоследствии сделали выбор разработчики Linux.
Зачем переключать файловые системы?
Ни один код не подходит для всех вариантов использования, и это также относится к файловым системам. Некоторые файловые системы выделяются по разным причинам. Файловая система FAT (File Allocation Table) – это система, которую поддерживает почти каждая современная операционная система.
Флэш-накопители USB и SD-карты используют систему FAT, так что ваш компьютер может читать их независимо от того, используете ли вы Linux, Windows, macOS или какую-либо другую операционную систему.
В наши дни, FAT не так надежна и мощна, как некоторые другие файловые системы, которые были разработаны с времён её создания.
Текущая файловая система Linux
Большинство версий настольных дистрибутивов Linux, по умолчанию используют файловую систему ext4. ext4 стал улучшением файловой системы ext3, которая, в свою очередь, развилась из ext2.
ext4 окext4 оказалась очень надежной файловой системой, но она сделана из устаревшей кодовой базы. Некоторые пользователи Linux ищут функции, которые ext4 не обрабатывает самостоятельно. Существует программное обеспечение, которое решает некоторые из этих задач, но возможность выполнять эти действия на уровне файловой системы обеспечит лучшую производительность. Отсюда и стремление к Btrfs.
1.2 Гибкая группа блоков (flex_bg)
Гибкая группа блоков (flex_bg) — это новая функция, представленная в Ext4. В flex_bg несколько блоков сгруппированы вместе, чтобы сформировать логическую группу блоков flex_bg. Пространство точечных рисунков и табличное пространство индексных дескрипторов в первой группе блоков Flex_bg расширяется, чтобы включить растровые изображения и таблицы индексных дескрипторов других групп блоков в flex_bg.
Например, flex_bg содержит 4 группы блоков, группа блоков 0 будет последовательно включать суперблок, таблицу дескрипторов группы блоков, битовую карту блока данных группы блоков 0-3, битовую карту inode группы блоков 0-3 и группу блоков 0-3. В таблице индексных дескрипторов другое пространство в группе блоков 0 используется для хранения данных файла. В то же время битовая карта блока данных, битовая карта индексного дескриптора и метаданные таблицы индексного дескриптора в других группах блоков не существуют, но SB и GDT все еще существуют. Функция группы гибких блоков:
(1) Сбор метаданных для ускорения загрузки метаданных;
(2) Делайте большие файлы на диске как можно более непрерывными;
Даже если функция flex_bg включена, резервная копия суперблока и дескриптора группы блоков все еще находится в начале группы блоков. Число групп блоков в Flex_bg задается как 2 ^ ext4_super_block.s_log_groups_per_flex.
Об авторах
Daniel Robbins
Дэниэль Роббинс — основатель сообщества Gentoo и создатель операционной системы Gentoo Linux. Дэниэль проживает в Нью-Мехико со свой женой Мэри и двумя энергичными дочерьми. Он также основатель и глава Funtoo, написал множество технических статей для IBM developerWorks, Intel Developer Services и C/C++ Users Journal.
Chris Houser
Крис Хаусер был сторонником UNIX c 1994 года, когда присоединился к команде администраторов университета Тэйлора (Индиана, США), где получил степень бакалавра в компьютерных науках и математике. После он работал во множестве областей, включая веб-приложения, редактирование видео, драйвера для UNIX и криптографическую защиту. В настоящий момент работает в Sentry Data Systems. Крис также сделал вклад во множество свободных проектов, таких как Gentoo Linux и Clojure, стал соавтором книги The Joy of Clojure.
Aron Griffis
Эйрон Гриффис живет на территории Бостона, где провел последнее десятилетие работая в Hewlett-Packard над такими проектами, как сетевые UNIX-драйвера для Tru64, сертификация безопасности Linux, Xen и KVM виртуализация, и самое последнее — платформа HP ePrint. В свободное от программирования время Эйрон предпочитает размыщлять над проблемами программирования катаясь на своем велосипеде, жонглируя битами, или болея за бостонскую профессиональную бейсбольную команду «Красные Носки».
Bigger File System and File Sizes
Currently, Ext3 support 16 TiB of maximum file system size and 2 TiB of maximum file size for 4 KiB block size. Ext4 adds 48-bit block addressing, so it will have 1 EiB of maximum file system size and 16 TiB of maximum file size for 4 KiB block size. Why 48-bit and not 64-bit? There are some limitations that would need to be fixed before making Ext4 fully 64-bit capable, which have not been addressed in Ext4, and with 4 KiB block size (212 bytes) the filesystem size limit is already 260 bytes. With 64 KiB block size the limit is 264 bytes so there isn’t really a pressing need to have full 64-bit block addresses. The Ext4 data structures have been designed in case this is ever required, so a future update to Ext4 may implement full 64-bit support at some point. 1 EiB will be enough (really :)) until that happens.
FOOTNOTES |
In order to map blocks beyond 2^32 to a file, extents must be enabled since block maps only know about 32-bit block numbers. As of e2fsprogs 1.42.9, this requirement is enforced by mke2fs.
Дефрагментация
ФС в Linux изначально спроектированы так, чтобы фрагментация файлов была как можно меньше. Тем не менее, фрагментированность файлов имеет место быть, и в некоторых случаях может привести к заметному падению производительности дисковой подсистемы.
Для Ext4 есть несколько дефрагментаторов:
e2fsprogs
-
Проверка необходимости дефрагментации:
sudo e4defrag -c /dev/<xxx>
где <xxx> — название раздела, который требуется дефрагментировать. Например, sda4.
-
запуск дефрагментации:
sudo e4defrag /dev/<xxx>
где <xxx> — название раздела, который требуется дефрагментировать. Например, sda4.
-
проверка результата (в последней строке вывода должно быть ⩽0.3% non-contiguous):
sudo fsck -n /dev/<xxx>