LINUX.ORG.RU

Файловая система как Matrix-протокол

 


0

2

У меня есть три компьютера, но в каждый момент времени как правило работают два из них. Мне нужна такая файловая система, которая бы синхронизировала изменения файлов в таком сетапе.

Почему я думаю что это возможно? Потому что существует протокол Matrix, который реконструирует историю даже в том случае, когда сообщения с разных мест приходят не в порядке времени их создания и в итоге всё равно всё хорошо.

★★★★
Ответ на: комментарий от aol

Мне не нужно «приложение», мне нужно чтобы я в линуксе смонтировал нечто на трёх компах, навсегда забыл, и больше не парился по поводу того, где что лежит и кто из них сейчас сервер.

Shushundr ★★★★
() автор топика

Кури CAP-теорему и пойми, что конфликтов всё равно не избежать.

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

А лучше забей на «смонтировать» и поставь syncthing, который делает всё то, что тебя интересует.

token_polyak ★★★★★
()
Последнее исправление: token_polyak (всего исправлений: 1)
Ответ на: комментарий от Shushundr

Так тебе нужно синхронизировать или нужно смонтировать? Что первично? А то второе утверждение сильно попахивает проблемой XY.

Если проблема именно в «больше не парился», то ЕМНИП, syncthing тоже позволяет настроить один раз и не дёргаться.

hobbit ★★★★★
()

CRDT для произвольного типа файлов нет, и он в целом невозможен. Можете обратить внимание на то, что и в дропбоксе, и в гит (при меньшем размере задачи) регулярно приходится руками разрешать конфликты.

akho
()
Ответ на: комментарий от t184256

Пихулисты не согласятся

  • был вот джпег background.jpg. С голой женщиной, естественно. На всех трех компьютерах A, B, C.
  • на компьютере B пользователь @Shushundr заменил картинку на картинку с голым мужчиной (тоже background.jpg)
  • на компьютере C пользователь @Shushundr заменил картинку на картинку с нарисованной анимешной голой женщиной (тоже background.jpg)

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

Но так не произойдет. В пихулевой теории патчей там возникнет призрак голой женщины, нарисованная анимешная голая женщина, и голый мужчина. Все трое, что характерно, в одном файле background.jpg.

Это в целом имеет смысл, но плохо бьется с практикой реального использования ФС.

akho
()
Ответ на: комментарий от akho

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

Че-т ору. Semantic merging, подразделение DWYMNWYS (do what I meant, not what I said).

t184256 ★★★★★
()
Последнее исправление: t184256 (всего исправлений: 2)

В том виде, в котором ты описываешь, это невозможно. Для этого нужно проектировать ФС, ОС и ПО с нуля с учётом этой архитектуры. Тебе ничего не мешает из двух клиентов поменять один и тот же блок и никакой matrix тебе это не синхронизирует. Тут будет конфликт и нужны средства для разрешения этого конфликта. Классические средства это транзакции. Когда выигрывает первый, а второй должен свои изменения ещё раз попробовать применить с учётом изменившихся реалий. Но для этого весь программный стек должен работать согласованно.

Можешь NFS или SMB примонтировать. В каком-то приближении оно работает.

vbr ★★★★★
()
Последнее исправление: vbr (всего исправлений: 1)
Ответ на: комментарий от t184256

Че-т ору

Мы работаем, чтоб вы орали, да

akho
()
Ответ на: комментарий от Shushundr

Это утопия.

реконструирует историю даже в том случае, когда сообщения с разных мест приходят не в порядке времени их создания

BTFS условной тоже абсолютно пофиг, какой блок синхронизируется раньше, а какой позже. Про syncthing уже написали. А по факту, когда у тебя нода с наиболее значительными изменениями окажется на время в оффлайне, получишь ты порнохоррор

bigc ★★
()

В Matrix протоколе есть сервер, к которому все коннектятся.

