Btrfs файлова система

Открих доклад от семинар на нова файлова система е все още в процес на разработване и изпитване фаза, но това вече е възможно да се види, че това е интересно развитие.

Става дума за ново поколение на файловата система. Традиционно FS е играл важна роля в Unix-базирани системи. И в много отношения FS свойства определят свойствата на дадена реализация на Unix.

Файловата система трябва да съхранява файлове и да осигури достъп до тях. В същото време тя представи голям брой изисквания често са взаимно изключващи се: подкрепа за файлове от всякакъв размер, висока производителност I / O производителност, мащабируемост и т.н. Той отдавна е ясно, че нито един от файловата система не може да бъде също толкова ефективен във всички случаи. Ето защо, всички съвременни Unix приложения поддържа множество типове файлови системи едновременно. Има една поговорка: "Linux - Unix е днес", а ядрото на Линукс поддържа повече от 50 вида на файловата система (!).

Монтаж на новото поколение

Ето един фрагмент от интервю с Крис Мейсън - основният разработчик на Btrfs:

Btrfs Опишете със свои думи.

Дали Btrfs наследник на някои други FS?

Да, всички от тях :) Има много идеи от ReiserFS, забавено разпределение и други идеи от XFS. ZFS популяризира идеята, че изчисляването на данните контролна сума може да бъде бързо, а това логично управление на силата на звука може да бъде по-добре. от изпълнението обем управление на идеята дойде от AdvFS.

Основни характеристики на Btrfs

Така че, основните характеристики на които ще бъдат в Btrfs:

Подкрепа за писане снимки (аналогов ZFS клонингите). В допълнение, можете да създадете снимки на снимки.

Подкрепа subtomov --- множество Named корени в един файл система с общ басейн на съхранение.

Подкрепа за сложни мулти-конфигурации --- нива на RAID 0, 1, 5, 6 и 10, както и прилагането на различните политики на равнището на излишък на PS обекти --- че е възможно да се определи, например, отразявайки по някаква директория или файл.

Мониторинг на целостта на блокове от данни и метаданни чрез контролни суми.

Mirroring метаданни дори в конфигурация един диск.

От гледна точка на FS устройства, следните основни точки, които правят възможни всички тези функции, комбинирани с много добро изпълнение:

B-дървета, където и да има смисъл

Lock политика - високи за детайлността ключалки.

B-дървета и дали името на файловата система (B-дърво FS). B-дървета - това silnovetvyaschiesya дървета (B-дървета по някаква причина, често се бърка с двоични дървета, вероятно защото на буквите Б, но това означава, че блокира, т.е. всеки възел обикновено е няколко хиляди потомци на B-дърво), всеки възел от които, от своя страна, съдържа голям брой записи (които обикновено се организират в двоичен дърво балансиран, по-специално, използвани в Btrfs червено-черните дървета). Четене и писане на възли B-дърво като цяло, което го прави значителен прираст в производителността прави.

Locks - това е същността, позволява да се избегнат конфликти с едновременен достъп на данни от множество нишки. Feed, който иска да направи промяна в някои структури от данни първо се проверява дали е заключен от друга нишка; ако заключена - чака докато ключалката се освобождава, в противен случай той грабва ключалката и го освобождава след запис. Когато става дума за достъп до сложни структури от данни, не е въпрос за блокиране на политика. Трябва ли да се заключва цялата структура като цяло, или всеки елемент поотделно, или елементи от някои групи? Колкото по-голям блок за заключване, толкова по-малко блокажи и по-ниски режийни разходи. По-малката - още по-ефективно консумират процесорно време, тъй като конци трябва да чакат много по-малко. Btrfs има за цел да блокира възможно най-малки елементи на структурите (но не и твърде малък).

Друг елемент, който е свързан с ключалките, е специфичен за ядрото. В основата има два вида ключалки: спин-заключване и мутекс. При използване на спин-ключалката чака конец "завъртане" в безкраен цикъл. При използване на мутекс - постижения на потока в заключено състояние TASK_INTERRUPTIBLE и "събужда" планировчика автоматично, когато освободите ключалката. Разбираемо е, че mutexes са по-ефективни, тъй като Не си губете времето на процесора на празни цикли. Въпреки това, mutexes могат да бъдат използвани в рамките на прекъсващ оператор, тъй като В това състояние, разработчикът не работи. Значителна част от функциите на всяка файлова система може да се нарече като манипулатор прекъсване, а в контекста на проблема. Ето защо, много функции трябва да използват по-малко ефективни spinlock.

