Btrfs

Введение в файловую систему Btrfs

Введение в файловую систему Btrfs
Btrfs (файловая система B-Tree) - это современная файловая система с копированием при записи (CoW) для Linux. Btrfs стремится реализовать множество расширенных функций файловой системы, уделяя особое внимание отказоустойчивости, ремонту и простому администрированию. Файловая система btrfs разработана для поддержки требований высокой производительности и больших серверов хранения. Подходит для петабайтных центров обработки данных, а также для сотовых смартфонов.В этой статье я собираюсь обсудить файловую систему Btrfs и ее особенности. Итак, приступим.

Копировать при записи - Файловая система CoW:

Btrfs - файловая система с копированием при записи (CoW). В файловой системе CoW, когда вы пытаетесь изменить данные в файловой системе, файловая система копирует данные, изменяет данные, а затем записывает измененные данные обратно в другое свободное место файловой системы.

Основное преимущество файловой системы Copy-on-Write (CoW) заключается в том, что экстент данных, который он хочет изменить, копируется в другое место, изменяется и сохраняется в другом экстенте файловой системы. Исходный экстент данных не изменяется. Таким образом, файловая система btrfs может устранить риск повреждения данных или частичного обновления в случае сбоя питания во время модификации данных, поскольку исходные данные остаются неизменными.

Основным недостатком файловой системы Copy-on-Write (CoW) является то, что большие файлы имеют тенденцию фрагментироваться при изменении. Итак, дефрагментация требуется время от времени. К счастью, файловая система btrfs поддерживает онлайн-дефрагментацию. Таким образом, вам не нужно отключать файловую систему для дефрагментации файловой системы btrfs.

Основные характеристики файловой системы Btrfs:

Основные особенности файловой системы Btrfs:

i) Хранение файлов на основе экстентов: В файловой системе на основе экстентов единица хранения называется экстентом. Экстент - это непрерывная область хранения, зарезервированная для файла. Для одного файла требуется один экстент, независимо от размера файла. Для больших файлов (размер файла больше размера экстента) потребуется несколько экстентов. Для файлов большего размера будут использоваться метаданные, чтобы отслеживать используемые файлы. В файловой системе Btrfs размер метаданных значительно меньше. Меньшие метаданные повышают эффективность хранения и производительность файловой системы.

ii) Поддержка огромных размеров файлов: В файловой системе Btrfs размер одного файла может составлять около 264 байтов или размером 16 EiB (exbibytes). Независимо от того, насколько велик ваш файл, Btrfs может его поддержать.

iii) Компактная упаковка небольших файлов: Обычно, независимо от размера файла, для его хранения требуется один блок или один экстент. Это тратит много места на диске. Чтобы решить эту проблему, файловая система Btrfs встраивает файлы меньшего размера в метаданные для эффективного хранения файлов меньшего размера.

iv) Компактные индексированные каталоги: Каталоги файловой системы btrfs индексируются двумя разными способами. Для поиска имени файла используется индексация на основе ключей. Для ссылки на данные используется индексирование ключей на основе индексных дескрипторов. Двухуровневое индексирование повышает производительность поиска в каталогах / файлах и снижает требования к хранилищу для индексов.

v) Динамическое размещение inode: Вам нужен 1 индексный дескриптор для ссылки на 1 файл. Многие файловые системы (я.е., Ext4) имеют фиксированное количество inodes. Итак, если вы создадите слишком много маленьких файлов, на вашем диске может остаться много места, но вы не сможете создавать новые файлы. Вы также не можете увеличить максимальное количество индексных дескрипторов после создания файловой системы.

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

vi) Снимки состояния с возможностью записи и снимки, доступные только для чтения: Файловая система Btrfs поддерживает моментальные снимки. Вы можете сделать снимок текущей файловой системы, который можно использовать для восстановления данных, если вы случайно удалили некоторые файлы или повредили некоторые данные.

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

