Virtual Distributed File System
Last updated
Last updated
https://habr.com/ru/companies/first/articles/678818/
В наше время почти у каждого скопилось несколько гигабайт (или терабайт) резервных копий и личных документов. Всё это зачастую хранится в зашифрованном виде на нескольких накопителях и в нескольких облаках.
Создаваемые нами данные — это наше наследие, которое надолго переживёт нас. По идее, личная информация не должна быть никак привязана ни к какому конкретному облаку, провайдеру или компании. Хорошо бы иметь возможность свободной замены облачных сервисов в своём личном наборе. В идеале — составить общую «файловую систему», куда можно в любой момент добавить/удалить Google Drive, Яндекс.Диск, YouTube Drive или другие бесплатные файлохостинги. Главное, чтобы данные были размазаны по всему пространству и оставались независимы от конкретного провайдера.
Но зачастую разные облака плохо совместимы друг с другом, ведь это конкурирующие экосистемы. Они не поддерживают единый API, синхронизацию и так далее. К счастью, есть сторонние инструменты для решения этой проблемы.
Давайте рассмотрим ниже некоторые полезные программы, которые помогают управлять архивом данных, распределённому по множеству устройств и облаков:
Файл-менеджер Spacedrive — это опенсорсный кросс-платформенный файл-менеджер на файловой системе VDFS, который ставит задачей объединить в едином интерфейсе файлы из разных сервисов и разных файловых систем, в том числе из разных облаков. Грубо говоря, объединить в одном окошке облачные сервисы, которые официально не умеют друг с другом взаимодействовать, не имеют общих API и др.
Разработка программы ещё не закончена, но обещают выпустить клиенты под Windows, Linux, MacOS, iOS, watchOS и Android. Можно записаться в список ожидания, чтобы вас первым оповестили о релизе.
Файл-менеджер будет выглядеть примерно таким образом:
Отдельно нужно сказать пару слов о VDFS (virtual distributed filesystem) — виртуальной распределённой файловой системе, написанной на Rust. Это фундамент, на котором базируется Spacedrive.
VDFS предоставляет единый API для доступа к файлам на всех ваших устройствах (смартфоны, персональные компьютеры, серверы) и облачных дисках. То есть это единый интерфейс, который ведёт виртуальный индекс всех мест хранения файлов, а также синхронизирует БД между клиентами в режиме реального времени. Данная реализация использует архитектуру CAS (Content-addressable storage, контентно-адресуемое хранилище данных) для уникальной идентификации файлов, сохраняя логические пути файлов относительно мест хранения.
Первую реализацию VDFS можно найти в статье Хаоюана Ли из Калифорнийского университета в Беркли. Там предполагается использовать VDFS в облачных хранилищах, но ничто не помешает перенести концепцию в клиентский софт, что и делается в Spacedrive.
Spacedrive находится в активной разработке, а большинство функций или в статусе «экспериментальная», или ещё не реализованы, а только запланированы.
На данный момент реализовано следующее (в стадии тестирования):
обнаружение файлов (сканирование всех устройств, дисков и облачных аккаунтов для создания каталога всех файлов с метаданными);
генерация превью (автоматическое создание маленьких превью для изображений и видео);
статистика (общий объём, размер индекса, свободное пространство и другое).
В планах на ближайшее время:
файл-менеджер — просмотр онлайн- и офлайн-хранилищ, файлов с метаданными, базовые функции CRUD (файл-менеджер разрабатывается прямо сейчас, к моменту публикации статьи может быть готов);
синхронизация в реальном времени (тоже в разработке прямо сейчас);
фото- и видеоальбомы;
поиск по файловой системе;
теги для автоматизации рабочих процессов, массовых операций с группами файлов, организации фотоколлекций;
расширения (интеграция сторонних сервисов и расширение функциональности Spacedrive).
В более отдалённых планах:
интеграция облаков — Apple Photos, Google Drive, Dropbox, OneDrive, создание API для добавления других облаков, таких как Яндекс.Диск;
зашифрованные хранилища, модуль поверх VeraCrypt;
менеджер ключей;
установка коэффициента избыточности для файлов, мониторинг состояния устройств и накопителей;
таймлайн/версионность (просмотр файловой системы за любой момент времени в прошлом);
кодер аудио- и видеофайлов на базе FFMPEG в разные форматы с поддержкой тегов;
воркеры (распределение вычислений по нескольким своим устройствам во время кодирования или других ресурсоёмких вычислений);
бесплатный хостинг Spacedrive Cloud на своём сервере (или платная подписка).
В общем, задача Spacedrive понятна: объединить все облака в едином интерфейсе, удобном для пользователя. Идея красивая.
По сути, это смена парадигмы. Не множество пользователей представляют собой ресурс для одной экосистемы, а наоборот — много облачных провайдеров становятся ресурсами для хостинга файлов отдельного пользователя. Это более правильная парадигма.
Cryptomator — удобная программа для шифрования файлов, которые хранятся на облачном хостинге. В то время как Spacedrive только обещает реализовать модуль шифрования в своём файл-менеджере, здесь всё уже готово и работает.
Можно создать зашифрованное хранилище файлов всего в несколько щелчков мыши:
Хранилище открывается в файл-менеджере после введения пароля, его можно просматривать и добавлять файлы. А само хранилище легко скопировать на любое облако — это просто папка с vault.cryptomator
и зашифрованными файлами в формате *.c9r
.
Под Windows для более удобной работы рекомендуется скачать и установить сторонний драйвер WinFsp (Windows File System Proxy). Это своеобразный аналог FUSE для Unix, который упрощает работу сторонних файловых систем под Windows.
В качестве более простой альтернативы, которая работает из командной строки, можно рекомендовать gocryptfs (Linux), cppcryptfs (Windows) или DroidFS (Android). Всё это оверлейные зашифрованные файловые системы, которые прозрачно работают поверх основной ФС, что очень удобно — со стороны они выглядят как обычные папки и обычные файлы, только со странными названиями и нечитаемым содержимым.
В целом, это более простая альтернатива команде crypt, которая поддерживается в rclone
.
Как дома, так и в других местах, файлы с одного сервера дублируются на другом для надёжности, так и в интернете на каждое облако нужно второе, резервное. Это элементарная безопасность.
Некоторые даже бизнес-модель построили на этой идее. Например, сервис rsync.net предлагает облачное хранилище и удобный бэкап других облаков с помощью стандартных linux-инструментов типа borg, restic, rclone, git-annex и др.
По сути, rsync.net предоставляет клиенту пустую файловую систему UNIX и доступ к ней по SSH. Никаких обвесистых клиентов GUI или API, всё работает настолько просто, насколько просто выглядит. Это удалённая файловая система, доступная из локальной консоли. Дата-центр даже не использует ни файрволов, ни маршрутизаторов, потому что в них «нет особой необходимости». Просто стоят серверы FreeBSD, набитые накопителями с файловой системой ZFS — одно огромное файлохранилище.
Вообще, серверы у них сконфигурированы довольно интересно: это в основном корпуса 4U типа JBOD (just a bunch of disks), куда втиснуто от 45 до 60 накопителей SSD в каждый. Массивы накопителей подключаются к управляющим хед-юнитам 2U, в которых установлено 16 SSD, в том числе два загрузочных и 14 для кэшей на чтение (L2ARC) и запись (SLOG). Специфика файловой системы ZFS такова, что требуется много оперативной памяти, поэтому хед-юниты поддерживают до 2 ТБ.
Такое удалённое файлохранилище легко интегрировать в любую файловую систему, примонтировав его как накопитель под Windows, macOS или Linux. Например, назначить букву диска под Windows.
Это хранилище специально для резервных копий, чтобы сбрасывать туда бэкапы с локальной системы, с продакшна или из облака. В последнем случае мы получаем копию одного облака в другом облаке. Тоже шаг к нашей цели — гибридной архитектуре из нескольких облаков, хотя шаг немного с другой стороны.
В свою очередь, rclone — утилита командной строки, которая позволяет управлять файлами практически на любом облачном хостинге. Сейчас поддерживается более 40 облачных провайдеров, включая хранилище объектов S3, хранилища Yandex Disk, Mail.ru Cloud, Microsoft OneDrive, Dropbox, Google Drive и другие.
В общем, rclone
в облаке — это эквивалент локальным unix-командам rsync, cp, mv, mount, ls, ncdu, tree, rm и cat. Утилита также позволяет примонтировать облачное хранилище в виде локального диска под Windows, macOS, Linux или FreeBSD.
Итак, мы сформулировали парадигму «персонального хранилища», которое состоит из разных облаков, множества личных устройств и накопителей. Все файлы распределяются по носителям/облакам с указанной степенью избыточности, но доступны из единого «окна».
Как видим, постепенно появляются инструменты, которые поддерживают эту парадигму. В неё вписывается модель независимых «персональных подов» с личной информацией — концепция SOLID от Тима Бернерса-Ли.
Всё это может работать в децентрализованной системе, где независимые модули осуществляют коммуникацию друг с другом по открытым стандартам и протоколам, поддерживающим связь всех со всеми.
Такая система напоминает ещё одну интересную концепцию из области бизнеса — децентрализованную архитектуру организации на основе ячеек, Cell-Based Architecture.
Это облачная инфраструктура для современных цифровых компаний, созданная по образцу Agile, микросервисов и многоклеточных организмов в биологии.
В современных компаниях новая архитектура призвана заменить многоуровневую или сегментированную структуру с отделами и подразделениями.
В принципе, это очень красивая концепция. Поскольку мы и сами — многоклеточные существа, то идея с относительно независимыми клетками в рамках единого организма уже доказала свою эффективность. MVP готов. Поэтому можно предположить, что и микросервисы в рамках одного приложения тоже будут отлично работать, и независимые ячейки в рамках организации, и независимые облачные хостинги в одном окошке.