Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Venti - это сетевая система хранения, в которой постоянно хранятся блоки данных. 160-битный хэш SHA-1 данных (называемый Venti оценкой ) действует как адрес данных. Это применяет политику однократной записи, поскольку нельзя найти другой блок данных с тем же адресом: адреса нескольких записей одинаковых данных идентичны, поэтому дублирующиеся данные легко идентифицируются, а блок данных сохраняется только один раз. Блоки данных нельзя удалить, что делает его идеальным для постоянного или резервного хранилища. Venti обычно используется с Fossil для создания постоянных снимков файловой системы.

История [ править ]

Venti был разработан и реализован Шоном Куинланом и Шоном Дорвардом в Bell Labs . Он появился в дистрибутиве Plan 9 в 2002 году. Разработку продолжил Расс Кокс, который заново реализовал большую часть сервера, написал библиотеку для создания структур данных (файлов, каталогов и метаданных) для хранения в Venti и реализовал оптимизацию. Venti доступен как в дистрибутиве Plan 9, так и для многих UNIX-подобных операционных систем [1] как часть Plan 9 из User Space . Venti входит в состав Inferno с соответствующими модулями для доступа. Есть Goнабор программ для построения собственных серверов Venti. Включены примеры использования различных видов внутреннего хранилища.

Подробности [ править ]

Venti - это демон пользовательского пространства . [2] Клиенты подключаются к Venti по TCP [2] и общаются с помощью простого протокола RPC . Наиболее важные сообщения протокола перечислены ниже. Обратите внимание, что нет сообщения об удалении адреса или изменении данных по данному адресу.

  • read (score, type) , возвращает данные, идентифицируемые по счету и типу [2]
  • write (data, type) , хранит данные по адресу, вычисленному с помощью данных хеширования SHA-1 , в сочетании с типом . [2]

Блок данных, хранящийся в Venti, должен быть больше 512 байт и меньше 56 килобайт. Итак, если пользователь / клиент Venti хочет хранить большие блоки данных, он должен создать структуру данных (которая может храниться в Venti). Например, Fossil использует хэш-деревья для хранения больших файлов. Сам Venti не заботится о содержимом блока данных; однако он хранит тип блока данных.

Конструкция Venti имеет следующие последствия:

  • Поскольку записи являются постоянными, файловая система предназначена только для добавления (что позволяет реализовать простую реализацию с меньшей вероятностью ошибок, приводящих к уничтожению данных); не происходит фрагментации файловой системы .
  • Клиенты могут проверить правильность сервера: оценка возвращаемых данных должна совпадать с запрошенным адресом. Поскольку SHA-1 является криптографически безопасным хешем, изготовление данных с вычислительной точки зрения невозможно.
  • Данные не могут быть перезаписаны. Если адрес уже присутствует, значит, данные уже есть.
  • В аутентификации пользователя нет необходимости: данные не могут быть удалены и могут быть прочитаны, только если известен счет. Единственная потенциальная проблема - это то, что пользователь заполняет диски.
  • Данные можно сжимать, не усложняя структуру диска.

Блоки данных хранятся на жестких дисках . Диски, составляющие доступное хранилище, обычно RAID , называются журналом данных . Этот журнал данных разделен на более мелкие части, называемые аренами , размер которых позволяет записывать их на другие носители, такие как CD / DVD или магнитную ленту . Другой набор жестких дисков используется для индекса, который сопоставляет оценки с адресами в журнале данных. Структура данных , используемая для индекса является хэш - таблица с фиксированным размером ведра . Venti полагается на то, что оценки распределяются случайным образом, чтобы ведра не заполнялись. Поскольку каждый поиск требует одного времени поиска на диске, индекс обычно состоит из нескольких жестких дисков с малым временем доступа .

Использование [ править ]

Сервер Venti может использоваться клиентами несколькими способами. Операционная система Plan 9 использует Venti для ежедневного архивирования моментальных снимков файловой системы. Эти копии основной файловой системы могут быть смонтированы как файловое дерево полных копий, упорядоченных по дате. Служебные программы «vac» и «unvac» могут использоваться для хранения и получения данных с сервера Venti в виде отдельных файлов или в виде каталога и его содержимого. «Vacfs» позволяет просматривать данные, связанные с оценкой Vac, без полного извлечения всех удаленно сохраненных данных. Данные и показатели индекса могут дублироваться между серверами Venti с помощью rdarena и wrarena. План 9 из Bell Labs , План 9 из пользовательского пространства , Infernoи любые другие клиенты, реализующие протокол Venti, могут использоваться взаимозаменяемо для хранения и извлечения данных. [3]

Коллизии хэшей [ править ]

Основным принципом теории информации является принцип ящика , который гласит, что если набор A содержит больше значений, чем набор B, то для любой функции, отображающей A в B, будут члены B, которые связаны с более чем одним членом набора A. В случае Venti набор возможных хэшей SHA-1, очевидно, меньше, чем набор всех возможных блоков, которые могут быть сохранены в файловой системе, и, таким образом, возможна коллизия хешей .

Риск случайного хеш-коллизии в 160-битном хеш-коде очень мал даже для эксабайт данных. Однако исторически сложилось так, что многие хеш-функции становятся все более уязвимыми для злонамеренных хеш-коллизий из-за как криптографических, так и вычислительных достижений. [4] Venti не занимается проблемой хеш-коллизий; с этого времени [ когда? ] по-прежнему невозможно найти коллизии в SHA-1 с вычислительной точки зрения, но Venti может потребоваться переключиться на другую хеш-функцию в какой-то момент в будущем. С 23 февраля 2017 года, Google объявил о расколотых атаках, в которых они генерируемые два различных PDF - файлы с тем же SHA-1 хэшем в примерно 2 63,1 оценках SHA-1. [5]

См. Также [ править ]

  • Fossil - файловая система моментальных снимков, использующая Venti для постоянного хранения
  • План 9 из пользовательского пространства

Ссылки [ править ]

  1. ^ Например, Linux , FreeBSD , NetBSD , OpenBSD , SunOS или Mac OS X
  2. ^ a b c d Луккиен, Мехиэль. Анализ Venti и реализация Memventi. Тезис. Университет Твенте, 2007. Np: np, nd Хранилище тезисов Университета Твенте. Интернет. 13 октября 2014 г. < http://essay.utwente.nl/694/1/scriptie_Lukkien.pdf >.
  3. ^ "Страница руководства Venti (6) в руководстве Plan 9 4-го издания" . Man.cat-v.org . Проверено 21 апреля 2013 .
  4. ^ "HASH COLLISION Q&A." Криптографические исследования. Rambus, nd Web. 12 января 2010 г. < https://web.archive.org/web/20100306180648/http://www.cryptography.com/cnews/hash.html >.
  5. ^ < https://en.wikipedia.org/wiki/SHA-1#SHAttered_–_first_public_collision >

Внешние ссылки [ править ]

  • Venti: новый подход к архивному хранению , статья с описанием Venti.
  • Новая страница руководства Venti (обзор) , раздел 7 страница руководства Venti, включая общее описание и формат хранения.
  • Новая страница руководства Venti (сервер) , раздел 8 страница руководства Venti Server.
  • Новая страница руководства Venti (инструменты) , раздел 1 страница руководства по утилитам Venti .
  • Код Go для реализации клиентов и серверов .
  • Модуль вентиляции в Limbo для Inferno , любезно воплощенный в жизнь благодаря Google Summer of Code.