vii) Подтомы: Файловая система Btrfs может иметь много подтомов. Подтом - это именованное двоичное дерево (B-дерево) (или корень внутренней / логической файловой системы) существующего корневого дерева файловой системы (основного) файловой системы btrfs. Подтом не является самостоятельным блочным устройством. Но вы можете монтировать подтомы Btrfs индивидуально. Вы можете думать о вложенных объемах как о пространствах имен.

viii) Поддержка квот с учетом субтома: Вы также можете выделить квоты для субтомов. После превышения квоты вы не сможете добавлять новые данные в подобтом. Вам не потребуются отдельные программы для создания квот Btrfs subvolume.

ix) Контрольные суммы данных и метаданных: Чтобы избежать повреждения данных, Btrfs по умолчанию использует алгоритмы контрольной суммы crc32c для данных и метаданных файловой системы. Контрольные суммы хранятся в файловой системе для автоматической проверки ошибок файловой системы и повреждений данных в фоновом режиме.

Btrfs поддерживает множество других алгоритмов контрольной суммы: xxhash, sha256 и blake2b.

х) Сжатие: Файловая система Btrfs поддерживает прозрачное сжатие файлов. Сжатие и распаковка файлов в файловой системе btrfs автоматически выполняется в фоновом режиме.

Btrfs поддерживает 3 алгоритма сжатия: ZLIB, LZO и ZSTD.

ZLIB - метод сжатия файловой системы btrfs по умолчанию.

xi) Интегрированная поддержка нескольких устройств: Файловые системы Btrfs имеют встроенную поддержку менеджера логических томов (LVM). Вы можете добавить несколько устройств хранения в одну файловую систему btrfs. Вы также можете настроить RAID-массивы в файловой системе btrfs без необходимости в дополнительном программном обеспечении.

Файловая система Btrfs поддерживает чередование данных, зеркальное отображение данных, чередование данных + зеркалирование, а также реализации с одинарной и двойной четностью.

Чередование данных: Если вы добавили несколько устройств хранения в одну файловую систему btrfs, btrfs может хранить один и тот же файл на разных физических устройствах / разделах. Это называется чередованием данных. Чередование данных улучшает производительность чтения / записи файловой системы. RAID-0 широко использует функцию чередования данных.

Зеркальное отображение данных: Если вы добавили несколько устройств хранения в одну файловую систему btrfs, все данные, записанные на одно устройство хранения, будут записаны на все другие устройства хранения. Это называется зеркалированием данных. RAID-1 широко использует функцию зеркалирования данных.

Чередование данных + одинарная четность: RAID-5 использует чередование данных и единую распределенную четность. Если вы добавили несколько устройств хранения в файловую систему btrfs, то RAID-5 разделит данные на нескольких устройствах хранения и вычислит и сохранит блоки четности на устройствах хранения. RAID-5 может выдержать отказ одного диска.

Чередование данных + двойная четность: RAID-6 использует чередование данных и двойную распределенную четность. Если вы добавили несколько устройств хранения в файловую систему btrfs, то RAID-6 разделит данные на нескольких устройствах хранения и вычислит и сохранит блоки двойной четности на устройствах хранения. RAID-6 может выдержать отказ двух дисков. В остальном он такой же, как RAID-5 (чередование данных + единая четность).

Чередование данных + зеркалирование: RAID-10 одновременно использует чередование данных и зеркалирование данных. RAID-10 требует, чтобы четное количество устройств хранения одинакового размера было добавлено в одну файловую систему btrfs. Минимальное количество устройств хранения, которое вы можете добавить в файловую систему RAID-10 btrfs, составляет 4. Половина устройства хранения будет использоваться для чередования данных, а другая половина - для зеркального отображения данных первой половины устройств хранения (где данные чередуются).

xii) Осведомленность и оптимизация SSD: Файловая система btrfs поддерживает SSD и имеет некоторые функции оптимизации SSD. Файловая система btrfs также поддерживает TRIM / Discard для устройств хранения SSD.

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

Функция Discard удалит все расширения данных SSD. Если вы хотите продать свой SSD, эта функция может пригодиться.

