Переход на новую файловую систему, это всегда сложная задача. Мы уже доверяем старой, проверенной файловой системе. Она может даже имеет некоторые ограничения функциональности и производительности, но зато никогда нас не подводила. Новые файловые системы предлагают очень большое количество функций, но возникает вопрос, можно ли им доверять?
Одной из таких файловых систем является Btrfs. Это относительно новая файловая система, которая появилась в 2007 году и была разработана компанией Oracle. Она предлагает очень широкий набор новых возможностей и поэтому сильно интересует пользователей, но до сих пор в сети ходят слухи, что эта файловая система еще не пригодна для постоянного использования. В этой статье мы попытаемся разобраться какие возможности нам дает Btrfs, а также действительно ли ее уже можно использовать.
Содержание статьи
Что такое Btrfs?
Как я уже сказал, Btrfs была разработана компанией Oracle в 2007 году. Одной расшифровки названия нет, одни говорят, что это значит B-tree FS, другие Better Fs. Также как и в других файловых системах, все данные хранятся на диске по определенным адресам. Эти адреса сохранены в метаданных. И тут уже начинаются различия. Все метаданные организованны в виде b-деревьев. Это дает большую производительность при работе с файловой системой, а также позволяет добавлять неограниченное количество файлов.
Но даже это еще не все. Когда вы перезаписываете файл, данные не перезаписываются, а лишь модифицированная часть копируется в новое место, Затем просто обновляются метаданные. Это позволяет создавать мгновенные снимки файловой системы, которые не занимают места на диске, пока не было внесено много изменений. Если же старый блок больше не нужен, потому что он не является частью какого-либо снимка, то он автоматически удаляется.
Из-за своей структуры Btrfs имеет огромные возможности, например, она может работать с современными очень большими носителями данных. Максимальный размер файловой системы составляет 16 Экзабайт. Это все возможно благодаря правильному использованию пространства на диске. Другие файловые системы используют жесткий диск целиком, от начала до конца для записи своей структуры.
Btrfs поступает по-другому. Каждый диск, независимо от его размера делится на блоки по 1 Гб для данных и 256 Мб для метаданных. Затем эти блоки собираются в группы, каждая из которых может храниться на разных устройствах, количество таких блоков в группе может зависеть от уровня RAID для группы. Менеджер томов уже интегрирован в файловую систему, поэтому больше никакое дополнительное ПО использовать не нужно.
Защита и сжатие данных тоже поддерживается на уровне файловой системы так что здесь вам тоже не нужны дополнительные программы. Также файловая система btrfs поддерживает зеркалирование данных на нескольких носителях. Вот другие особенности btrfs, которые можно упомянуть:
- Поддержка снимков файловой системы, только для чтения или для записи;
- Контрольные суммы для данных и метаданных с помощью алгоритма crc32. Таким образом, можно очень быстро определить любые повреждения блока;
- Сжатие с помощью Zlib и LZO;
- Оптимизация для работы с SSD, файловая система автоматически определяет ssd и начинает вести себя по-другому;
- Фоновый процесс для обнаружения и исправления ошибок, а также дефрагментации и дедупликации в реальном времени;
- Поддерживается преобразование из ext4 и ext3.
Все это очень хорошо, но можно ли уже использовать эту файловую систему? Попробуем разобраться и с этим.
Готова ли Btrfs к использованию?
Вокруг Btrfs до сих пор сохранилось много неправильных представлений. Многие из них происходят от реальных проблем, которые были в начале разработки файловой системы. Но люди, просматривая эту информацию не смотрят на ее дату. Да Btrfs действительно была нестабильной и неустойчивой. Было очень много проблем с потерей данных и много пользователей писали об этом, но это было еще в 2010 году.
Самая важная часть файловой системы - это ее формат хранения на диске. Но формат файловой системы Btrfs уже зафиксирован, это случилось еще в 2012 году и он больше не изменяется без крайней необходимости. Это само по себе достаточно, чтобы признать стабильность btrfs.
Но почему же Btrfs считается многими нестабильной? Этому есть несколько причин. Во-первых, это боязнь пользователей к новым технологиям. Это было не только в Linux, но и в Microsoft, при их переходе на NTFS, и в Apple. Но здесь есть некоторый парадокс, файловая система XFS прошла 20 лет стабильного развития, но самой стабильной файловой системой считается ext4, которая была разработана из форка ext3 в 2006 году. Фактически она на год старше Btrfs.
Вторая причина в активной разработке, хотя формат хранения данных заморожен, основная кодовая база еще активно разрабатывается и там есть еще много места для улучшения производительности и внедрения новых функций.
Но уже есть много подтверждений, что файловая система готова. Эта файловая система используется на серверах Facebook, где компания хранит свои важные данные. А это уже само по себе важный фактор. Над улучшением файловой системы работают такие компании как Facebook, SuSE, RedHat, Oracle, Intel и другие. Эта файловая система используется в SUSE Linux Enterprise по умолчанию, начиная с выпуска 12. Все эти факторы вместе доказывают, что файловая система вполне готова к использованию. А учитывая функциональность и особенности btrfs ее уже можно использовать.
Использования Btrfs
Почему стоит использовать Btrfs и стоит ли вообще, разобрались. Теперь хотелось бы показать немного практики, чтобы вы могли оценить эту файловую систему в действии. Я буду приводить примеры на основе Ubuntu. Сначала установим инструменты для управления файловой системой:
sudo apt install btrfs-tools
Создание файловой системы btrfs
Сначала нужно создать файловую систему. Допустим, у нас есть два жестких диска /dev/sdb и /dev/sdc, мы хотим создать на них единую файловую систему с зеркалированием данных. Для этого достаточно выполнить:
sudo mkfs.btrfs /dev/sdb /dev/sdc
По умолчанию будет использоваться RAID0 для данных (без дублирования, и RAID1 для метаданных (дублирование на один диск). При использовании одного диска метаданные тоже дублируются, если вы хотите отключить это поведение можно использовать опцию -m single:
sudo mkfs.btrfs -m single /dev/sdb
Но делая это, вы повышаете опасность потери данных, поскольку если метаданные будут утеряны, то данные тоже.
Посмотреть информацию о только что созданной файловой системе вы можете командой:
sudo btrfs filesystem show /dev/sdb
Или обо всех подключенных файловых систем:
sudo btrfs filesystem show
Монтирование btrfs
Для монтирования используйте обычную команду:
sudo mount /dev/sdb /mnt
Вы можете монтировать любой из дисков, это приведет к одинаковому эффекту. Строчка в /etc/fstab будет выглядеть так:
Теперь смотрим информацию о занимаемом месте на дисках:
sudo btrfs filesystem df /mnt
Сжатие в btrfs
Для включения сжатия достаточно добавить опцию compress при монтировании. Ей можно передать алгоритм lzo или zlib:
sudo mount -o compress=lzo /dev/sdb /mnt
sudo mount -o compress=zlib /dev/sdb /mnt
Восстановление Btrfs
Для восстановления поврежденной Btrfs используйте опцию монтирования recovery:
sudo mount -o recovery /dev/sdb /mnt
Изменение размера
Вы можете изменить размер тома в реальном времени, для этого используйте команду resize:
sudo btrfs filesystem resize -2g /mnt
Уменьшит размер на 2 гигабайта. Затем увеличим на 1 Гигабайт:
sudo btrfs filesystem resize +1g /mnt
Создание подтомов
Вы можете создавать логические разделы, подтома внутри основного раздела с помощью Btrfs. Они могут быть примонтированы внутри основного раздела:
sudo btrfs subvolume create /mnt/sv1
sudo btrfs subvolume create /mnt/sv2
sudo btrfs subvolume list /mnt
Монтирование подтомов
Вы можете примонтировать подтом по id, полученному с помощью последней команды:
sudo umount /dev/sdb
sudo mount -o subvolid=258 /dev/sdb /mnt
Или вы можете использовать имя:
sudo mount -o subvol=sv1 /dev/sdb /mnt
Удаление подтомов
Сначала подключите корень btrfs вместо подтома:
sudo umount /mnt
sudo mount /dev/sdb /mnt/
Чтобы удалить подтом можно использовать путь монтирования, например:
sudo btrfs subvolume delete /mnt/sv1/
Создание мгновенных снимков
Файловая система Btrfs позволяет создавать мгновенные снимки изменений. Для этого используется команда snapshot. Например, создадим файл, затем сделаем снимок:
touch /mnt/sv1/test1 /mnt/sv1/test2
Создаем снимок:
sudo btrfs subvolume snapshot /mnt/sv1 /mnt/sv1_snapshot
Дефрагментация btrfs
Из-за использования копирования при записи может возникать фрагментация. Чтобы запустить дефрагментацию файловой системы используйте команду:
sudo btrfs filesystem defrag /mnt
Выводы
Как видите, файловая система btrfs очень интересная и перспективная. К тому же она уже полностью готова к использованию и достаточно стабильна. А вы уже пользуетесь Btrfs? Собираетесь пользоваться после прочтения статьи? Напишите в комментариях внизу!
Не ясно, какик преимущества, а точнее производительность, допустим на HDDD
Не ясно, какик преимущества, а точнее производительность, допустим на HDD 5400 оборотов, какие + использования для устаревшего оборудования?
Если фс сжатая прирост при использовании HDD есть. С hdd меньше информации запрашивается. (+этоже сжатие, жмем данные). И кто сказал что hdd устаревший:) Также по тестам btrfs обходит ext4(не вау, но обходит). Но есть фрагментация(в статье не описан флаг автодефрагментации). Ну и использование cpu на сжатие(зависит от методов) но если это запихнуть на файлы(использовать явно стоит).
2 вопроса быстрее ли она чем та же ext4 и стабильна ли она так же как ext4
1. Определенно быстрее.
2. Вполне стабильна.
Два года на btrfs. Корень на SSD, хомяк на софтовом RAID10 из 4-х WD RED. Ни единого сбоя, и даже повода. Комп в работе 24\7\365
пользуюсь btrsf уже около 2-х лет. Раньше использовал на Ubuntu. Теперь на OpenSuse /, /home, /mnt - короче, всё на btrfs. Нареканий вообще нет. Для системы на SSD, файлопомойка на HDD WD1Tb 5400 - оптимальная FS (имхо)
вопрос к автору: дефрагментация btrfs - всё как у вас на скрине, но! Где хрюкание подшипников HDD? Чет подозрительно быстро всё происходит.... Раскройте тему плз
Прошу Вас о помощи!
Конвертировал свои разделы /, /home из ext3 в btrfs. Эти разделы физически находятся на разных дисках (так же как и у Вас). Что мне сделать (хотя бы где можно вычитать), чтобы это все дело было в одном дереве? Чтобы полностью пользоваться всеми прелестями btrfs.
Посмотрите в Ubuntu Wiki - http://help.ubuntu.ru/wiki/btrfs#btrfs_на_нескольких_устройствах
спасибо
Без возможности просматривать и читать данные из под Винды, практическое использование ее на компах с дуалбутом не имеет смысла. Остаюсь на EXT4
Хаха, вы и ext4 из под винды читаете?(по дефолту) 🙂 ну-ну...
Для винды есть отличный драйвер WinBtrfs. Отлично работает. Вроде без сбоев. По производительности немного проигрывает ntfs.
Как сконвертировать ext4 в btrfs киньте линк пожалуйста . Что то не нахожу . Может этого и нет ?
Не знаю, совпадение или нет, но однажды утром у меня не загрузилась убунта 16.04, которая стоит на SSD-диске, отформатированном в brfs. Вечером просто как обычно выключил комп, лег спать, А утром при загрузке все зависло на заставке. Обновлений до этого никаких не прилетало. Лень было разбираться что к чему, восстановился из заранее сохраненного образа. C ext4 такого не было.
"Лень было разбираться что к чему"
А то вдруг бы узнали что btrfs тут и не причем?
БТР-fs — ещё одна расшифровка, т.с. с военным привкусом.
🙂
Интересно, можно ли управлять этой файловой системой через Webmin? Они на своем сайте предлагают установить специальное дополнение к своему продукту.
Применяю btrfs около 2-х лет. До того просмотрел кучу информации в интернете. И пришёл к выводу, что все страшилки по поводу btrfs на данный момент не более чем мифы древней Греции.
btrf давно стабильна,на дворе ядро 4.14 а где и 4.17 , а страшилки что гуляют по сети,давно баян уже... все они относятся к древним ядрам,на которых уже поди и не сидит никто да лучше для ssd всё равно ничего не существует
1.5 года на btrfs, полет нормальный!
Мифы о ненадёжности btrfs не выдумка, я на нескольких компах установил ОС на btrfs, они проработали около года, после череды повторяющихся проблем и глюков мне пришлось вернуть Ext4. Это всё происходило не в 2010 году, а в 2017!
В 2018 году я купил себе SSD и решил, в который раз, попробовать btrfs. И что вы думаете, через два дня система отказалась загружаться!!! После чего я переустановил ОС на Ext4 и забыл о глюках ФС!
Скажете я не умею готовить btrfs, но Ext4 не надо было готовить, она просто работает и работает отлично и надёжно.
И как любят писать диванные эксперты:
10 лет на Ext4 , полёт нормальный!!!
Господа!
Очень удивлен тем, что ни автор, ни в комментариях, не упоминают самых главных "фишек" btrfs. Как то:
1. Возможность работать с диском\разделом в заданное количество потоков. Нравится ext4? Супер. Я работаю с машинами, у которых более 1 ядра. Для ext4 - разницы нет, хоть одно, хоть 64. Btrfs будет использовать столько потоков, сколько укажете в опциях монтирования. Причем, опыты показали, что производительность между 4 и 6 потоками для 4х-поточной машины на интенсивных операциях ввода-вывода составляет порядка 10(!) процентов.
Сия волшебная опция в строке fstab выглядит так:
thread_pool=n
где n - потоков.
2. Сжатие данных "на лету". Еще одна бесценная "мелочь" опции монтирования раздела btrfs: можно не просто смонтировать, указав алгоритм сжатия (gzip лил lzo), но и указать, стоит ли всегда пытаться сжимать попадающие на диск данные. Т.е., можно получить идеальную ситуацию, когда всякие txt, html, doc и прочие - сжимаются "на лету", а lrz, mkv, bin и тд - нет. Не углубляясь в документацию, приведу примеры опций монтирования:
compress-force=zlib:9 # <-- Вот вам, архиватор "на лету". Но, тормозить будет нереально;
compress-lzo #<-- Сжатие легких файлов, ощутимо ускоряет ввод/вывод, незаметно для процессора(ов);
compress=no #<-- Отключает компрессию, которая по-умолчанию работает всегда(!). Только, если Вы этим процессом не управляете, система сама решает, что-когда-как ей сжимать)
Фишек - много. Но, без вышеуказанного, уверен, использовать btrfs не стоит)
P.S. Я уж не буду упоминать о том, что с ядра 4.14, в стандартное Unbreakable Enterprise Kernel (UEK-R5) by Oracle Linux добавлен еще один алгоритм сжатия - ZSTD, совместимый с ZLIB, но более производительный. Ему также можно задавать уровни компрессии
Cпасибо за развернутый комментарий, с 2014 начал пробовать пользоваться BTRFS. Действительно без сбоев, и очень быстрая у меня на арче.
Про некоторые фишки не знал, особенно про потоки, обязательно попробую!
sudo apt install btrfs-tools - уже не актуален, пора обновлять статью
2DJALIN
Теперь, кажись, на Фоссе они поменяли название пакета btrfs-tools на btrfs-progs
Так что теперь sudo apt install btrfs-progs
При монтировании фс опция recovery уже устарела.
https://btrfs.readthedocs.io/en/latest/Administration.html#deprecated-mount-options
В начале нынешнего года потратил несколько недель на изучение BtrFS в силу настоятельного интереса к данной файловой системе: читал документацию, общался с сообществом, ставил эксперименты. В результате сам для себя заключаю, что на текущем этапе развития BtrFS — это самое несуразное, что предлагают на выбор (а иной раз и навязывают) современные дистрибутивы. Ведь положение дел таково, что каждое ее достоинство при ближайшем рассмотрении само собою оборачивается недостатком. Например:
— Моментальные снимки могут показаться заманчивым методом резервного копирования, однако их количество не должно превышать 12-ти во избежание ущерба производительности, что ощутимо связывает руки в некоторых областях применения.
— Исключить директорию из моментального снимка можно только путем ее трансформации в подтом, чем вносится ряд издержек в дальнейшее обращение с этой директорией, во главе которых – невозможность копировать файлы за пределы получившегося подтома без совершения записи новых блоков, так как создание файловых ссылок между томами не поддерживается.
— Прозрачное шифрование позволяет экономить место на диске, но замедляет накопители с интерфейсом NVMe до уровня SATAIII и вдобавок малоэффективно для мультимедийных данных, занимающих большую часть диска на типичном домашнем ПК.
— Copy on Write – основная механика системы, порождает проблему фрагментации нестатичных массивов данных, таких как торренты и образы виртуальных машин, а также не вполне сочетается с функцией предварительного выделения, которая призвана противостоять этой самой фрагментации в традиционных файловых системах. Следовательно, в таких каталогах функцию CoW рекомендуется отключать, но вместе с ней отключается и вышеназванное прозрачное сжатие (на счет снимков точно не скажу).
— Опция монтирования autdefrag (проверьте свой fstab), также направленная на профилактику фрагментации файловой системы (не путать с фрагментацией диска и опцией discard), провоцирует увеличение общего объема записываемых данных на 15-30%. а из-за бага в версиях ядра с 5.16 по 5.16.5 и вовсе взвинтила нагрузку на диск до такой степени, что пожрала ресурс SSD на машинах некоторых пользователей (а ведь BtrFS, напомню, уже используется по умолчанию во многих крупных дистрибутивах). Да и в целом, коэффициент амплификации записи (см. Write Amplification) у BtrFS сильно превышает таковой у EXT4, XFS и F2FS.
— Ручная дефрагментация тоже несет издержки. К примеру, при ее выполнении ликвидируются прежние файловые ссылки, что ведет к увеличению объема хранимых данных и опять точит ячейки SSD.
— С массивами RAID все тоже непросто – в сети можно найти подробный обзор главных проблем BtrFS в этой области.
Наверное, этот список можно продолжить далее, но лично мне хватило и изложенного, чтобы повернуться вспять к XFS и EXT4. Жаль, что в популярных обзорах "файловой системы будущего" о таких нюансах не говорится. Меж тем, масса изъянов, обнаруживающихся спустя 15 лет разработки, наводит на мысль, что BtrFS еще не скоро станет продуктом, готовым к употреблению, если станет вообще. На что смотрят разработчики Fedora и Manjaro, отдавая ей свое предпочтение – загадка.
прочел с удовольствием, спасибо за такой развернутый коммент!
Полностью солидарен с вышесказанным.
Данная файловая система интересна только в ряде специфических задач, как накопление и хранение относительно холодных данных перед тем, как все это записать на ленту.
Все вышесказанное предыдущим комментатором верно и по сей день, и как мне видится, полезно только в рамках NAS хранилищ, но ни как не на рабочей системе, где производятся постоянные изменения даных.