Поэтому купи себе уже яндекс.диск и не мучай мозг.

Aceler ★★★★★
()
Ответ на: комментарий от Aceler

Он децентрализированно хочет. А для этого надо AI, который будет в реальном времени восполнять и разруливать пробелы в данных)

bigc ★★
()
Ответ на: комментарий от bigc

Я понял, что он хочет, но протокол matrix работает так, как работает, а не так, как он хочет. А чудес не бывает.

Aceler ★★★★★
()
Ответ на: комментарий от Aceler

Кстати, про matrix: там же на сервер шлются не сами сообщения, а метаданные, что позволяет затем элегантно разруливать конфликты.

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

Так сделано в десятке файловых систем, начиная от pNFS, заканчивая Ceph.

Aceler ★★★★★
()
Ответ на: комментарий от Aceler

В Matrix протоколе есть сервер, к которому все коннектятся.

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

akho
()
Ответ на: комментарий от akho

На сколько я помню, чатик всё равно заводится на каком-то одном сервере, который главный.

Ты хорошо знаешь этот протокол?

Aceler ★★★★★
()
Ответ на: комментарий от vbr

Можешь NFS или SMB примонтировать. В каком-то приближении оно работает.

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

Shushundr ★★★★
() автор топика
Ответ на: комментарий от Aceler

Мы же договорились, что у тебя должна была появиться работа, ты должен был стать занятым и перестать мне отвечать. Я понимаю, старость, память дырявая, но всё-таки волнуюсь. Вдруг ты до сих пор безработный?

Shushundr ★★★★
() автор топика
Ответ на: комментарий от Aceler

В Matrix протоколе есть сервер, к которому все коннектятся.

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

Shushundr ★★★★
() автор топика
Последнее исправление: Shushundr (всего исправлений: 1)
Ответ на: комментарий от thegoldone

Ну хорошо, я согласен. Но etcd это key-value хранилище, а не файловая система.

Shushundr ★★★★
() автор топика
Ответ на: комментарий от Aceler

Не, домен в названии чатика — это типа часть id. Беседы можно продолжать, даже когда связь между серверами рвется, и они должны быть eventually consistent.

Ты хорошо знаешь этот протокол?

В объеме трех постов на hackernews примерно.

akho
()
Ответ на: комментарий от Shushundr

Погугли highly available NFS cluster. Вроде есть и такие технологии.

Также посмотри на GlusterFS. Тоже что-то из этой области.

vbr ★★★★★
()
Последнее исправление: vbr (всего исправлений: 1)

погугли «кластерные фс», но…. сетап на трех ПК один из которых не работает…. тебе очень не понравится конченый результат. лучше не делай мозг, купи nas и подключи к нему все свои 2.5ПК

antech
()
Ответ на: комментарий от antech

купи nas

Экономлю деньги на электричестве.

Shushundr ★★★★
() автор топика
Ответ на: комментарий от akho

Почитал, как устроен протокол Matrix. Никакого чуда не происходит, просто на каждом сервере, с которого заходит клиент, ведётся копия всей переписки (возможно, зашифрованная). Если сервер в дауне, пользователь может зайти на другой сервер со своим id и получить доступ к комнате. Но в любом случае должен быть хотя бы один сервер, который онлайн.

Aceler ★★★★★
()
Ответ на: комментарий от Aceler

Да, конечно, он децентрализован между серверами, не между клиентами.

«Чудо», such as it is, в синхронизации истории между серверами, даже после долгого разрыва.

akho
()
Ответ на: комментарий от Aceler

соспна по условиям задачи ТС таки да - ему просто тупо нужен 1 сервачок, куда все ломятся по NFS. и васякот! и бомжкомпот!

mumpster ★★★★★
()
Ответ на: комментарий от mumpster

Наличие истории в чатиках даже в селф-хостед варианте с выключением на ночь — одно из немногих реальных преимуществ Matrix супротив IRC.

akho
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.