Зачем нужна новая POSIX-подобная файловая система

    Поговорим о том, как устроена ФС Hyperdrive, и тех, кто уже начать её использовать.


    Фото — moren hsu — Unsplash

    Пара слов о Hyperdrive


    Это — POSIX-подобная файловая система для приложений с распределённой архитектурой. Её иерархия представлена единым деревом, а все объекты обладают двумя именами: абсолютное (от корня) и относительное (от текущего рабочего каталога). Hyperdrive разрабатывают авторы открытого P2P-браузера Beaker — он позволяет размещать сайты «прямо в браузере» — достаточно создать локальную папку и поделиться соответствующей ссылкой.

    Как устроена система


    Она реализована на Node.js — её исходный код лежит на GitHub. По словам авторов, работа с Hyperdrive напоминает взаимодействие со стандартным модулем Node — fs. Вот пример:

    var hyperdrive = require('hyperdrive')
    var archive = hyperdrive('./my-first-hyperdrive') // content will be stored in this folder
    
    archive.writeFile('/hello.txt', 'world', function (err) {
      if (err) throw err
      archive.readdir('/', function (err, list) {
        if (err) throw err
        console.log(list) // prints ['hello.txt']
        archive.readFile('/hello.txt', 'utf-8', function (err, data) {
          if (err) throw err
          console.log(data) // prints 'world'
        })
      })
    })
    

    В основе Hyperdrive лежат две особые структуры под названием Hypercores. Это — журналы, в которые можно только добавлять данные (append-only logs). Первый хранит индексные метаданные, а второй — бинарники файлов. Имена файлов и папок проиндексированы с помощью префиксного дерева хешей, чтобы упростить поиск. В каком-то смысле оно служит быстрой системой типа «ключ-значение». Целостность данных проверяется с помощью дерева Меркла с криптографической хеш-функцией BLAKE2b-256.

    За обработку обращений пользователей к файловой системе отвечает специальный демон. Его CLI позволяют создавать, расшаривать и просматривать директории Hyperdrive. Демон поддерживает FUSE, поэтому диски Hyperdrive могут отображаться как обычные папки на системах Linux и Mac.

    Где её используют


    Hyperdrive подойдет для разработки распределённых приложений, которые напоминают по функциональности облачные хранилища. Например, её использует платформа с открытым исходным кодом ScienceFair. Она помогает исследователям искать научную литературу, журналы, статьи и выжимки из них, а также обмениваться собственными наработками.

    Разумеется, свою файловую систему используют сами разработчики браузера Beaker. Она хранит данные, необходимые для отображения веб-сайтов.


    Фото — Clint Adair — Unsplash

    Hyperdrive лежит в основе протокола Dat. Он нужен для обмена данными в распределённых сетях. При передаче файлы разбиваются на небольшие фрагменты разных размеров и собираются в единый Dat-файл принимающей стороной. Система позволяет добавлять в него новые фрагменты, но не разрешает модифицировать или удалять существующие. Такой подход позволяет сохранить историю изменения документов.

    Сегодня вокруг Dat уже сформировалось достаточно обширное сообщество, а его продвижением занимается специальный фонд Dat Foundation — его поддерживает Mozilla и Code for Science & Society. В перспективе эти организации поспособствуют росту популярности как протокола Dat, так и файловой системы Hyperdrive.



    О чем мы пишем в корпоративном блоге 1cloud.ru:

    Резервное копирование файлов: как подстраховаться от потери данных
    Минимизация рисков: как не потерять ваши данные
    Где полезны объектные хранилища
    RAID-массив в виртуальной машине


    1cloud.ru
    IaaS, VPS, VDS, Частное и публичное облако, SSL

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

      +2

      А в чём заключается POSIX-подобие файловой системы? У неё, э-э-э, для разделения элементов пути используются прямые слеши или есть что-то ещё?

        +1
        Насколько я могу судить по краткому описанию в документации – с POSIX её объединяет структура. Имеется корневой каталог, плюс есть монтирование. Ну и POSIX-данные на месте: время модификации, время создания итд
          0

          Ну, корневой каталог есть в любой ФС где в принципе есть каталоги. А монтирование — вообще не ответственность файловой системы, оно всегда делалось уровнем выше.

        +3
        Как будто статья криво написана/переведена. Хотя документация на том же уровне.

        Вроде просто шаринг файлов/папок. При чем тут POSIX и вообще файловая система?
        В статье браузеры приплетены, хотя все это вроде как nodejs модуль и в браузере не заведется (или заведется?).
        Есть еще демон, который вроде нужен, а вроде и без него все должно работать.
          0
          Расхождений в посте и документации каких-то нет, например, одним из признаков POSIX – наличие файловой системы с единым корнем /. Из схем в блоге разработчиков Hyperdrive следует, что так и есть. Может, документация находится еще на ранних этапах разработки — в будущем наверное рассортируют этот вопрос
          +1

          Делать файловую систему на JS — это примерно как использовать лошадей вместо двигателя. Ездить можно, но вот как быстро и комфортно… особенно по мере возрастания нагрузок и расстояний.

            0
            Столько уже всяких децентрализованных технологий, и ни одна толком не взлетела.

            А что касается файловых систем как таковых, то для начала сделали бы локальную метаинформацию, встроенную в ФС. POSIX это уже давно прошлый век. А очень не хватает такого — вот есть документ, допустим книга, или фильм, или аудиофайл, или картинка. У него есть только стандартные атрибуты — имя, расширение, время, размер. Но нет атрибутов «автор», «жанр», «источник», нет метаописания, невозможно присоединить пользовательский комментарий и затем использовать его в поиске…
            Такое чувство, что в какой-то момент пропустили очередной уровень абстракции, и стали скакать через три ступеньки. За стройным порядком старой иерархической ФС следует какой-то бессистемный хаос.
              0
              У него есть только стандартные атрибуты — имя, расширение, время, размер. Но нет атрибутов «автор», «жанр», «источник», нет метаописания, невозможно присоединить пользовательский комментарий и затем использовать его в поиске…

              Это не взлетает. Технически всё как бы готово — есть потоки NTFS, есть xattrs для ext и прочих POSIX-фс. Но все эти атрибуты срезаются при прохождении через http или при копировании на флешку с fat32. Поддержки в GUI файловых менеджеров и в индексаторах тоже толком нет.

                0
                Я знаю про эти потоки. Но нет никакого общепринятого их применения, и соответственно никакого нормального софта для работы с ними (специальные утилиты не в счет, я имею в виду именно софт для массового использования простыми юзерами).
                Вот именно это отсутствие общепринятого применения, общепринятого стандарта метаинформации и есть «упущенный слой абстракции». Если бы он был, то может быть и в http сделали бы поддержку, а может и вообще интернет был бы другим.

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

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