xiii) Эффективное инкрементное резервное копирование: Btrfs поддерживает инкрементное резервное копирование. При первом резервном копировании файловой системы btrfs создается моментальный снимок текущей файловой системы. Затем любые последующие резервные копии будут сравниваться с первым моментальным снимком, и на диске будут сохранены только изменения. Таким образом, любые последующие резервные копии будут занимать меньше места на диске, а резервное копирование будет быстрее.

xiv) Очистка фона: Это процесс файловой системы Btrfs, используемый для поиска и исправления ошибок в файлах, которые имеют избыточные копии (множественные копии), хранящиеся в файловой системе Btrfs.

xv) Дефрагментация файловой системы онлайн: Ранее я объяснял, как работает файловая система Btrfs Copy-on-Write. Файлы большого размера хранятся в нескольких частях файловой системы Btrfs. При изменении больших файлов изменяемые экстенты копируются в разные свободные экстенты файловой системы и там изменяются. Таким образом, неизмененные экстенты данных также сохраняются на случай, если это потребуется для восстановления файловой системы. Это вызывает фрагментацию (экстенты данных большого файла не будут непрерывными и будут разбросаны по всему устройству хранения) в файловой системе по мере изменения больших файлов. Слишком большая фрагментация отрицательно влияет на файловую систему (замедляет операцию чтения / записи файловой системы).

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

xvi) Автономная проверка файловой системы: Файловая система Btrfs имеет множество встроенных инструментов, которые можно использовать для проверки ошибок файловой системы и их исправления. Вы также можете исправить сломанную файловую систему Btrfs (которая не может быть смонтирована) с помощью этих инструментов.

xvii) Преобразование существующих файловых систем Ext2 / 3/4 и ReiserFS на месте: Файловая система Btrfs имеет встроенную утилиту btrfs-convert, которую вы можете использовать для преобразования существующих файловых систем Ext2 / 3/4 и ReiserFS в файловую систему Btrfs.

Программа преобразования файловой системы Btrfs считывает метаданные существующей файловой системы Ext2 / 3/4 (или ReiserFS), создает метаданные Btrfs и сохраняет их в файловой системе. Файловая система хранит метаданные Btrfs и Ext2 / 3/4 (или ReiserFS). Файловая система Btrfs указывает на те же блоки файлов, которые используются файлами файловой системы Ext2 / 3/4 (или ReiserFS). Существующая файловая система и блоки данных остаются нетронутыми, поскольку Btrfs - это файловая система с функцией копирования при записи (CoW). Когда файл изменяется, файловая система Btrfs копирует исходные блоки данных в новые свободные экстенты и модифицирует их там.

xviii) Посевные устройства: Файловая система Btrfs поддерживает семенные устройства. Вы можете создать файловую систему только для чтения и использовать ее в качестве шаблона (начального устройства) для создания других файловых систем Btrfs. Преимущество этого заключается в том, что в новую файловую систему будут записаны только измененные данные. Исходные данные (на семенных устройствах) будут сохранены в том виде, в котором они есть. Эту функцию можно использовать для экономии места на диске и избыточности данных.

xix) Отправка / получение изменений вложенного тома: Файловая система btrfs может отправлять / получать изменения подтома. Файловая система Btrfs может отправлять инкрементные изменения субтома в другую файловую систему Btrfs (также может находиться на другом компьютере), которая может получать изменения субтома. Эта функция используется для создания инкрементных резервных копий файловой системы Btrfs локально или удаленно. Этот метод быстрее и эффективнее, чем rsync.

xx) Пакетная / внеполосная дедупликация: Файловая система Btrfs поддерживает пакетную или внеполосную дедупликацию. Дублирование происходит после записи файла в файловую систему. Файловая система Btrfs активно сканирует всю файловую систему на наличие идентичных экстентов и сохраняет только одну копию каждого экстента (удаляет избыточные / повторяющиеся экстенты). Тот же принцип копирования при записи (CoW) используется для этой задачи. Дедупликация экономит много места на диске.

xxi) Поддержка файлов подкачки: Если вы используете Linux Kernel 5.0 или новее, вы можете создавать файлы подкачки в файловой системе Btrfs.

Есть некоторые ограничения Swapfile в файловой системе Btrfs:

