Хранилище с адресацией по содержимому ( CAS ), также называемое хранилищем с адресацией по содержимому или хранилищем с фиксированным содержимым , представляет собой способ хранения информации, позволяющий извлекать ее на основе ее содержимого, а не ее имени или местоположения. Оно использовалось для высокоскоростного хранения и извлечения фиксированного содержимого, например документов, хранящихся в соответствии с государственными постановлениями [ необходима ссылка ] . Хранилище с адресацией по содержимому похоже на память с адресацией по содержимому .
Системы CAS работают, пропуская содержимое файла через криптографическую хэш-функцию для генерации уникального ключа, «адреса содержимого». Каталог файловой системы хранит эти адреса и указатель на физическое хранилище содержимого. Поскольку попытка сохранить тот же файл сгенерирует тот же ключ, системы CAS гарантируют, что файлы внутри них являются уникальными, а поскольку изменение файла приведет к созданию нового ключа, системы CAS гарантируют, что файл не изменился.
CAS стал значимым рынком в 2000-х годах, особенно после введения в 2002 году в США Закона Сарбейнса-Оксли , который требовал хранения огромного количества документов в течение длительного времени и извлечения их лишь изредка. Постоянно растущая производительность традиционных файловых систем и новых программных систем подорвали ценность устаревших систем CAS, которые стали все более редкими примерно после 2018 года [ необходима цитата ] . Тем не менее, принципы адресуемости контента продолжают представлять большой интерес для компьютерных ученых и составляют ядро многочисленных новых технологий, таких как одноранговый обмен файлами , криптовалюты и распределенные вычисления .
Традиционные файловые системы обычно отслеживают файлы на основе их имени файла . На носителях с произвольным доступом, таких как дискета , это достигается с помощью каталога , который состоит из некоторого списка имен файлов и указателей на данные. Указатели ссылаются на физическое местоположение на диске, обычно используя секторы диска . В более современных системах и больших форматах, таких как жесткие диски , сам каталог разделен на множество подкаталогов, каждый из которых отслеживает подмножество общей коллекции файлов. Подкаталоги сами по себе представлены как файлы в родительском каталоге, создавая иерархию или древовидную организацию. Ряд каталогов, ведущих к определенному файлу, называется «путем». [1]
В контексте CAS эти традиционные подходы называются «адресованными по местоположению», поскольку каждый файл представлен списком из одного или нескольких местоположений, пути и имени файла на физическом хранилище. В этих системах один и тот же файл с двумя разными именами будет храниться как два файла на диске и, таким образом, иметь два адреса. То же самое верно, если один и тот же файл, даже с одним и тем же именем, хранится в нескольких местах в иерархии каталогов. Это делает их неидеальными для цифрового архива , где любая уникальная информация должна храниться только один раз. [2]
Поскольку концепция иерархического каталога стала более распространенной в операционных системах, особенно в конце 1980-х годов, этот тип шаблона доступа начал использоваться совершенно не связанными между собой системами. Например, Всемирная паутина использует похожую систему имен путей/имен файлов, известную как URL, для указания на документы. Тот же документ на другом веб-сервере имеет другой URL, несмотря на идентичный контент. Аналогично, если существующее местоположение каким-либо образом изменится, если изменится имя файла или сервер перейдет на новое имя службы доменных имен , документ больше не будет доступен. Это приводит к распространенной проблеме гниения ссылок . [2]
Хотя хранение на основе местоположения широко используется во многих областях, это не всегда было так. Раньше наиболее распространенным способом извлечения данных из большой коллекции было использование некоторого идентификатора на основе содержания документа. Например, система ISBN используется для генерации уникального номера для каждой книги. Если выполнить веб-поиск по запросу «ISBN 0465048994», вам будет предоставлен список местоположений для книги Why Information Grows на тему хранения информации. Хотя будет возвращено много местоположений, все они относятся к одной и той же работе, и пользователь может затем выбрать наиболее подходящее местоположение. Кроме того, если какое-либо из этих местоположений изменится или исчезнет, содержимое можно будет найти в любом из других местоположений. [2]
Системы CAS пытаются автоматически выдавать результаты, подобные ISBN, для любого документа. Они делают это, используя криптографическую хэш-функцию для данных документа, чтобы создать то, что иногда называют «ключом» или «отпечатком пальца». Этот ключ тесно связан с точным содержанием документа, например, добавление одного пробела в конце файла создаст другой ключ. В системе CAS каталог не сопоставляет имена файлов с местоположениями, а вместо этого использует ключи. [2]
Это дает несколько преимуществ. Во-первых, когда файл отправляется в CAS для хранения, хэш-функция создаст ключ, а затем проверит, существует ли этот ключ в каталоге. Если это так, файл не сохраняется, поскольку тот, который уже находится в хранилище, идентичен. Это позволяет системам CAS легко избегать дублирования данных. Кроме того, поскольку ключ основан на содержимом файла, извлечение документа с заданным ключом гарантирует, что сохраненный файл не был изменен. Недостатком этого подхода является то, что любые изменения в документе создают другой ключ, что делает системы CAS непригодными для файлов, которые часто редактируются. По всем этим причинам системы CAS обычно используются для архивов в основном статических документов [2] и иногда называются «хранилищами фиксированного содержимого» (FCS). [3]
Поскольку ключи не читаются человеком, системы CAS реализуют второй тип каталога, в котором хранятся метаданные , помогающие пользователям находить документ. Они почти всегда включают имя файла, что позволяет использовать классический поиск по имени. Но каталог также будет включать поля для общих систем идентификации, таких как коды ISBN или ISSN , ключевые слова, предоставленные пользователем, отметки времени и даты и индексы полнотекстового поиска . Пользователи могут выполнять поиск по этим каталогам и извлекать ключ, который затем можно использовать для извлечения фактического документа. [2]
Использование CAS очень похоже на использование поисковой системы в Интернете . Основное отличие заключается в том, что поиск в Интернете обычно выполняется на основе темы с использованием внутреннего алгоритма, который находит «связанный» контент, а затем создает список местоположений. Результаты могут представлять собой список идентичного контента в нескольких местоположениях. В CAS для данного поиска может быть возвращено более одного документа, но каждый из этих документов будет уникальным и представлен только один раз.
Еще одним преимуществом CAS является то, что физическое местоположение в хранилище не является частью системы поиска. Если, например, в библиотечном карточном каталоге указано, что книга может быть найдена на «полке 43, ячейке 10», то при переупорядочивании библиотеки необходимо обновить весь каталог. Напротив, ISBN не изменится, и книгу можно найти, выполнив поиск по полке с этими номерами. В настройках компьютера файл в файловой системе DOS по пути A:\myfiles\textfile.txt указывает на физическое хранилище файла в подкаталоге myfiles. Этот файл исчезает, если дискета перемещается на диск B:, и даже перемещение его местоположения в иерархии дисков требует обновления каталогов, с которыми работает пользователь. В CAS изменяется только внутреннее сопоставление ключа с физическим местоположением, и оно существует только в одном месте и может быть разработано для эффективного обновления. Это позволяет перемещать файлы между устройствами хранения и даже между носителями, не требуя никаких изменений в извлечении.
Для часто меняющихся данных CAS не так эффективен, как адресация на основе местоположения. В этих случаях устройству CAS необходимо будет постоянно пересчитывать адрес данных по мере его изменения. Это приведет к сохранению нескольких копий всего почти идентичного документа, проблема, которую CAS пытается избежать. Кроме того, каталоги, доступные пользователю, должны будут постоянно обновляться этими «новыми» файлами, которые будут засорены множеством похожих документов, что затруднит поиск. Напротив, обновление файла в системе на основе местоположения высоко оптимизировано, необходимо изменить только внутренний список секторов, и к этой операции были применены многие годы настройки.
Поскольку CAS используется в основном для архивирования, удаление файлов часто строго контролируется или даже невозможно под контролем пользователя. Напротив, автоматическое удаление является обычной функцией, удаляющей все файлы старше определенного законом требования, скажем, десяти лет. [2]
Самый простой способ реализовать систему CAS — хранить все файлы в типичной базе данных, к которой клиенты подключаются для добавления, запроса и извлечения файлов. Однако уникальные свойства адресуемости контента означают, что парадигма хорошо подходит для компьютерных систем, в которых несколько хостов совместно управляют файлами без центрального управления, например, распределенные системы обмена файлами , в которых физическое местоположение размещенного файла может быстро меняться в ответ на изменения в топологии сети, в то время как точное содержимое извлекаемых файлов имеет большее значение для пользователей, чем их текущее физическое местоположение. В распределенной системе хэши контента часто используются для быстрого поиска определенных файлов по всей сети или для быстрого просмотра того, какие данные в данном файле были изменены и должны быть распространены на других участников сети с минимальным использованием полосы пропускания . В этих системах адресуемость контента позволяет абстрагировать сильно изменчивую топологию сети от пользователей, желающих получить доступ к данным, по сравнению с такими системами, как World Wide Web , в которых постоянное местоположение файла или службы является ключом к простоте использования.
Аппаратное устройство, называемое Content Addressable File Store (CAFS), было разработано компанией International Computers Limited (ICL) в конце 1960-х годов и введено в эксплуатацию компанией British Telecom в начале 1970-х годов для поиска в телефонных справочниках . Доступная пользователю функциональность поиска поддерживалась контроллером диска с интерфейсом прикладного программирования высокого уровня (API), так что пользователи могли отправлять запросы в то, что казалось черным ящиком , который возвращал документы. Преимущество заключалось в том, что не нужно было обмениваться информацией с главным компьютером, пока диск выполнял поиск.
Пол Карпентьер и Ян ван Риль придумали термин CAS, работая в компании FilePool в конце 1990-х годов. FilePool была куплена корпорацией EMC в 2001 году и выпущена в следующем году под названием Centera. [4] Время было идеальным: введение закона Сарбейнса-Оксли в 2002 году потребовало от компаний хранить огромные объемы документации в течение длительных периодов времени и делать это таким образом, чтобы гарантировать, что они не будут отредактированы постфактум. [5]
Вскоре появилось несколько подобных продуктов от других поставщиков крупных систем. В середине 2004 года отраслевая группа SNIA начала работать с рядом поставщиков CAS для создания стандартных правил поведения и взаимодействия для систем CAS. [6]
В дополнение к CAS, появилось несколько похожих продуктов, которые добавили возможности CAS к существующим продуктам; среди них выделяется IBM Tivoli Storage Manager . Рост облачных вычислений и связанных с ними эластичных облачных систем хранения данных, таких как Amazon S3, еще больше разбавил ценность выделенных систем CAS. Dell приобрела EMC в 2016 году и прекратила продажи оригинальной Centera в 2018 году в пользу своего эластичного продукта хранения данных. [7]
CAS не ассоциировался с одноранговыми приложениями до 2000-х годов, когда быстро распространяющийся доступ к Интернету в домах и на предприятиях привел к тому, что большое количество пользователей компьютеров захотело обмениваться файлами, изначально делая это на централизованно управляемых сервисах, таких как Napster . Однако запрет против Napster побудил к независимой разработке файлообменных сервисов, таких как BitTorrent , которые нельзя было закрыть централизованно. Чтобы функционировать без центрального сервера федерации, эти сервисы в значительной степени полагаются на CAS для обеспечения точного копирования и простого запроса уникальных файлов. В то же время рост движения программного обеспечения с открытым исходным кодом в 2000-х годах привел к быстрому распространению сервисов на основе CAS, таких как Git , система контроля версий , которая использует многочисленные криптографические функции, такие как деревья Меркла, для обеспечения целостности данных между пользователями и допускает несколько версий файлов с минимальным использованием диска и сети. Примерно в это же время отдельные пользователи криптографии с открытым ключом использовали CAS для хранения своих открытых ключей в таких системах, как серверы ключей .
Рост мобильных вычислений и сетей мобильной широкополосной связи высокой емкости в 2010-х годах в сочетании с растущей зависимостью от веб-приложений для повседневных вычислительных задач напряг существующую модель клиент-сервер с адресацией по местоположению, распространенную среди интернет-сервисов, что привело к ускорению темпов разрушения ссылок и увеличению зависимости от централизованного облачного хостинга . Кроме того, растущая обеспокоенность по поводу централизации вычислительной мощности в руках крупных технологических компаний , потенциальных злоупотреблений монопольной властью и проблем с конфиденциальностью привели к появлению ряда проектов, созданных с целью создания более децентрализованных систем. Bitcoin использует CAS и пары открытого/закрытого ключей для управления адресами кошельков, как и большинство других криптовалют . IPFS использует CAS для идентификации и адресации совместно размещенных файлов в своей сети. Многочисленные другие одноранговые системы, разработанные для работы на смартфонах , которые часто получают доступ к Интернету из разных мест, используют CAS для хранения и доступа к пользовательским данным как для удобства, так и для обеспечения конфиденциальности данных, например, для безопасного обмена мгновенными сообщениями .
Система Centera CAS состоит из ряда сетевых узлов (обычно это большие серверы под управлением Linux ), разделенных на узлы хранения и узлы доступа. Узлы доступа поддерживают синхронизированный каталог адресов контента и соответствующий узел хранения, где можно найти каждый адрес. Когда добавляется новый элемент данных, или blob , устройство вычисляет хэш контента и возвращает этот хэш как адрес контента blob. [8] Как упоминалось выше, хэш ищется для проверки того, что идентичного контента еще нет. Если контент уже существует, устройству не нужно выполнять никаких дополнительных шагов; адрес контента уже указывает на правильный контент. В противном случае данные передаются на узел хранения и записываются на физический носитель.
Когда устройству предоставляется адрес контента, оно сначала запрашивает каталог для физического расположения указанного адреса контента. Затем информация извлекается из узла хранения, а фактический хэш данных пересчитывается и проверяется. После этого устройство может предоставить запрошенные данные клиенту. В системе Centera каждый адрес контента фактически представляет собой ряд отдельных блоков данных, а также необязательные метаданные . Всякий раз, когда клиент добавляет дополнительный блок к существующему блоку контента, система пересчитывает адрес контента.
Для обеспечения дополнительной безопасности данных узлы доступа Centera, когда не выполняется операция чтения или записи, постоянно взаимодействуют с узлами хранения, проверяя наличие не менее двух копий каждого блоба, а также их целостность. Кроме того, их можно настроить для обмена данными с другой, например, внешней, системой Centera, тем самым усиливая меры предосторожности против случайной потери данных.
У IBM есть еще одна разновидность CAS, которая может быть программной, Tivoli Storage manager 5.3, или аппаратной, IBM DR550. Архитектура отличается тем, что она основана на иерархическом управлении хранилищем (HSM), которое обеспечивает некоторую дополнительную гибкость, например, возможность поддержки не только диска WORM , но и ленты WORM и переноса данных с диска WORM на ленту WORM и наоборот. Это обеспечивает дополнительную гибкость в ситуациях аварийного восстановления, а также возможность сократить расходы на хранение за счет перемещения данных с диска на ленту.
Другой типичной реализацией является iCAS от iTernity. Концепция iCAS основана на контейнерах. Каждый контейнер адресуется по его хэш-значению. Контейнер содержит разное количество документов с фиксированным содержимым. Контейнер не подлежит изменению, а хэш-значение фиксируется после процесса записи.