Будущее файловых систем Linux

    На прошедшем в начале марте этого года мероприятии Vault, организованным Linux Foundation в Бостоне, было много разговоров о файловых системах и хранилищах. Если думаете, что там не было сказано ничего нового, то вы ошибаетесь.




    Файловые системы в Линуксе, такие как Btrfs и варианты хранилищ постоянно развиваются. Технология FacebookStorage прошла долгий путь с момента, когда Линус Торвальдс принял ее до ее поддержки самой системой.
    В прошлые годы, к примеру, были попытки использовать флэш-накопители в качестве основного диска для сервера и SSD-диска для увеличения скорости работы с данными, приближаемой к работе с ОЗУ.
    Использование флэш-накопителей предложила компания SanDisk на базе решения InfiniFlash, которое предполагалось использовать в качестве замены жестких дисков при цене $1-2 за гигабайт.



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

    Btrfs
    К примеру, Крис Мэйсон, разработчик Facebook, и один из мейнтейнеров Btrfs, поделились информацией, как Facebook использует эту файловую систему. Она интересна тем, что хорошо подходит для работы как с большим количеством небольших файлов, так и с файлами до 16 экзабайт; собирается в рейд-массив; имеет встроенную систему сжатия и поддержку различных устройств хранения.

    Конечно, Facebook широко использует Linux. Если быть точней, то в основном используются ядра 3.10 и 3.18 и собственный дистрибутив, основанный на базе CentOS. Для Facebook Btrfs стала поистине спасением, эта файловая система ведет себя стабильно и показывает большую скорость работы с бесконечными операциями ввода/вывода, производимыми участниками социальной сети. Это если брать хорошие новости. Из плохого — Btrfs показала себя очень плохо в работе с традиционными серверами хранения баз данных типа MySQL. Для них Facebook использует XFS. Для управления обоими файловыми системами применяется открытая распределенная файловая система Gluster,
    Facebook, с которыми работают рука-об-руку ведущие разработчики ядра Linux и Btrfs, занимаются увеличением скорости работы с системами хранения баз данных. Мейсон с коллегами добился приемлемой работы RocksDB на Btrfs.
    RocksDB это быстрая система хранения в формате ключ-значение, которая может быть использована как основа для клиент-серверной базы данных.
    С Btrfs помимо этого не все так гладко. Она содержит ошибки, которые проявляются в разные моменты. К примеру, вам хватило ума решить забить жесткий диск до отказа, но Btrfs будет обрывать запись доходя до определенной точки заполненности хранилища.
    Так же, команда разрабочтиков Btrfs работает над дедупликацией данных. Этот метод сжатия данных наиболее хорошо показывает себя тогда, когда в хранилище имеется большое количество хранимых файлов, мало отличающихся друг от друга, или имеющие много похожих элементов, как при хранении резервных копий. Мейсон так и сказал: “Это нужно не всем, он если это нужно, то это нужно по-настоящему!” Но Btrfs не единственная файловая система, над которой ведется серьезная работа и на которую следует ставить все. Джон Спрей, ведущий разработчик Red Hat рассказал о распределенной системе хранения Ceph.



    Ceph FS
    Ceph — это open source разработка эластичного легко масштабируемого петабайтного хранилища. В основе лежит объединение дисковых пространств нескольких десятков серверов в объектное хранилище, что позволяет реализовать гибкую многократную псевдослучайную избыточность данных. Разработчики Ceph дополняют такое объектное хранилище еще тремя проектами:

    • RADOS Gateway — S3- и Swift-совместимый RESTful интерфейс
    • RBD — блочное устройство с поддержкой тонкого роста и снапшотами
    • Ceph FS — распределенная POSIX-совместимая файловая система


    Ceph представляет собой распределенную, легкомасштабируемое хранилище, которое позволяет создать объединение из серверов в объектное хранилище для реализации гибкой многократной псевдослучайной избыточности данных (RADOS, Reliable Autonomic Distributed Object Store). Разработчики выделяют такие основные компоненты:
    • OSD (Object Storage Device, устройство хранения объектов) Daemon: демон хранилища для сервиса, который обеспечивает связь с OSD (физической или логической единицей хранения данных). Этот демон должен быть запущен на каждом из серверов кластера, каждому OSD может быть указан отдельный жесткий диск с рейд массивом, LVM или пул Btrfs. По умолчанию создаются три пула: данные, метаданные и RDB
    • MDS (Meta-Data Server, сервер хранения метаданных): Он построен в виде POSIX-файловой системы. Если вы не используете файловую систему Ceph, то сервер метаданных не потребуется.
    • MON (Monitor): легковесный демон, который обеспечивает связь между внешними приложениями и клиентами. Так же предоставляет согласование для расширения в кластере Ceph/RADOS.

    Разработчики Ceph рекомендуют использовать для файловой системы в ханилище Btrfs, хотя XFS может быть лучшей альтернативой для “боевого” применения.

    После поглощения компании-владельца Ceph — Inktank в 2014 году, Red Hat плотно занялась подготовкой CephFS для применения в продакшене.
    Над CephFS еще предстоит большая работа, пускай она и работает, но в ней отсутствуют такие важные инструменты для мониторинга или тестрования/исправления ошибок.
    В данный момент Red Hat как раз занимается разработкой fsck и системой журналирования, а так же улучшения возможности создания снапшотов, улучшения контроля над клиентами или интеграцией в контейнеры и облака. На сегодняшний день, по словам Спрея, CephFS в качестве файловой системы могут использовать, либо очень крутые и храбрые, либо очень глупые.

    Остальное по-мелочи

    Из того, что было интересного на бостонской встрече: Джеф Лэйтон, ведущий разработчик компании Primary Data, рассказал, что занимается созданием эмуляции отключения электропитания для тестирования файловых систем. Эта возможность будет добавлена в приложение xfstests. Не смотря на название, помимо XFS, есть поддержка основной части популярных на данный момент файловых систем.

    Рик ванРиел, разработчик Red Hat, поделился проблемой работы с ОЗУ в качестве хранилища данных. Т.е оно работает, если использовать эти ресурсы как ОЗУ, или как хранилище, но когда потребуется что-то большее, возникают трудности. К примеру, нет возможности создания снапшотов для резервного копирования, при использовании оперативной памяти по назначению.
    Пока решения нет, но программисты работают над этим. И пока в Линуксе существует большое количество всевозможных файловых систем и хранилищ, работы будет предостаточно. Технологии не стоят на месте. ОС Linux работает на всем, начиная с простого гаджета типа кофеварки, десктопов, облачных систем и заканчивая супер-компьютерами, у которых разные требования к хранению данных.
    FirstVDS / FirstDEDIC
    Виртуальные и выделенные серверы в ДЦ в Москве

    Комментарии 28

      0
      На лаптопе использую btrfs для корня и xfs для накопителя с мультимедийными файлами, работает очень даже неплохо.
      Фейсбук использует btrfs? Занятно, но больше на рядовое официальное мероприятие смахивает, если честно.
        +3
        При последней глобальной смене железа и ОС все никак не мог решиться, какую ФС поставить. В итоге остановился на классике — ext2 для загрузочной области и ext4. Не смог найти аргументов в пользу btrfs для лаптопа, если честно =)
        Да, это не знаковое мероприятие, скорее посиделки с плюшками, где обсудили как дела друг у друга.
          +1
          btrfs интересная система, но для рядового использования избыточна. Я тоже предпочитаю ext4, стабильно, надёжно.
            –4
            способ убить ext4 за пару минут: загрузиться в виртуальную машину с доступом к физическому диску с того же раздела.
            ext3 как-то понадежнее к таким шуткам была.
              0
              Странный вывод о ненадежности ФС.
              С тем же успехом можно в произвольное место тома записать мегабайт нулей, и удивиться, что все умерло.
              Реальные ФС не проектируют на отказоустойчивость к таким шуткам.
                –1
                мегабайт нулей в произвольном месте чинится для ext3/4 восстановлением суперблока из одного из бекапов. mke2fs -n, fsck -b
                слава битым хардам, это проверялось не раз.
                +2
                Могу подсказать способ, как убить любую ФС за пару секунд.
                Я о том, что это не проблема ФС, а софта или пользователя.
              +2
              btrfs для лэптопа хороша снэпшотами.
              Например, можно создать снэпшот корня, обновится и в случае кривого обновления легко вернуть систему в нормальное состояние.
              Или же автоснэпшоты /home раз в 5 минут с автоочисткой в фоне устаревших — отлично спасет при случайной перезаписи / удалении файла.
                0
                Мне хотелось побаловаться со снапшотами и действительно, штука очень удобная. Для boot партиции у меня тоже ext2 был раньше, но сейчас из-за UEFI, в vfat пришлось форматировать.
                  0
                  btrfs для (моего) лаптопа хороша снапшотами и subvolume'ами с квотированием.
                  У меня вместо разделов сделан один большой btrfs, в котором /, /usr, /home, /var и ещё кое-что по мелочи сделано через subvolume, а размер замечательно регулируется квотами.
                  В рамках ограниченного хранилища — крайне удобно. gpt-разделы так не подвигаешь.
                  Ещё очень крутая штука с subvolume'ами это удаление директории с большим количеством мелких файлов внутри. То, что раньше приходилось делать через mv buildroot _removal; rm -rf _removal & mkdir buildroot, теперь просто делается через btrfs subvolume delete.
                  Ещё с ней хорошо работает docker и есть сжатие, которое для текстов (сорцов, например), весьма неплохо работает.
                  +2
                  Использую btrfs на ноуте тоже. Удобно делать резервные копии при помощи snapshot и btrfs-send. Но при случайных выключениях (из-за ошибки в видеодрайвере ноут иногда зависал), появлялись неудаляемые каталоги. При попытке их вылечить, btrfsck вылетал с Segmentation Fault. Жутковато… И не верится, что в FB используют код такого низкого качества. Наверное, у них собственный форк, запатченный по самое не могу.
                    0
                    Вовсе необязательно при зависаниях видеодрайвера отключать питание, обычно это лечится магической клавишей SysRq.
                      0
                      Угу, у меня Lenovo T440s без клавиши SysRq. Точнее, она эмулируется нажатием Fn-S, но у меня эта эмуляция почему-то не работает.
                        0
                        Работа на *буках обычно производится нажатием без кнопки Fn клавиши печати экрана. Попробуйте перейти в терминал по Ctrl+Alt-F1, и нажать Alt+Shift+PrintScreen+h — если все хорошо, у вас должен вывалится help по клавише в stdout.
                        Так же не забывайте, что, по-крайней мере, в *buntu ее функционал по максимуму урезан из соображений безопасности; для повышения возможностей там надо редактировать файл /etc/sysctl.d/10-magic-sysrq.conf

                        У меня тоже есть бук от Леново, и клаву на нем тоже делали люди, явно умом обделенные. Мало того, что они зачем-то для SysRq поставили клавиши Fn, хотя можно было просто оставить на шифте — так они еще и додумались поменять Ctrl с Fn. Когда я на нем работал, мне пришлось выдрать клавишу Fn, чтобы каждый раз, когда я тянусь нажать Ctrl, я натыкался на резинку, и вспоминал, что Ctrl правее.
                          0
                          Lenovo очень давно добавила возможность менять Ctrl и Fn местами в биосе. Либо у Вас такой старый ноут, либо…
                            0
                            Lenovo 3000 G410. Не уверен, какого он года выпуска, но я его покупал лет 5-6 назад… И да, в нем нет такой опции. К тому же формат фактор у клавиш Ctrl и Fn на этом ноутбуке разный, так что, даже если добавят в биос, поменять надписи не выйдет. Но я, наверное, придираюсь — пусть уж хоть как-нибудь работает.
                              +1
                              Ну например:
                              Lenovo G410\G510: update BIOS to 3.05 version or above.


                              То, что клавиши разные — это понятно, но зачем Вам надписи? Если Вам важны надписи, то не должно смущать смена положения :)
                      0
                      Пока удавалось избегать полного зависания, но глюки часто бывали с примонтированным по davfs Яндекс-Диском — зависал rsync и не убивался никак. Однако, затрудняюсь однозначно связать это с btrfs.
                      Раньше успользовал на старом лаптопе ext4 и однажды после зависания файлуха попортилась. Уже потом ext4 стабильнее стала.
                  • НЛО прилетело и опубликовало эту надпись здесь
                      0
                      Использую на работа ceph fs. Очень удобно, практично, безопасно и гибко.
                      Удобно использовать в связке со slurm.
                        0
                        А можно чуть поподробнее, в чем удобство?
                          0
                          Уточню, я про связку slurm и ceph.
                          0
                          И в чем безопасность? На хабре много народу в комментах писало при глюки ceph и про его легкую убиваемость. Пожалуй первое прям такое положительное мнение без ругани, хотелось бы поподробнее.
                            0
                            Подтверждаю, поднимал цеф на 8 узлах, в течение месяца 3 непоправимо сломались. Достаточно сложная документация и отсутствие базы ответов stackoverflow в итоге победили.
                              0
                              Ну где же у ceph сложная документация? Там сложность только в алгоритме CRUSH, достаточно сесть один раз почитать и вникнуть, все будет нормально. Ну и комьюните в рассылках вполне себе отвечает на вопросы.
                              Другое дело, что cephfs в продакшен не готов, все остальное в ceph вполне себе используется.
                          0
                          Использую btrfs как основную на рабочем компе + ноуте пару лет. В целом, работает неплохо. Особенно интересны subvolumes и ro/rw снапшоты.
                          Но один раз btrfs полностью сдохла. До сих пор держу копию в надежде вытянуть из нее не успевшее сложиться в бекап ;)

                          И еще есть косяк с systemd+btrfs+luks rootfs — это просто не работает (но один раз из 20 можно загрузиться). Не может найти файловую систему — долго рассказывать, но в 2014-м этот баг не вылечили, пришлось назад на sysvinit уйти и потребности в systemd нет, поэтому не знаю, может уже и вылечили.
                            +1
                            Касательно btrfs, может у Facebook'а с его армией программистов низкого уровня и живёт это как-то, но мне кажутся полными камикадзами те, кто пытаются тащить в продакшн файловую систему к которой физически не существует полноценного инструментария для восстановления, с единственным аргументом «да она практически не ломается»… Ломается и ещё как ломается.
                            И даже не обязательно до потери данных, есть, например такие ошибки, когда найдены чексумы на не существующие данные и инструменты не позволяют изменять файловую систему (отрубаются все возможности по shrink, работе с субтомами и т.д.) и сделать можно ровным счётом ни-че-го. Только бэкап данных --> снос раздела --> восстановление данных на вновь созданный раздел.
                            И коллектив разработчиков из «гениев», которые лепят ошибки, делают неполноценные фичи, ломающие работающий функционал и потом отмазывающиеся ответами типа «а ну это у нас в версии такой-то баг был, что у вас всё слетело кхерям, но уже исправили» или «ах, а мы и не знали, что новая фича ломает старую». И ладно бы эти косяки попадали только в unstable — в обычном ubuntu со стабильными ядрами такое возникает регулярно — просто потому, что, оказывается, вот таким вот специфическим функционалом файловой системы не многие пользуются и не отловили.
                            Отсутствие документации на функции и вообще невнятность работы некоторых функций тоже доставляют. До ядра 3.17 при исполнении btrfs check --init-csum-tree с описанием мол «перестраивает дерево чексумм», на деле просто сносило к чёрту дерево чексум и делало файловую систему не читаемой. Потом кто-то в мэйллисте на это тыкнул с вопросом «а нахрена это надо?» И получил ответ типа «а ну не нужно ей пользоваться она ещё не дописана, чтоб реально работала». А добавили так, просто, как кнопку «харакири», только под надписью «реанимация».
                            В общем, впечатление мрачное не столько от того, что файловая система чудовищно сырая (это-то как раз понятно и простительно), но от отношения разработчиков к процессу разработки и, в частности, к безопасности. По мне, так разработку нужно начинать с методов восстановления целостности файловой системы и данных и не выпускать ни единого стабильного релиза без полной их реализации, а не то, как это делают разработчики btrfs.
                              0
                              Соглашусь. Моя домашняя система стоит на btrfs, плюс внешний диск на нем же. Качество работы отвратительное — очень часто бывает, что раздел внешнего диска отваливается, и либо α) не монтируется обратно, с какой-то ошибкой чтения (причем второй раздел на нем, *не-btrfs*, работает великолепно, то есть проблема не в диске) до — sick! — полной перезагрузки системы (поверхностное расследование причин не дало никаких результатов), либо β) монтируется без проблем, но… часть файлов отсутствует! То есть они физически есть, и путем магических манипуляций с перемонтированием системы они возвращаются на место, но это происходит далеко не сразу.

                              Что да самой системы, то ее загрузка часто виснет на «scanning for btrfs filesystems».

                              Я могу предположить, что проблемы решены в последних драйверах, у меня все-таки LTS-релиз, наверное в последних версиях софта и ядер много баг-фиксов, и все работает намного стабильнее. Так же предполагаю, что зависание на «scanning for…» может быть связано с очень убитым ноутом. Но все же я думаю, что когда буду вновь форматировать разделы, например после покупки десктопа — к черту эту btrfs, уж лучше поставлю старую надежную ext4.

                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                            Самое читаемое