Кент Оверстрит (Kent Overstreet) представил (https://lkml.org/lkml/2017/3/15/813) в списке рассылки ядра Linux значительное обновление файловой системы Bcachefs (https://bcache.evilpiepirate.org/Bcachefs/), развиваемой с использованием технологий, уже опробованных при разработке Bcache (https://www.opennet.me/opennews/art.shtml?num=35849) (блочное устройство для кэширования доступа к медленным жестким дискам на быстрых SSD-накопителях). В файловой системе используется (http://bcache.evilpiepirate.org/BcacheGuide/) механизм Copy-on-Write (COW), при котором изменения не приводят к перезаписи данных - новое состояние записывается в новое место, после чего меняется указатель актуального состояния.
Особенностью Bcachefs является поддержка многослойного подключения накопителей, при котором хранилище компонуется из нескольких слоёв - к нижнему слою подключаются наиболее быстрые накопители (SSD), которые используются для кэширования часто используемых данных, а верхний слой образуют более ёмкие и дешёвые диски, обеспечивающие хранение менее востребованных данных. Между слоями может применяться кэширование в режиме отложенной записи (writeback).Кроме типовых возможностей POSIX ФС, например xattrs и ACL, Bcachefs предоставляет доступ к таким расширенным функциям, как возможность подключения к разделу нескольких устройств, репликация (RAID), кэширование, прозрачное сжатие данных и верификация целостности данных и метаданных по контрольным суммам. Из пока не реализованных возможностей отмечается поддержка квот и снапшотов, возможность экспорта через NFS. Среди нерешённых проблем отмечается большое время монтирования, вызванное тем, что во время монтирования осуществляется обход всех inode, dirent-ов и extent-ов.
На данном этапе развития Bcachefs находится на стадии бета-версии, при этом стабильности и надёжности уделяется первичное внимание, но дисковый формат ещё окончательно не зафиксирован и может меняться в будущем. Большим плюсом Bcachefs является задействование в проекте уже отлаженных и проверенных временем технологий Bcache, что позволяет добиться изначально высокого уровня стабильности. Отмечается, что Bcachefs уже вполне пригоден для использования на ноутбуках и серверах, но так как ФС относительно новая рекомендовано регулярное создание резервных копий. По производительности Bcachefs опережает Btrfs и другие ФС на базе механизма Copy-on-Write, демонстрируя производительность, близкую к Ext4 и Xfs. Bcachefs также хорошо масштабируется и уже протестирована в работе хранилища, размером 50 Тб.
Ключевые улучшения в новой версии Bcachefs:- Полноценная поддержка шифрования (https://bcache.evilpiepirate.org/Encryption/) всей ФС. Для шифрования применяется потоковый шифр ChaCha20 (http://cr.yp.to/chacha.html) и алгоритм аутентификации сообщений (MAC) Poly1305 (http://cr.yp.to/mac.html), разработанные Дэниелом Бернштейном (Daniel J. Bernstein (http://cr.yp.to/djb.html)), Таней Ланге
(Tanja Lange) и Питером Швабе (Peter Schwabe). ChaCha20 и Poly1305 можно рассматривать, как более быстрые и безопасные аналоги AES-256-CTR и HMAC. В отличие от реализации (https://www.opennet.me/opennews/art.shtml?num=42028) шифрования в Ext4, в Bcachefs не поддерживается шифрование отдельных частей ФС - зашифровано может быть только всё содержимое ФС. По производительности реализация шифрования в Bcachefs близка к dm-crypt, но, при этом, dm-crypt не поддерживает аутентифицированное шифрование;
- Резервное копирование суперблоков, позволяющее всегда иметь резервную копию на случае повреждения основного суперблока;- Новый более компактный и расширяемый формат inode. В среднем в Bcachefs размер inode составляет 50-60 байт, что позволяет кэшировать все метаданны в ОЗУ;
- Возможность подключения нескольких накопителей к одному разделу доведена до состояния, пригодного для использования. Улучшен инструментарий для управления накопителями из пространства пользователя. Обеспечена базовая поддержка репликации (RAID1/10), в том числе с возможностью перевода одного из дисков в offline без остановки работы ФС;
- Реализация утилиты fsck для проверки и восстановления целостности ФС в пространстве пользователя. Ранее функциональность fsck была реализована на уровне ядра и могла вызываться только в момент монтирования. По сути, утилита fsck стала результатом работы по переносу частей Bcache в пространство пользователя, т.е. в утилите fsck представлен тот же код проверки, что ранее применялся на уровне ядра. Более того, почти весь код Bcachefs теперь может быть оформлен в виде библиотеки, работающей в пространстве пользователя. Данный код уже задействован в реализации команд "bcache dump" и "bcache migrate";- Новая команда "bcache dump", позволяющая в отладочных целях сохранить дамп всех метаданных в форме образа в формате qcow2. Например, данную возможность можно использовать для создания копии метаданных для последующей отправки разработчикам ФС, в случае если fsck не может решить возникшую проблему;
- Добавлена команда "bcache migrate", позволяющая на лету перенести содержимое существующей ФС в Bcachefs без потери старых данных. Метод основан на создании в старой ФС одного большого непрерывного файла, после чего на блочном устройстве создаётся раздел Bcachefs, использующий только блоки, выделенные для этого файла. После этого на новый раздел переносятся все данные из старой ФС. Далее можно примонтировать новый раздел вместо старого (используя опцию offset в команде mount) и убедиться, что все данные перенесены корректно, или одновременно примонтировать старую и новую ФС и сверить идентичность данных ("rsync --itemize-changes").
URL: https://lkml.org/lkml/2017/3/15/813
Новость: http://www.opennet.me/opennews/art.shtml?num=46209
Bcache до сих пор толком не доделал, но уже надо пилить на нём ФС с перделками и свистелками.
Почему не доделал? Bcache закоммичен в ядро, проблем вроде не наблюдается, менять там вроде уже нечего.
Только bcache — это "не совсем" кэш.
"""Дайте мне устройство, я там всё потру и сделаю как надо. Полученное нацеплю на новое устройство и вы будете пользоваться им. Не забывая молиться, чтобы там ничего не поломалось. (Автор считает, что ломаться в таком прекрасном кэше нечему, инструмента для ремонта — не нужно.)"""
Почти без сарказма. Сам остановился на fscache для локалхоста, подперев им зеркало хомятника на xfs. В продакшене только с zpool-(read+write) работал /там оно раздельно/. * Есть ещё lvm-cache но оно afaik только чтение и как-то выхлоп не особо.
знаток.
> Автор считает, что ломаться в таком прекрасном кэше нечему, инструмента для ремонта — не нужно.Напомнило о том, что "extfs не фрагментируется, поэтому и дефрагментатора нет". А оказалось, как обычно, просто не написали. А когда наконец-то написали, то, оказалось, что конечно же тоже фрагментируется.
ЛЛЛЛОООООЛ, это ганище из 20ти с фигом дисков я разобрал, человек и не подумал бы:, что штатный HW рейд с 2гб кеша уделывает эти пляски на раз два. Не майтесь дурью:, а то потом восстанавливай после вас
> ЛЛЛЛОООООЛ, это ганище из 20ти с фигом дисков я разобрал, человек и
> не подумал бы:, что штатный HW рейд с 2гб кеша уделывает
> эти пляски на раз два. Не майтесь дурью:, а то потом
> восстанавливай после васМеня удивляет такие коментарии хорошо у вас 20 дисков и hw райд мы за вас рады, но вы как то забываете юзюркейс может быть разные. А то я вам раскажу как полка с двумя райд контролерами развалилась то еще удовольствие собирать.
Не судите и не судите будите
Надо же, два года юзаем в продакшене, а мужики-то и не знают.
Непонятно, почему в новости упор делают именно на многослойное подключение устройств. Если кто не в курсе, Bcachefs - ФС общего назначения, конкурент всяким там Btrfs.
Желаю автору Bcachefs успехов. Btrfs, похоже, физически невозможно допилить до стабильного состояния, столько лет её пилят. А у автора вполне может получиться что-то юзабельное.
а что сейчас не так с btrfs? Я как-то давно жалоб не слышал
> Я как-то давно жалоб не слышалзначит никто ее не использует
Исользую btrfs уже три года как, может даже больше, за время использования еще ни разу не терял данные. Просто обожаю эту ФС за возможность мгновенно делать снапшоты и так же мгновенно к ним откатыватся. Поломал что-то случайно - одна команда в консоли и вновь все работает.
Кстати, с монтированием образов virtualbox тоже как-то не возникало проблем, все монтируется и нормально работает.
В общем, не понимаю я всех тех, кто кричит, что btrfs еще не готов, еще как готов, а дальше все будет становится только лучше.
В btrfs недавно выскочил баг в реализации RAID 5/6.
ФС разарбатывается с 2007 г., а до сих пор ей нельзя доверять.
Про кодовую базу пишут, что там мало кто может в ней разобраться.
угу, ясно. Хотя как по мне - если баги выстреливают только в таком относитлеьно молодом коде, как raid5/6 - то более чем приемлемо пользоваться более старыми/стабильными фичами.
Тем, что половина фич "Mostly ok", даже raid1/10, а raid5/6 вообще не пригодный к использованию: https://btrfs.wiki.kernel.org/index.php/Status
Посмотрел - вроде вывод как раз обратный. mostly ok - это mostly ok, годится для применения, но есть отдельные приколы. Не говоря о том, что RAID - штука отнюдь не всегда необходимая (а когда необходимая - то обычно лучше взять LVM/MD/xfs, они большие объёмы всяко лучше перенесут). Насколько я понимаю, основная практическая плюшка btrfs по сравнение с ext4/xfs - это консистентные на уровне ФС дешёвые снапшоты, всё остальное - вишенки на торте.
оказалось что убивать zfs уже не надо..
Btrfs с образами виртуалок вообще не дружит без танцев, как и с базами. Интересно как у этой ФС. Снапшоты запилят, попробую на десктопе. Btrfs теперь уже достаточно стабильна даже при внезапных отключениях питания. Bcache использую давно и никаких нареканий. Два слоя из которых собран диск, на котором развернута btrfs, объединяющая zram+bcache_disk. В результате, сначала заполняется zram, потом пирог из ssd+hdd. Просто эксперимент был, будет ли работать :) Работает уже давно, /tmp в таком конструкте храню.
А что с виртуалками не так? С какими-то конкретными, и какие проблемы?С базами вроде есть решение. Директории, в которой хранятся файлы БД, отключают CoW. Ну надо ещё сами файлы переписать, чтобы выключить CoW для блоков, в них содержащихся.
ЗЫЖ сам пока это решение не пробовал, только присматриваюсь.
О, вроде эту ФС я ждал из-за LZ4...
Пока допилят до стабильного уровня, станет ненужным. SSD уже перешагнули терабайтный барьер, осталось только подешеветь.
При чём здесь SSD? Новость не читал?
Дешеветь они ещё долго будут.Сейчас терабайтник HDD можно взять за 2-3 тысячи. За такого же объёма SSD необходимо выложить тридцатку. Разница же на порядок. Простым смертным это пока не по карману.
Из интереса только что на яндекс.маркете посмотрел, что можно взять за 100$. В общем, я нашёл трёхтерабайтники HDD и максимум 180 гигов на SSD. Стало быть за те же деньги в 17 раз меньший объём.
Я SSD, конечно, желаю успеха, но ситуация что-то не меняется год от года. Они очень маленькие и дико дорогие. При этом для домашней машины особо быстрые диски и не нужны как бы. А для улучшения производительности можно и рамы побольше в систему поставить. Один фиг линуксы перезагружаются не чаще, чем раз в полгода.
>[оверквотинг удален]
> пока не по карману.
> Из интереса только что на яндекс.маркете посмотрел, что можно взять за 100$.
> В общем, я нашёл трёхтерабайтники HDD и максимум 180 гигов на
> SSD. Стало быть за те же деньги в 17 раз меньший
> объём.
> Я SSD, конечно, желаю успеха, но ситуация что-то не меняется год от
> года. Они очень маленькие и дико дорогие. При этом для домашней
> машины особо быстрые диски и не нужны как бы. А для
> улучшения производительности можно и рамы побольше в систему поставить. Один фиг
> линуксы перезагружаются не чаще, чем раз в полгода.Пофлудить
Так у меня лаптоп. И запись на диск мне нужна редко.
Кстати объясните мне пожалуйста почему у меня виртуалка с видовс 10 грузится секунд 30 с этого же диска конечно после того как загрузиться сам лаптоп
>Сейчас терабайтник HDD можно взять за 2-3 тысячи. За такого же объёма SSD необходимо выложить тридцатку. Разница же на порядок. Простым смертным это пока не по карману.А я вот не простой смертный, у меня HDD - FC HDD и оно было ~$800.00 / 1TB ...
Когда нужно было сделать реактивный сторидж под очень "горячую" DB - собрали самопал на самсовских терабайтниках (PRO series) ... DB-шнеги костьми легли - но протащили это в продакшен :)
Правда нынче это и за деньги купить можно ;-) Eссссно - сертифаед и задорого :)
> При этом для домашней машины особо быстрые диски и не нужны как бы.Не соглашусь, как имеющий (имевший, вернее) оба варианта и чувствовавший разницу.
> А для улучшения производительности можно и рамы побольше в систему поставить.
Одно другого не исключает. Но ССД в системе — маст хэв, мне кажется.
SSD тоже можно кэшировать: дешёвые SATA TLC — на быстрых NVMe 3D MLC, а те — на 3D Xpoint, MRAM или NVRAM-накопителях.
>>> ChaCha20 и Poly1305Вот завязка на конкретные алгоритмы напрягает очень сильно. Pluggable был бы лучше, конечно.
А OpenSSL вас, значит, совсем не напрягает?
А можно сделать файловую систему, которая будет хранить информацию как нейросеть? Не перезаписывать или писать рядом (дежавю к магнитной ленте), а послойно, поверх, не затирая старое?
Так вон CoW - как раз оно, нет?
сейчас так принято: любую непонятную вещь называть "нейросеть" ;)
вы просто не в тренде
Можно, только будет FS с потерями.
Интересная штуковина, ребят а как bcache на лаптопе ?есть смысл скрещивать 120 gb ssd и 1 tb hdd? А то у меня этот диск просто валяеться. Убунту 16
Да так же работает, как и на десктопе — просто работает.Если валяется hdd, то с bcache станет медленнее (но объём подрастёт).
Если ssd, то скорость вырастет заметно при том же объёме.Скрестил 256ГБ ssd с двумя 1ТБ hdd в зеркале, доволен (уже несколько лет).
А толковое руководство по настройке есть?
А то все что попадались - показались какими-то слишком хитрыми, поэтому я остановился на lvm-cache, что, пока что, более чем устраивает - а главное налету отрубается и забывается.
> А толковое руководство по настройке есть?Оно «из коробки» работает без проблем, настраивать не нужно.
Мне вот только не понравилось, что оно относительно недавно начало постоянно дёргать харды (дурацкие, на мой взгляд, умолчания для writeback). Но всё настраивается через /sys/block/bcacheX/bcache/ и, наверное (надеюсь!), аргументы ядра (но у меня пока руки не доходят).Документировано оно, конечно, очень скудно и местами контринтуитивно.
Начинать нужно с ядрёной документации (https://www.kernel.org/doc/Documentation/bcache.txt), а когда вопросы появятся — вгугл. Лучше всего, ессно, для начала поиграться в виртуалке, благо оно не напряжётся, если вместо ssd подсунуть fdd, например — любое блочное устройство подойдёт. Если что, можно тут у меня спросить. Помогу, чем смогу.
Спасибо.
>[оверквотинг удален]
> Мне вот только не понравилось, что оно относительно недавно начало постоянно дёргать
> харды (дурацкие, на мой взгляд, умолчания для writeback). Но всё настраивается
> через /sys/block/bcacheX/bcache/ и, наверное (надеюсь!), аргументы ядра (но у меня пока
> руки не доходят).
> Документировано оно, конечно, очень скудно и местами контринтуитивно.
> Начинать нужно с ядрёной документации (https://www.kernel.org/doc/Documentation/bcache.txt),
> а когда вопросы появятся — вгугл. Лучше всего, ессно, для начала
> поиграться в виртуалке, благо оно не напряжётся, если вместо ssd подсунуть
> fdd, например — любое блочное устройство подойдёт. Если что, можно тут
> у меня спросить. Помогу, чем смогу.Не понял а файл или портицию ему подсунуть нельзя? Вроде во flashcache можно
>[оверквотинг удален]
>> через /sys/block/bcacheX/bcache/ и, наверное (надеюсь!), аргументы ядра (но у меня пока
>> руки не доходят).
>> Документировано оно, конечно, очень скудно и местами контринтуитивно.
>> Начинать нужно с ядрёной документации (https://www.kernel.org/doc/Documentation/bcache.txt),
>> а когда вопросы появятся — вгугл. Лучше всего, ессно, для начала
>> поиграться в виртуалке, благо оно не напряжётся, если вместо ssd подсунуть
>> fdd, например — любое блочное устройство подойдёт. Если что, можно тут
>> у меня спросить. Помогу, чем смогу.
> Не понял а файл или портицию ему подсунуть нельзя? Вроде во flashcache
> можноЯ имею ввиду мне поигратся во основном.меня старый жесткий диск на 320 gb устраивает правда ноут грузиться пару минут
>[оверквотинг удален]
>>> Документировано оно, конечно, очень скудно и местами контринтуитивно.
>>> Начинать нужно с ядрёной документации (https://www.kernel.org/doc/Documentation/bcache.txt),
>>> а когда вопросы появятся — вгугл. Лучше всего, ессно, для начала
>>> поиграться в виртуалке, благо оно не напряжётся, если вместо ssd подсунуть
>>> fdd, например — любое блочное устройство подойдёт. Если что, можно тут
>>> у меня спросить. Помогу, чем смогу.
>> Не понял а файл или портицию ему подсунуть нельзя? Вроде во flashcache
>> можно
> Я имею ввиду мне поигратся во основном.меня старый жесткий диск на 320
> gb устраивает правда ноут грузиться пару минутСам отвечу можно
>> Не понял а файл или портицию ему подсунуть нельзя? Вроде во flashcache
>> можно
> Я имею ввиду мне поигратся во основном.меня старый жесткий диск на 320
> gb устраивает правда ноут грузиться пару минутПартицию можно, т.к. это блочное устройство. Файл — нет, это другой уровень. Bcache — чисто ядрёная штука и о файлах ничего не знает.
У меня на SSD один раздел для swap (он же для hibernation), второй работает Bcache кэшем для RAID1 на HDD.
> У меня на SSD один раздел для swapРазмер? (Сколько рам)
> Да так же работает, как и на десктопе — просто работает.
> Если валяется hdd, то с bcache станет медленнее (но объём подрастёт).
> Если ssd, то скорость вырастет заметно при том же объёме.
> Скрестил 256ГБ ssd с двумя 1ТБ hdd в зеркале, доволен (уже несколько
> лет).Спасибо надо попробовать
> Bcachefs опережает Btrfs и другие ФС на базе механизма Copy-on-Write, демонстрируя производительность, близкую к Ext4 и Xfs
> bcache migrateПора прощаться с БТРФС, осталось дождаться нормального релиза и проводить тесты.
У bcache если винт вылетет то весь бутерброд накроется?
> У bcache если винт вылетет то весь бутерброд накроется?Упадёт на землю маслом вниз, по всем известному закону.
У меня был не совсем бутерброд, а хлеб с маслом. Таки упало маслом вверх. Жаль не смог задокументировать.
> У меня был не совсем бутерброд, а хлеб с маслом. Таки упало
> маслом вверх. Жаль не смог задокументировать.А бутерброд и хлеб с маслом — не одно и то же? А то, что маслом вверх, никак не значит, что маслом не на землю. Вот в Австралии, например, все бутерброды падают вверх маслом на землю. Вы не оттуда ли, случаем?
Ну, смотря какой винт.
Если у вас вылетит SSD, то резко просядет производительность. Если сдохнут диски с данными, то сдохнут диски на которых лежат данные. Тоже самое, что и без bcache.Хотя в режиме writeback часто данных будет потеряна которые не успели записаться. Но обычно с этим можно жить.
Вместо того чтобы добавить в dm-crypt поддержку ChaCha20 и режим аутентифицированного шифрования с Poly1305 они запилили свой велосипед, ну молодцы, чо.
репликация (RAID) - это я дурак или автор доктор.бил?
Каким образом RAID = репликация?Ещё одна на поиграться FS.
bcache использую давно, но вот зачем навертетюживать туда высосаную из пальца FS?