Btrfs

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

Въведение във файловата система Btrfs
Btrfs (B-Tree Filesystem) е модерна файлова система за копиране и запис (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 се индексират по два различни начина. За търсене на име на файл се използва индексиране въз основа на ключ. За препратка към данни се използва индексиране на ключове, базирано на inode. Индексирането на две нива подобрява производителността на търсене в директория / файл и намалява изискванията за съхранение на индексите.

v) Динамично разпределение на аноди: Нуждаете се от 1 inode за препратка към 1 файл. Много файлови системи (т.е.д., Ext4) имат фиксиран брой иноди. Така че, ако създадете твърде много малки файлове, може да ви остане много място на диска, но няма да можете да създадете нови файлове. Също така не можете да увеличите максималния брой inode след създаването на файловата система.

Btrfs решава този проблем, като разпределя иноди динамично, както са необходими. И така, можете да създадете колкото искате файлове, стига да имате свободно дисково пространство.

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

По подразбиране моментните снимки на btrfs са само за четене. След като направите моментна снимка само за четене, не можете да променяте файлове / директории в нея. Във всеки случай, ако искате да промените файлове / директории, след като сте направили моментна снимка на съществуващата си файлова система Btrfs, можете да промените моментната снимка само за четене на записваща се снимка и да модифицирате всички файлове / директории в тази снимка.

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

viii) Подкрепа за квота, съобразена с подтома: Можете да разпределите квоти и за подтомове. След като квотата бъде надвишена, няма да можете да добавяте нови данни към подтома. Няма да имате нужда от отделни програми, за да създавате квоти за подтомове Btrfs.

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

Btrfs има поддръжка за много други алгоритми за контролна сума: xxhash, sha256 и blake2b.

x) Компресия: Файловата система 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 може да ги изтрие автоматично, така че другите файлове да могат да използват тези разширения на данни.

Функцията Отхвърляне ще премахне всички разширения за данни на 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 е файлова система Copy-on-Write (CoW). Когато даден файл се модифицира, файловата система Btrfs копира оригиналните блокове с данни в нови безплатни размери и ги модифицира там.

xviii) Посевни устройства: Файловата система Btrfs поддържа начални устройства. Можете да създадете файлова система само за четене и да я използвате като шаблон (начално устройство) за създаване на други файлови системи Btrfs. Ползата от това е, че само модифицираните данни ще бъдат записани в новата файлова система. Оригиналните данни (на посевните устройства) ще се запазят такива, каквито са. Тази функция може да се използва за спестяване на много дисково пространство и излишък на данни.

xix) Изпращане / получаване на промени в подтома: Файловата система btrfs може да изпраща / получава промени в подтома. Файловата система Btrfs може да изпраща допълнителните промени на подтома към друга файлова система Btrfs (може да се намира и на друг компютър), която може да получава промените в подтома. Тази функция се използва за вземане на допълнителни резервни копия на файловата система Btrfs или локално, или отдалечено. Този метод е по-бърз и по-ефективен от rsync.

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

xxi) Поддръжка на суап файл: Ако използвате Linux Kernel 5.0 или по-нова, можете да създавате swapfiles във файловата система Btrfs.

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

- Суап файлът трябва да бъде разпределен като NoCoW (не копиране при запис)

- Суап файлът не трябва да има разрешено компресиране.

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

Файловата система Btrfs се развива активно от екипа на Btrfs. Повечето функции на файловата система са стабилни по време на писането. Някои от усъвършенстваните функции все още не са достатъчно стабилни за производствена среда. Екипът на Btrfs работи усилено, за да реши тези проблеми със стабилността.

Ако искате да използвате файловата система Btrfs на вашия производствен сървър, проверете официалната страница за състояние - btrfs Wiki, за да разберете дали функциите на файловата система, от които се нуждаете, са достатъчно стабилни за вас или не. Също така, не забравяйте да изпълните някои тестове преди окончателното внедряване на вашата файлова система Btrfs и не забравяйте да запазите резервни копия на вашите важни данни. Поддържането на архивиране винаги е важно за производствените среди.

Бъдеща подмяна на файлова система Ext4:

Файловата система Btrfs се развива бързо. Екипът за разработка на Btrfs също се грижи за стабилността на файловата система. И така, те се опитват да направят възможно най-стабилна, докато разработват файловата система btrfs. След като файловата система btrfs е напълно разработена и всички функции са достатъчно стабилни, тя може да замени файловата система Ext4.

Препратки:

[1] btrfs Wiki - https: // btrfs.wiki.ядро.org / индекс.php / Main_Page
[2] BTRFS - Документация на дървото на ядрото - https: // www.ядро.org / doc / html / latest / filesystems / btrfs.html
[3] BTRFS - Речник - https: // btrfs.wiki.ядро.org / индекс.php / Речник
[4] Характеристики на файловата система “Btrfs” - https: // www.thegeekdiary.com / features-of-the-btrfs-файлова система /
[5] Сравнение на файловите системи - https: // en.wikipedia.org / wiki / Comparison_of_file_systems
[6] Btrfs дизайн - btrfs Wiki - https: // btrfs.wiki.ядро.org / индекс.php / Btrfs_design
[7] може би свършването на инодите може да се приеме „по-сериозно“? - https: // lwn.net / Статии / 724522 /
[8] Осъществяване на снимки на Btrfs само за четене с възможност за запис - https: // markandruth.съвместно.uk / 2016/12/29 / making-a-btrfs-only-read-snapshot-writable
[9] Растягане на данни - https: // en.wikipedia.org / wiki / Data_striping
[10] ЧЗВ - btrfs wiki - https: // btrfs.wiki.ядро.org / индекс.php / често задавани въпроси
[11] Стандартни RAID нива - https: // en.wikipedia.org / wiki / Standard_RAID_levels
[12] Подстригване (изчисление) - https: // en.wikipedia.org / wiki / Trim_ (изчисления)
[13] SSD устройство - ArchWiki - https: // wiki.archlinux.org / индекс.php / Solid_state_drive # TRIM
[14] Btrfsck - btrfs Wiki - https: // btrfs.wiki.ядро.org / индекс.php / Btrfsck
[15] Преобразуване от Ext3 / 4 и ReiserFS - btrfs Wiki - https: // btrfs.wiki.ядро.org / индекс.php / Conversion_from_Ext3
[16] Инкрементално архивиране - btrfs Wiki - https: // btrfs.wiki.ядро.org / индекс.php / Incremental_Backup
[17] Дедупликация - btrfs Wiki - https: // btrfs.wiki.ядро.org / индекс.php / Дедупликация
[18] Състояние - btrfs Wiki - https: // btrfs.wiki.ядро.org / индекс.php / Състояние

Топ Oculus App Lab Games
Ако сте собственик на слушалки на Oculus, тогава трябва да знаете за странично зареждане. Sideloading е процесът на инсталиране на несъхранявано съдър...
Топ 10 игри за игра на Ubuntu
Платформата на Windows е една от доминиращите платформи за игри поради огромния процент игри, които се развиват днес, за да поддържат Windows. Може ли...
5 най-добри аркадни игри за Linux
В днешно време компютрите са сериозни машини, използвани за игри. Ако не можете да получите новия висок резултат, ще разберете какво имам предвид. В т...