- Файл подкачки должен быть выделен как NoCoW (не копирование при записи)

- В файле подкачки не должно быть включено сжатие.

Стабильность файловой системы Btrfs:

Файловая система Btrfs активно развивается командой Btrfs. На момент написания этой статьи большинство функций файловой системы оставались стабильными. Некоторые из расширенных функций еще недостаточно стабильны для производственной среды. Команда Btrfs усердно работает над решением этих проблем со стабильностью.

Если вы хотите использовать файловую систему Btrfs на своем производственном сервере, проверьте официальную страницу Status - btrfs Wiki, чтобы узнать, достаточно ли стабильны для вас функции файловой системы. Кроме того, не забудьте запустить несколько тестов перед окончательным развертыванием файловой системы Btrfs и не забудьте сохранить резервные копии ваших важных данных. Хранение резервных копий всегда важно для производственных сред.

Будущая замена файловой системы Ext4:

Файловая система Btrfs быстро развивается. Команда разработчиков Btrfs также заботится о стабильности файловой системы. Итак, они изо всех сил стараются сделать его как можно более стабильным при разработке файловой системы btrfs. Как только файловая система btrfs будет полностью разработана и все функции станут достаточно стабильными, она может заменить файловую систему Ext4.

Рекомендации:

[1] btrfs Wiki - https: // btrfs.вики.ядро.org / index.php / Main_Page
[2] BTRFS - Документация по дереву ядра - https: // www.ядро.org / doc / html / последний / файловые системы / btrfs.html
[3] BTRFS - Глоссарий - https: // btrfs.вики.ядро.org / index.php / Глоссарий
[4] Особенности файловой системы «Btrfs» - https: // www.thegeekdiary.com / особенности-из-btrfs-файловой системы /
[5] Сравнение файловых систем - https: // en.википедия.org / wiki / Comparison_of_file_systems
[6] Дизайн btrfs - btrfs Wiki - https: // btrfs.вики.ядро.org / index.php / Btrfs_design
[7] возможно, к исчерпанию inode можно отнестись «более серьезно»? - https: // lwn.net / Статьи / 724522 /
[8] Делаем снимки Btrfs доступными для записи только для чтения - https: // markandruth.co.uk / 2016/12/29 / создание-a-btrfs-только для чтения-снимков с возможностью записи
[9] Чередование данных - https: // ru.википедия.org / wiki / Data_striping
[10] FAQ - btrfs wiki - https: // btrfs.вики.ядро.org / index.php / FAQ
[11] Стандартные уровни RAID - https: // ru.википедия.org / wiki / Standard_RAID_levels
[12] Обрезка (вычисление) - https: // ru.википедия.org / wiki / Trim_ (вычисления)
[13] Твердотельный накопитель - ArchWiki - https: // wiki.Archlinux.org / index.php / Solid_state_drive # TRIM
[14] Btrfsck - btrfs Wiki - https: // btrfs.вики.ядро.org / index.php / Btrfsck
[15] Конвертация из Ext3 / 4 и ReiserFS - btrfs Wiki - https: // btrfs.вики.ядро.org / index.php / Conversion_from_Ext3
[16] Добавочное резервное копирование - btrfs Wiki - https: // btrfs.вики.ядро.org / index.php / Incremental_Backup
[17] Дедупликация - btrfs Wiki - https: // btrfs.вики.ядро.org / index.php / дедупликация
[18] Статус - btrfs Wiki - https: // btrfs.вики.ядро.org / index.php / Статус

5 лучших аркад для Linux
В настоящее время компьютеры - это серьезные машины, используемые для игр. Если вы не можете получить новый рекорд, вы поймете, о чем я. В этом посте ...
Битва за Веснот 1.13.6 Выпущена разработка
Битва за Веснот 1.13.6, выпущенная в прошлом месяце, является шестой разработкой в ​​1.13.x и содержит ряд улучшений, в первую очередь пользовательско...
Как установить League Of Legends на Ubuntu 14.04
Если вы поклонник League of Legends, то это возможность для вас протестировать League of Legends. Обратите внимание, что LOL поддерживается в PlayOnLi...