На прошедшем в начале марте этого года мероприятии 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 работает на всем, начиная с простого гаджета типа кофеварки, десктопов, облачных систем и заканчивая супер-компьютерами, у которых разные требования к хранению данных.

Комментарии (26)


  1. temujin
    28.04.2015 14:33

    На лаптопе использую btrfs для корня и xfs для накопителя с мультимедийными файлами, работает очень даже неплохо.
    Фейсбук использует btrfs? Занятно, но больше на рядовое официальное мероприятие смахивает, если честно.


    1. vadim_s_sabinich Автор
      28.04.2015 14:44
      +3

      При последней глобальной смене железа и ОС все никак не мог решиться, какую ФС поставить. В итоге остановился на классике — ext2 для загрузочной области и ext4. Не смог найти аргументов в пользу btrfs для лаптопа, если честно =)
      Да, это не знаковое мероприятие, скорее посиделки с плюшками, где обсудили как дела друг у друга.


      1. ploop
        28.04.2015 15:21
        +1

        btrfs интересная система, но для рядового использования избыточна. Я тоже предпочитаю ext4, стабильно, надёжно.


        1. selenite
          28.04.2015 17:15
          -4

          способ убить ext4 за пару минут: загрузиться в виртуальную машину с доступом к физическому диску с того же раздела.
          ext3 как-то понадежнее к таким шуткам была.


          1. INSTE
            28.04.2015 18:59

            Странный вывод о ненадежности ФС.
            С тем же успехом можно в произвольное место тома записать мегабайт нулей, и удивиться, что все умерло.
            Реальные ФС не проектируют на отказоустойчивость к таким шуткам.


            1. selenite
              29.04.2015 12:21
              -1

              мегабайт нулей в произвольном месте чинится для ext3/4 восстановлением суперблока из одного из бекапов. mke2fs -n, fsck -b
              слава битым хардам, это проверялось не раз.


          1. ploop
            28.04.2015 19:01
            +2

            Могу подсказать способ, как убить любую ФС за пару секунд.
            Я о том, что это не проблема ФС, а софта или пользователя.


      1. INSTE
        28.04.2015 19:01
        +2

        btrfs для лэптопа хороша снэпшотами.
        Например, можно создать снэпшот корня, обновится и в случае кривого обновления легко вернуть систему в нормальное состояние.
        Или же автоснэпшоты /home раз в 5 минут с автоочисткой в фоне устаревших — отлично спасет при случайной перезаписи / удалении файла.


      1. temujin
        28.04.2015 21:47

        Мне хотелось побаловаться со снапшотами и действительно, штука очень удобная. Для boot партиции у меня тоже ext2 был раньше, но сейчас из-за UEFI, в vfat пришлось форматировать.


      1. Rayslava
        30.04.2015 15:47

        btrfs для (моего) лаптопа хороша снапшотами и subvolume'ами с квотированием.
        У меня вместо разделов сделан один большой btrfs, в котором /, /usr, /home, /var и ещё кое-что по мелочи сделано через subvolume, а размер замечательно регулируется квотами.
        В рамках ограниченного хранилища — крайне удобно. gpt-разделы так не подвигаешь.
        Ещё очень крутая штука с subvolume'ами это удаление директории с большим количеством мелких файлов внутри. То, что раньше приходилось делать через mv buildroot _removal; rm -rf _removal & mkdir buildroot, теперь просто делается через btrfs subvolume delete.
        Ещё с ней хорошо работает docker и есть сжатие, которое для текстов (сорцов, например), весьма неплохо работает.


    1. immaculate
      28.04.2015 19:37
      +2

      Использую btrfs на ноуте тоже. Удобно делать резервные копии при помощи snapshot и btrfs-send. Но при случайных выключениях (из-за ошибки в видеодрайвере ноут иногда зависал), появлялись неудаляемые каталоги. При попытке их вылечить, btrfsck вылетал с Segmentation Fault. Жутковато… И не верится, что в FB используют код такого низкого качества. Наверное, у них собственный форк, запатченный по самое не могу.


      1. justaguest
        28.04.2015 21:17

        Вовсе необязательно при зависаниях видеодрайвера отключать питание, обычно это лечится магической клавишей SysRq.


        1. immaculate
          29.04.2015 06:12

          Угу, у меня Lenovo T440s без клавиши SysRq. Точнее, она эмулируется нажатием Fn-S, но у меня эта эмуляция почему-то не работает.


          1. justaguest
            29.04.2015 07:44

            Работа на *буках обычно производится нажатием без кнопки 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 правее.


            1. gryberg
              29.04.2015 08:25

              Lenovo очень давно добавила возможность менять Ctrl и Fn местами в биосе. Либо у Вас такой старый ноут, либо…


              1. justaguest
                29.04.2015 19:52

                Lenovo 3000 G410. Не уверен, какого он года выпуска, но я его покупал лет 5-6 назад… И да, в нем нет такой опции. К тому же формат фактор у клавиш Ctrl и Fn на этом ноутбуке разный, так что, даже если добавят в биос, поменять надписи не выйдет. Но я, наверное, придираюсь — пусть уж хоть как-нибудь работает.


                1. gryberg
                  29.04.2015 19:55
                  +1

                  Ну например:

                  Lenovo G410\G510: update BIOS to 3.05 version or above.


                  То, что клавиши разные — это понятно, но зачем Вам надписи? Если Вам важны надписи, то не должно смущать смена положения :)


      1. temujin
        28.04.2015 21:57

        Пока удавалось избегать полного зависания, но глюки часто бывали с примонтированным по davfs Яндекс-Диском — зависал rsync и не убивался никак. Однако, затрудняюсь однозначно связать это с btrfs.
        Раньше успользовал на старом лаптопе ext4 и однажды после зависания файлуха попортилась. Уже потом ext4 стабильнее стала.


  1. ntfs1984
    28.04.2015 17:41

    Перепробовал пару месяцев назад, много файловых систем на домашнем компьютере с SSD.
    Все они работают практически одинаково, за исключением ext2, эта работает немно-о-жко быстрее на этапе загрузки ядра. При чем подозреваю дело не в скорости работы ФС, а в загрузке доп. модулей и всяких «Looking for btrfs filesystems...».

    Единственное что, на больших объемах обидно, когда много места тратится на журнал :)

    Поэтому соглашусь с предыдущими комментариями — дома ext4 хватает с головой.


  1. JagaJaga
    28.04.2015 18:43

    Использую на работа ceph fs. Очень удобно, практично, безопасно и гибко.
    Удобно использовать в связке со slurm.


    1. splav_asv
      28.04.2015 21:47

      А можно чуть поподробнее, в чем удобство?


      1. splav_asv
        28.04.2015 23:08

        Уточню, я про связку slurm и ceph.


    1. artsnz
      28.04.2015 22:43

      И в чем безопасность? На хабре много народу в комментах писало при глюки ceph и про его легкую убиваемость. Пожалуй первое прям такое положительное мнение без ругани, хотелось бы поподробнее.


      1. markhor
        28.04.2015 23:46

        Подтверждаю, поднимал цеф на 8 узлах, в течение месяца 3 непоправимо сломались. Достаточно сложная документация и отсутствие базы ответов stackoverflow в итоге победили.


        1. icCE
          29.04.2015 01:44

          Ну где же у ceph сложная документация? Там сложность только в алгоритме CRUSH, достаточно сесть один раз почитать и вникнуть, все будет нормально. Ну и комьюните в рассылках вполне себе отвечает на вопросы.
          Другое дело, что cephfs в продакшен не готов, все остальное в ceph вполне себе используется.


  1. alexkuzko
    30.04.2015 15:32

    Использую btrfs как основную на рабочем компе + ноуте пару лет. В целом, работает неплохо. Особенно интересны subvolumes и ro/rw снапшоты.
    Но один раз btrfs полностью сдохла. До сих пор держу копию в надежде вытянуть из нее не успевшее сложиться в бекап ;)

    И еще есть косяк с systemd+btrfs+luks rootfs — это просто не работает (но один раз из 20 можно загрузиться). Не может найти файловую систему — долго рассказывать, но в 2014-м этот баг не вылечили, пришлось назад на sysvinit уйти и потребности в systemd нет, поэтому не знаю, может уже и вылечили.