Эксперимент по созданию файловой системы, хранящей данные в кэше DNS
13 января 2018 года
Под вдохновением от проекта PingFS, предпринята попытка создания более надёжной ФС - 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-интерфейса для загрузки и скачивания файла. Обновление состояния блоков пока не поддерживается, т.е. данные могут храниться не более суток.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.