Btrfs използва нов тип ключалка, която може да работи и в двата режима (и да превключвате между режимите). По този начин, един и същ код се използва в контекста на мутекси обекти и spinlocks в прекъсване на готовност.

Друга особеност на Btrfs: всички FS структура може да бъде в произволна точка места, те са свързани указатели. Това е гаранция, както и някои други FS, но Btrfs разработчиците са открили ново приложение на това: участъци курс на другите FS (в момента се прилага превръщането от ext2 / 3, конвертор от ext4 да се развива, това е теоретично възможно да се създаде преобразуватели от други FS). При конвертиране Btrfs структура, създадена в раздела за земята маркирани в първоначалния PS като свободен. В Btrfs създава специален файл, който включва блокове, структурата на заетостта на оригиналната файлова система. По този начин, тези блокове са отбелязани като заети. В допълнение, този файл е изображение на оригиналната файлова система, която може да се монтира (монтиране -o контур). Това ви позволява да се връщам към предишна файлова система. За да се освободи място на диска, просто да изтриете файла с изображението на оригиналния компютър (намаление на цените, съответно, ще изчезне).

Една от характеристиките на модерния FS наскоро предизвика незначителни скандал. Фактът, че в ядрата на UNIX (и Linux) файлова система код не се занимава пряко с данните, които се записват на диск. Данните се записват в страници на паметта, както и на тези страници са маркирани като "мръсни", а след това ги връща отделни нишки на ядрото на диск (pdflush). Така че, когато се използват съвременни FS (на новината, че е около ext4, но има същите свойства и XFS и Btrfs и много други), интервалът между писането на данни в кеша на страница и записва на диска може да достигне 150 секунди (по-голям от две минути). Unix традиционно написана за добро оборудване. По-специално, се приема, че във всяка система, от която иска стабилност, UPS използва. Ето защо, повечето от забавянето на запис не е недостатък, а предимство: тя дава възможност да се настанят повече данни успешно и да се избегне фрагментиране. И когато се използва по-малко надеждно оборудване просто трябва да се преконфигурира Sysctl ядро ​​означава да се направи pdflush спусъка повече.

Btrfs срещу Ext4

Друг публикувани наскоро FS за Linux - това Ext4. То взема предвид многото постижения на съвременната файлова система (степен, забавено разпределение и т.н.), но тя се основава на кода Ext3. Това е по-напреднала файлова система в сравнение със същия ext3, за тестове често дава по-добри резултати и може да се препоръча за използване на много машини в момента. Но в същото време не може да се нарече новото поколение FS: архитектура, останала от ext3.

Btrfs сега в експериментална фаза, разработчиците предупреждават, че сега има смисъл да се използва за тестване и експерименти сами. Дори диск формат все още не е напълно ustakanilsya. Но това със сигурност е FS ново поколение архитектура, тя прилича на ZFS прави това, но не и стария FS Linux-ядрото.

Btrfs срещу ZFS

Btrfs е най-подобна на ZFS на дружеството от нд Btrfs не поддържа дискове на астрономическата обем както на ZFS, но това е малко вероятно в близко бъдеще ще има практическа стойност. Но Btrfs има някои функции, които не присъстват в ZFS: снимки на снимки и приоритетите високоскоростни дискове, оптимизация за SSD дискове. Но ZFS вече се използва в производствените сървъри и използването на Btrfs ще бъде на масата, най-вероятно след няколко години (ако приемем, че разпределението на Btrfs също ще се развива като ZFS).

измерване на резултатите Btrfs сега малко информативни, тъй като Оптимизацията е в разгара си. Но сега го заобикаля ZFS Btrfs извършване на някои операции.

Сегашното състояние на развитие

Основни характеристики на Btrfs вече са изпълнени. Дисков формат е в близост до стабилизация, ако той ще се промени, не е много. Току-що приключи изпълнението на справяне със ситуацията на липса на място на диска (проблемът е, че действителната пишете на диск може да се появи след затварянето на файла на програмата, и това не е съвсем ясно как да се прехвърлят рекорд грешка на програмата). В разгара си, за да намерите и отстраните други грешки. При разработването на специална IOCTL-API за подкрепа на транзакциите I / O (няколко операции, съчетани в една сделка може да се извършват всички или не са спазени, наред с други неща, това помага да се намали броят на инспекциите от операциите в една сделка). Непосредствената задача - изпълнение изтривате снимки, първата версия на кода вече се появи в бюлетина.