Под вдохновением от проекта PingFS (https://github.com/yarrick/pingfs), предпринята попытка (https://blog.benjojo.co.uk/post/dns-filesystem-true-cloud-st...) создания более надёжной ФС - DNSFS (https://github.com/benjojo/dnsfs). Как и PingFS проект DNSFS позиционируется как эксперимент, не рассчитанный на серьёзное использование.
В PingFS для хранения информации используется поле с данными в пакетах ICMP Echo - инициируется серия непрерывных операций ping, и каждый ответ синхронизирует примерно 1400 байт информации по аналогии с синхронизацией содержимого памяти (время жизни информации от отправки пакета до получения ответа). Но в случае остановки ping или потери пакета информация потеряется.
В DNSFS для хранения информации решено использовать кэш DNS. Для определения общедоступных резолверов было произведено сканирование всех IP-адресов сети при помощи пакета masscan, которое выявило почти 4 млн открытых DNS-резолверов, но повторная проверка показала, что 37.9% не пригодны для проекта, так как используют динамически выделяемые адреса. Дальнейшее изучение списка показало, что только 18% открытых резолверов могут хранить данные в кэше около суток. В итоге пригодными для проекта оказались 438 тысяч открытых резолверов.
Отслеживая время жизни записей и дублируя информацию можно добиться приемлимого уровня надёжности при достаточно редком цикле обновления информации (по сравнению с PingFS). В итоге можно получить полностью распределённое и не зависимое эфемерное хранилище. Для хранения было решено использовать TXT-записи в рассчёте 9 TXT-записей по 187 байт на каждый резолвер. Максимальный размер хранилища при такой разбивке составляет 250 Мб с учётом репликации данных как минимум на три разных резолвера. В текущем виде DNSFS оформлен в виде простого HTTP-интерфейса для загрузки и скачивая файла. Обновление состояния блоков пока не поддерживается, т.е. данные могут хранится не более суток.
URL: https://blog.benjojo.co.uk/post/dns-filesystem-true-cloud-st...
Новость: http://www.opennet.ru/opennews/art.shtml?num=47895