RU2501072C2 - Распределенное хранение восстанавливаемых данных - Google Patents
Распределенное хранение восстанавливаемых данных Download PDFInfo
- Publication number
- RU2501072C2 RU2501072C2 RU2011136622/08A RU2011136622A RU2501072C2 RU 2501072 C2 RU2501072 C2 RU 2501072C2 RU 2011136622/08 A RU2011136622/08 A RU 2011136622/08A RU 2011136622 A RU2011136622 A RU 2011136622A RU 2501072 C2 RU2501072 C2 RU 2501072C2
- Authority
- RU
- Russia
- Prior art keywords
- replacement
- quota
- quotas
- node
- generated
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 35
- 238000012546 transfer Methods 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 9
- 238000012795 verification Methods 0.000 claims description 5
- 230000000694 effects Effects 0.000 abstract description 3
- 239000000126 substance Substances 0.000 abstract 1
- 238000011084 recovery Methods 0.000 description 12
- 238000013459 approach Methods 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 8
- 239000013598 vector Substances 0.000 description 7
- 238000012545 processing Methods 0.000 description 6
- 230000015572 biosynthetic process Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000003339 best practice Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012887 quadratic function Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000010572 single replacement reaction Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1658—Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
- G06F11/1662—Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit the resynchronized component or unit being a persistent storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2094—Redundant storage or storage space
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Изобретение относится к вычислительной технике. Технический результат заключается в увеличении надежности хранения данных. Способ замены отказавшего узла, хранящего распределенные данные, содержащий этапы, на которых: посредством первого узла хранения принимают первый набор квот, сгенерированный из файла данных, при этом каждая квота в первом наборе включает в себя линейную комбинацию частей файла данных наряду с набором коэффициентов, использованных для генерирования этой линейной комбинации; посредством первого узла хранения принимают указание нового узла хранения, заменяющего отказавший узел, при этом отказавший узел включает в себя второй набор квот, сгенерированный из файла данных; посредством первого узла хранения генерируют первую заменяющую квоту в качестве реакции на упомянутое указание, при этом первую заменяющую квоту генерируют путем умножения каждой квоты в первом наборе и набора коэффициентов на случайное масштабирующее значение и объединения умноженного первого набора квот и умноженного набора коэффициентов; и посредством первого узла хранения передают сгенерированную первую заменяющую квоту в новый узел хранения, при этом первая заменяющая квота и по меньшей мере одна другая заменяющая квота формируют второй набор квот в новом узле хранения, причем эта другая заменяющая квота генерируется вторым узлом хранения. 3 н. и 20 з.п. ф-лы, 5 ил.
Description
ПЕРЕКРЕСТНАЯ ССЫЛКА НА РОДСТВЕННЫЕ ЗАЯВКИ
[0001] По данной заявке испрашивается приоритет Предварительной Заявки США 61/149,676, поданной 03 Февраля 2009 года, которая во всем своем объеме включена в настоящее описание посредством ссылки.
ПРЕДПОСЫЛКИ СОЗДАНИЯ ИЗОБРЕТЕНИЯ
Область техники, к которой относится изобретение
[0002] Настоящее изобретение в целом относится к распределенному хранению данных на различных узлах в сети.
Описание связанной области техники
[0003] Главной проблемой хранения является то, каким образом хранить данные с избыточностью, чтобы даже при отказе конкретной части хранилища оставалась возможность восстановления данных из других источников. Одной схемой является простое хранение множества копий всего. Несмотря на то что это работает, данный подход требует значительно большего объема хранения для обеспечения конкретного уровня надежности (или, прямо обратно, он обеспечивает значительно меньшую надежность при конкретном объеме хранилища).
[0004] Для достижения лучшей надежности могут использоваться коды стирания. Код стирания берет исходную часть данных и формирует из нее то, что называется «квотами». Квоты выполнены таким образом, что до тех пор, пока существует достаточное количество квот, так что их общий размер такой же, как размер исходных данных, исходные данные могут быть воссозданы из них. В том, что именуется как схема кодирования со стиранием k-из-n, формируется n квот, и любые k из них могут использоваться для воссоздания исходных данных. Каждая квота является размером 1/k от размера исходных данных, так что квоты содержат достаточно информации для воссоздания. n может быть спорадическим. Хранение большего числа квот приведет к большей надежности, но количество квот может измеряться от k до, по сути, бесконечности. Обычная схема простого хранения множества копий исходных данных может рассматриваться как схема 1-из-n для n копий и как очень ненадежная, но при этом простая схема дробления исходных данных на части, а сохранение всех их по отдельности можно рассматривать как схему k-из-k для k частей.
[0005] Метод кодирования со стиранием сначала разбивает исходные данные на k частей, затем обрабатывает данные части как векторы в поле Галуа (Galois) (GF) и формирует квоты посредством умножения частей на произвольные коэффициенты и их сложения. Кодирование со стиранием также может выполняться посредством обработки частей в качестве векторов по модулю простого числа. Для простоты, описанное ниже кодирование со стиранием использует поля Галуа. В итоге квота содержит результат данного вычисления наряду с произвольными коэффициентами. Случайность коэффициентов является причиной того, что существует вероятность того, что исходные данные будут невосстанавливаемыми, которая, по сути, равна обратному количеству используемых элементов поля Галуа. Применительно к хранению, поле Галуа размером 232 или 264 (соответствующее секциям обработки из 4 и 8 байтов соответственно как отдельным элементам) является разумным компромиссом между расходами на вычисления и вероятностью того, что данные будут невосстанавливаемыми, что является крайне маловероятным при 232 и, по сути, невозможным при 264.
[0006] Рассмотренный выше метод сталкивается с ограничениями при использовании применительно к распределенному хранению через Интернет. Применительно к хранению через Интернет недостаточным ресурсом является пропускная способность, а емкость хранения конечных узлов, по сути, бесконечна (или, по меньшей мере, достаточно недорогая, чтобы не быть ограничивающим фактором), приводя к ситуации, где ограничивающим фактором для любого хранения является величина пропускной способности для его отправки. Применительно к исходному хранению это приводит к модели, аналогичной той, при которой ограничивающим фактором является емкость хранения; где существует один к одному замена пропускной способности для хранения. Но после исходного хранения значительные ресурсы пропускной способности могут потребляться для замены отказавших носителей информации (и, в конечном счете, отказывают все носители информации). Как правило, когда избыточное хранение выполнено локально, например в локальной сети, то полное восстановление исходных данных выполняется в отношении квот, которые содержались на отказавших носителях, затем создаются новые квоты и сохраняются на других частях носителей, и затем временная полная копия удаляется. Выполнение такого же действия через Интернет потребует получения k квот из различных оставшихся носителей информации, воссоздания исходных данных, формирования новых k квот и отправки квот на носители информации (включая замещающие носители информации). Это требует использования 2k-кратного размера квот в пропускной способности через Интернет, что становиться быстро неприемлемым по мере роста k.
[0007] Простое хранение нескольких копий данных лучше справляется с задачей, избегая использования пропускной способности, но имеет намного хуже свойства надежности и обладает собственными потерями в масштабе n, так как чем больше копий чего-либо требуется для хранения, тем больше пропускной способности используется по мере того как утрачиваются копии.
КРАТКОЕ ОПИСАНИЕ СУЩНОСТИ ИЗОБРЕТЕНИЯ
[0008] Система, способ и компьютерный программный продукт заменяют отказавший узел, хранящий данные, относящиеся к части файла данных. В одном варианте осуществления каждым из множества доступных узлов хранения принимается указание на замену отказавшего узла новым узлом хранения. Каждый из доступных узлов хранения содержит множество квот, сформированных из файла данных. Данные квоты могут быть сформированными на основании частей файла данных, используя методики кодирования со стиранием. Заменяющая квота формируется на каждом из множества доступных узлов хранения. Заменяющие квоты формируются посредством создания линейной комбинации квот на каждом узле, используя случайные коэффициенты. Затем, сформированные заменяющие квоты отправляются из множества узлов хранения указанному новому узлу хранения. В дальнейшем эти заменяющие квоты могут использоваться для воссоздания файла данных.
ПЕРЕЧЕНЬ ФИГУР ЧЕРТЕЖЕЙ
[0009] Фиг.1 иллюстрирует среду, включающую в себя узлы хранения для распределенного хранения данных, в одном варианте осуществления.
[0010] Фиг.2 является логической блок-схемой, иллюстрирующей способ распределенного хранения данных в одном варианте осуществления.
[0011] Фиг.3 является логической блок-схемой, иллюстрирующей способ разбиения файла данных на квоты и отправки квот узлам хранения в одном варианте осуществления.
[0012] Фиг.4 является логической блок-схемой, иллюстрирующей способ формирования квот для заменяющего узла хранения в одном варианте осуществления.
[0013] Фиг.5 является принципиальной схемой, иллюстрирующей формирование заменяющих квот для заменяющего узла из оставшихся доступных узлов в одном варианте осуществления.
[0014] Фигуры изображают предпочтительные варианты осуществления настоящего изобретения только в целях иллюстрации. Из нижеследующего рассмотрения специалист легко распознает, что, не отступая от описываемых здесь принципов изобретения, могут быть воплощены альтернативные проиллюстрированным здесь структурам и способам варианты осуществления.
ПОДРОБНОЕ ОПИСАНИЕ ПРЕДПОЧТИТЕЛЬНЫХ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ
[0015] Фиг.1 иллюстрирует среду 100, включающую в себя узлы 106 хранения для распределенного хранения данных в одном варианте осуществления. Блок 102 выгрузки исходно содержит в себе файл данных, который должен быть сохранен на узлах хранения. Оператор блока выгрузки может пожелать выполнить сохранение файлов на узлах хранения по разным причинам, таким как резервное копирование файла или совместное использование файла. Блок выгрузки разделяет файлы на квоты, дополнительно описываемые ниже, и отправляет квоты различным узлам хранения по сети 104. Узлы 106 хранения принимают квоты и сохраняют квоты. Блок 110 загрузки получает квоты от различных узлов хранения и воссоздает файл данных. В одном варианте осуществления блок 110 загрузки является тем же, что и блок 102 выгрузки. Блок 108 слежения может отслеживать аспекты системы хранения, такие как доступность или недоступность различных узлов хранения и местоположения различных квот. Узлы 106 хранения и блок 102 выгрузки и блок загрузки могут принимать информацию от блока слежения в отношении отправки, приема или создания квот.
[0016] Любой из узлов 106 хранения может в любой момент времени стать недоступным. Например, могут быть потеряны данные, хранящиеся на узле хранения, или может быть потеряна способность узла к соединению с сетью. Квоты, отправленные блоком 102 выгрузки, распределяются по узлам 106 хранения таким образом, чтобы оставалась возможность полного восстановления файла данных даже при отказе одного или более узлов 106 хранения. Существует некоторая избыточность между квотами в разных узлах хранения. Когда конкретный узел 106 хранения становится недоступным, может быть активирован заменяющий узел хранения, а оставшиеся узлы 106 хранения формируют заменяющие квоты и отправляют эти квоты непосредственно заменяющему узлу хранения для хранения на нем. Эти заменяющие (также именуемые как “новые”) квоты могут создаваться посредством повторного объединения существующих квот на оставшихся узлах. Применительно к квотам не является обязательным отправка их в единое местоположение (например, блок выгрузки), воссоздание в исходный файл и затем повторное разделение на новые квоты, которые отправляются текущим узлам. В результате сокращается потребление пропускной способности по сети 104 при хранении квот на заменяющем узле, после того как узел становится недоступным.
[0017] Блок 102 выгрузки, блок 110 загрузки, блок 108 слежения и узлы 106 хранения могут быть компьютерами, содержащими CPU (центральный процессор), память, жесткий диск или другое устройство хранения, сетевой интерфейс, периферийные интерфейсы и прочие широко известные компоненты. Узлы 106 хранения могут включать в себя большие объемы доступного пространства для хранения. В одном варианте осуществления узлы хранения могут быть подключаемыми к сети устройствами хранения. Несмотря на то, что на фиг.1 показано только три узла хранения, их может быть намного больше. В дополнение также может существовать множество блоков 102 выгрузки и блоков 110 загрузки, получающих доступ к узлам хранения. Также может существовать множество блоков 108 слежения (например, могут существовать резервные блоки слежения для случая отказа основного блока слежения).
[0018] Блок 102 выгрузки, блок 110 загрузки, блок 108 слежения и узлы 106 хранения осуществляют связь посредством сети 104. Сеть может быть выполнена в виде Интернет, локальной сети, беспроводной сети и различных других типов сетей. В одном варианте осуществления узлы хранения могут быть географически удалены от блока выгрузки и блока загрузки, и передача по сети больших объемов данных между блоком выгрузки, блоком загрузки и узлами хранения может быть дорогостоящей. В результате в некоторых вариантах осуществления важной может быть минимизация таких передач данных во время операций, таких как предоставление заменяющему узлу квот.
[0019] В одном варианте осуществления блок 108 слежения функционирует в качестве централизованной системы управления и команд, управляемой поставщиком услуг, для координации передачи данных между блоками выгрузки, блоками загрузки и узлами хранения. Так как непосредственно через блок слежения не производятся массовые передачи данных, то его пропускная способность и вычислительные ресурсы могут быть низкими, и он может быть выполнен с использованием обычных методов восстановления после отказа. Блок слежения отвечает за отслеживание местоположений квот и узлов хранения и отслеживания того, какие из операций прошли успешно, а какие отказали. Передача данных квот выполняется непосредственно (например, от блока выгрузки к узлу хранения или от узла хранения к узлу хранения), благодаря координации, обеспечиваемой блоком слежения.
[0020] Фиг.2 является логической блок-схемой, иллюстрирующей способ распределенного хранения данных в одном варианте осуществления. Исходно файл данных, который должен быть сохранен, представлен на блоке 102 выгрузки. Блок выгрузки разбивает 202 файлы на квоты, которые в некоторой степени содержат избыточность. Затем данные квоты отправляются 204 различным узлам 106 хранения и распределяются таким образом, чтобы все же оставалась возможность восстановления исходного файла данных из квот на оставшихся узлах при потере квот на одном или более узлах. В некоторый момент времени один из узлов хранения отказывает, и квоты, хранящиеся на данном узле, теряются. Для сохранения точно такого же уровня надежности хранения в качестве заменяющего узла назначается новый узел 106 хранения. На нескольких из существующих узлов формируются 206 заменяющие квоты, которые будут храниться на заменяющем узле, и эти квоты отправляются заменяющему узлу для хранения на заменяющем узле. Этап 206 может выполняться несколько раз по мере того, как отказывает и заменяется множество узлов. В некоторый момент времени блок 110 загрузки может заинтересоваться в получении файла данных. Блок загрузки получает 208 квоты от доступных в настоящий момент узлов хранения и воссоздает 210 исходный файл данных. Варианты осуществления этапов на фиг.2 более подробно описываются ниже.
[0021] Фиг.3 является логической блок-схемой, иллюстрирующей способ разбиения файла данных на квоты и отправки квот узлам хранения в одном варианте осуществления. Исходно блок 102 выгрузки принимает 302 количество доступных узлов 106 хранения от узла слежения или администратора системы или другого источника. В описании ниже исходное количество доступных узлов представлено как N. Так же принимается 304 параметр x надежности. Параметр x надежности представляет собой количество узлов хранения, содержащих квоты файла данных, доступность которых требуется для восстановления файла данных. Как правило, x выбирается таким, чтобы быть меньше N, и таким образом, чтобы оставалась возможность восстановления файла, если становятся недоступными один или более узлов. В описании ниже x принимается нечетным, тем не менее, с незначительными изменениями могут быть созданы варианты осуществления для четных значений. Параметр надежности может приниматься от блока слежения, или оператора блока выгрузки, или другого источника. Он может быть установлен в соответствии с политикой системы.
[0022] Квоты создаются из файла данных, используя схему кодирования со стиранием k-из-n, описанную выше в разделе “Предпосылки Создания Изобретения”, где k=x*(x+1)/2 в одном варианте осуществления. В одном варианте осуществления k является квадратичной функцией x. Каждая квота имеет размер 1/k файла данных. Создаются квоты общим числом n, где n=xN, и x квот отправляется каждому узлу хранения. В одном варианте осуществления файл данных разбивают 306 на k последовательных частей, которые обрабатываются для формирования 308 n квот, используя кодирование со стиранием. Например, на этапе 306, файл из 10 миллионов байт может быть разбит на последовательные части по 4,000 байт каждая. Обработка на этапе 308 включает в себя умножение частей на произвольные коэффициенты и сложение (масштабированных) частей вместе в различных комбинациях. Например, каждая часть из 4,000 байт может быть умножена на 4-байтный случайный коэффициент посредством умножения каждого 4-байтного сегмента части на случайный коэффициент (по модулю 232) для формирования масштабированных частей. Затем эти масштабированные части могут быть сложены вместе, приводя к квоте, которая является линейной комбинацией частей.
[0023] В одном варианте осуществления случайные коэффициенты, используемые для формирования конкретной квоты, прикрепляются к концу квоты. При использовании квот в качестве векторов в поле Галуа размером 232 это вызывает прикрепление 32-битного (четырехбайтного) значения к концу квоты применительно к каждому коэффициенту. Эти прикрепленные коэффициенты в дальнейшем могут быть обработаны аналогично оставшейся части квоты, упрощая реализацию обработки квот. Например, когда квота умножается на конкретное значение или складывается с другой квотой, случайный коэффициент может аналогичным образом умножаться на значение и складываться с соответствующим коэффициентом в другой квоте. В одном варианте осуществления файл разбивается на единицы оправданного размера и затем вновь разбивается на более мелкие части.
[0024] Затем квоты отправляются 310 узлам 106 хранения и сохраняются в узлах. В частности, x квот отправляется каждому из N узлов хранения, используя описанный выше метод k-из-n. Квоты распределяются по узлам таким образом, чтобы при отказе любых N-x узлов в оставшихся квотах на оставшихся доступных узлах оставалось достаточно информации для воссоздания файла данных. Квоты обеспечивают N узлов хранения некоторым объемом избыточности для того, чтобы противостоять некоторому количеству отказов узлов и предоставлять каждому из узлов информацию, относящуюся ко всем частям файла. Одной оптимизацией применительно к исходному распределению квот является то, что каждая из квот одного узла хранения будет формироваться из разных групп частей (x+1)/2 файла данных. Это дает узлу хранения информацию, относящуюся ко всем частям файла, уменьшая при этом объем вычислений, требуемый для формирования квот. В одном варианте осуществления исходные части файла данных разделяются на сегменты, и каждая квота (для исходного распределения) создается посредством объединения части из каждого из сегментов.
[0025] Блок 108 слежения может обновляться 312, чтобы обладать информацией о текущем статусе квот и узлов хранения. Блок 102 выгрузки может предоставлять блоку слежения информацию, идентифицирующую каждую формируемую квоту и идентифицирующую узел 106 хранения, в котором сохранена квота. Информация идентификации квоты может включать в себя информацию, относящуюся к следующей части файла данных, которой соответствует квота. Блок слежения также может обновляться в отношении статуса каждого узла хранения как являющегося доступным и в отношении содержащихся в нем конкретных квот, связанных с файлом данных. Блок слежения также может обновляться в отношении общего статуса файла данных как находящегося в «сохраненном» состоянии.
[0026] Исходное хранение данных на узлах хранения не может быть реализовано блоком 102 выгрузки в техническим смысле надежным и обладающим способностью к восстановлению после отказа, так как сам по себе блок выгрузки является отдельной точкой отказа. В одном варианте осуществления, когда блок выгрузки запрашивает сохранение файла данных, блок 108 слежения может рассматривать файл данных как находящийся в состоянии “выгрузки”, из которого он может перейти к состоянию “отказавший”, если выявляется, что отказал блок выгрузки. Если достаточное количество узлов хранения приняли требуемые квоты, то затем состояние файла данных обновляется в блоке слежения до состояния “сохранен”. Состояние “сохранен” также может иметь два информационных субсостояния “доступен” и “недоступен”, в зависимости от того, составляет ли количество узлов хранения, которые в настоящий момент имеют квоты, по меньшей мере, x. Исходно, после успешной выгрузки, субсостояние является “доступным”, но может меняться по мере отказа узла, как описывается ниже.
[0027] Фиг.4 является логической блок-схемой, иллюстрирующей способ формирования квот для заменяющего узла 106 хранения в одном варианте осуществления. Как упоминалось выше, узел хранения может в любой момент отказать по различным причинам. Такие причины могут включать в себя, например, отказ оборудования, отказ способности к подключению к сети и отказ по питанию. Узлы хранения также могут умышленно выводиться в автономный режим с или без уведомления заранее. Узел, который отказал или выведен в автономный режим, так же именуется как недоступный узел. Когда узел отказал, зачастую полезным является быстро настроить заменяющий узел, так чтобы в системе узлов хранения сохранялся тот же самый уровень надежности. Если отказало меньше чем N-x узлов, то оставшиеся узлы все еще содержат достаточно информации для восстановления файла данных и, для сохранения надежности системы, в онлайн режим могут быть выведены заменяющие узлы.
[0028] Принимается 402 указание на отказавший узел и заменяющий узел. Также возможно существование нескольких отказавших узлов и заменяющих узлов, но для ясности здесь описывается случай с одним узлом. Это указание может приниматься блоком 108 слежения. В одном варианте осуществления блок слежения периодически проверяет статус узлов (или принимает от узлов обновления статусов) для того, чтобы идентифицировать отказавшие узлы. Блок слежения может идентифицировать конкретный заменяющий узел из совокупности свободных узлов или может принять указание заменяющего узла от некоторого другого источника, такого как администратор системы. Указание на отказавший или заменяющий узел может содержать сетевой адрес или другой идентификатор узла.
[0029] Затем блок 108 слежения уведомляет любые x из оставшихся доступных узлов о заменяющем узле. В одном варианте осуществления эти узлы могут непосредственно принимать уведомление. В одном варианте осуществления блок слежения уведомляет заменяющий узел о доступных узлах, и заменяющий узел инициирует передачи от доступных узлов. Эти x доступных узлов, также именуемые как выгружающие узлы, каждый затем формирует 404 заменяющую квоту и отправляет 406 эту заменяющую квоту заменяющему узлу. Каждый выгружающий узел формирует заменяющую квоту посредством умножения каждой из его квот (включая коэффициенты квот) на случайное масштабирующее значение и затем сложения их вместе. Например, если квота является длиной в 400 байт, а случайное масштабирующее значение является 4-байтным числом, то квота делится на 100 4-байтных секций и каждая секция умножается на случайное масштабирующее значение (по модулю 232). Исходный файл данных, содержащийся в квотах, остается восстановимым, так как коэффициенты квот были изменены при помощи случайных масштабирующих значений таким же образом, как и данные квоты. В результате заменяющая квота, сформированная каждым узлом, представляет собой сочетание данных, содержащихся в настоящий момент в квотах данного узла.
[0030] Фиг.5 является принципиальной схемой, иллюстрирующей формирование заменяющих квот для заменяющего узла из оставшихся доступных узлов в одном варианте осуществления. В примере, показанном на фиг.5, исходное количество узлов, N, равно 5, а параметр надежности x равен 3, так что вплоть до 2 узлов могут отказать, не создавая ситуации потери данных без возможности восстановления. Каждый узел содержит x квот (в данном примере три квоты). Узел N2 отказал, приводя к тому, что доступными остаются четыре узла. N6 был определен как заменяющий (или новый) узел для пополнения количества узлов вновь до пяти. Доступные узлы N1, N4 и N5 были выбраны блоком слежения для формирования заменяющих квот для N6. Каждый из трех выбранных узлов объединяет свои квоты для формирования единой заменяющей квоты для N6. Эти заменяющие квоты отправляются непосредственно от доступных узлов к N6 и сохраняются в N6.
[0031] Блок 108 слежения обновляется 408, чтобы отражать новый доступный узел(ы) и новые квоты на новом узле(ах). Отдельные узлы хранения могут иметь состояние “доступных” или “недоступных”. Новые узлы могут быть обновлены до состояния “доступный”, как только они загрузили все квоты, а отказавший узел может быть обновлен до состояния “недоступный”. В одном варианте осуществления всегда по прошествии некоторого времени предполагается возможность возвращения узла, так что узел не помечается как постоянно “недоступный”. В то время как узел хранения пытается загрузить квоту с других узлов или с блока выгрузки, ему блоком слежения может быть назначено состояние “загружающий”.
[0032] В зависимости от того, имел ли место успех или отказ при попытке узлом хранения сформировать объединенную квоту, узлом хранения производится оценка и результат сообщается блоку 108 слежения. В одном варианте осуществления, во время исходной выгрузки файла данных, блок слежения может начать несколько передач квот узлам 106 хранения, затем добавить еще, в зависимости от того, успешна или нет передача, и произвести остановку, если достаточное количество узлов обладает полным набором квот, или прекратить попытки, если подряд происходит слишком много отказов. Подобным образом, если файл данных был сохранен и достаточное количество узлов хранения отказало, так что объем доступных квот ниже безопасного порогового значения, блок слежения может начать передачу к новому узлу хранения и затем вернуться к устойчивому состоянию, если данная передача успешна, или перейти после отказа к другому узлу, если произошел отказ при передаче, и временно пометить конкретную часть данных как недоступную, если подряд произошли отказы слишком многих передач. В примере на фиг.5 предположим, что в качестве безопасного порогового значения задано пять узлов. Если узел отказывает и количество узлов падает ниже пяти, то блок слежения может связаться с оставшимися узлами на предмет начала формирования заменяющих квот для нового узла. Если происходит отказ при передаче заменяющих квот новому узлу, то блок слежения может пометить данный узел как “отказавший”, идентифицировать второй новый узел и связаться с оставшимися узлами на предмет формирования заменяющих квот для второго нового узла. Если при передаче заменяющих квот второму узлу также происходит отказ, то файл данных квот может быть помечен как временно недоступный для загрузки.
[0033] Передачи могут выполняться посредством формирования выгружающим узлом хранения новой вновь объединенной квоты и простого сохранения ее загружающим узлом хранения. Чтобы сделать систему передачи более универсальной, файл может разбиваться на части исходно (в блоке выгрузки) до того, как будет разбит на квоты, так чтобы x узлы, которые обеспечивают квоты для одной части, не обязательно были теми же самыми, что и x узлы, обеспечивающие квоты для другой части. Передачи могут завершаться группой узлов, отличных от узлов, с которых они начинались, в случае если один из узлов в середине операции выходит из строя. Также передачи могут выполняться одновременно из любого доступного источника квот, что является преимуществом, так как узким местом скоростей передачи данных, как правило, является сторона восходящей линии связи, и таким образом загрузка с нескольких источников приведет к более быстрой передаче, как, впрочем, и более равномерно распределенному использованию пропускной способности. Это, в свою очередь, приводит к более быстрому восстановлению после отказа и, следовательно, к более высокой надежности. В одном варианте осуществления, когда узел хранения начинает передачу, ему дается полный набор доступных источников, которые считаются блоком слежения как находящиеся онлайн, возможно включая и исходный блок выгрузки, и затем он осуществляет передачу на любой скорости, на которую он способен, со всех доступных источников.
[0034] Описанный выше процесс замены отказавшего узла 106 может, при необходимости, повторяться любое количество раз. Следуя данному процессу, узлы хранения могут с течением времени отказывать и заменяться, а квоты для заменяющих узлов могут приходить от узлов, которые сами в прошлой генерации были заменяющими узлами. Любые x узлы с полным набором квот могут использоваться для восстановления исходного файла, независимо от того, как много произошло генераций отказов узлов. В большинстве конкретных случаев количество узлов, требуемых для восстановления, меньше x узлов. Например, при формировании заменяющих квот для первого заменяющего узла после исходного сохранения достаточно квот от любых (x+1)/2 узлов.
[0035] После достаточных генераций узлов, отказавших и замененных, количество узлов, необходимых для полного восстановления, будет монотонно стремиться к x, в особенности в ситуации, когда количество доступных узлов сокращается до x. Несмотря на то, что на практике надежность вероятнее будет выше, строгим минимальным значением обеспечения производительности системы является необходимость в не более чем x узлах. В одном варианте осуществления система хранения может начинать с меньшего количества узлов при исходном сохранении файла данных и со временем может увеличивать количество узлов, по мере того как ожидается, что надежность системы будет падать. Например, по прошествии некоторого времени или после того, как произошло определенное количество отказов и замен узлов, в систему может быть добавлен дополнительный узел. Для данного дополнительного узла квоты могут формироваться таким же образом, как сформированные квоты для заменяющих узлов. Тем не менее, существует возможность того, что надежность системы со временем возрастет, так как узлы, все еще содержащие квоты для файла данных, будут иметь более длительное время работоспособности и, следовательно, откажут с меньшей вероятностью, чем все же непроверенные узлы, которые используются для исходного сохранения. Данное соображение имеет тенденцию сбалансировать упомянутое выше ожидаемое падение надежности.
[0036] Если несколько заменяющих квот предоставляются от одного узла заменяющим узлам через последующие генерации отказа узла, то может произойти потеря данных. Тем не менее, существует возможность использования дополнительной информации для проверки целостности заменяющих квот, принимаемых от доступного узла, для выявления этой потери данных. В случае, когда заменяющая квота не проходит эту проверку, может быть запрошена новая заменяющая квота от узла или другого узла.
[0037] Целостность заменяющей квоты от конкретного доступного узла может проверяться либо посредством приема от конкретного доступного узла дополнительной информации, либо посредством приема информации от другого доступного узла. Данная проверка незначительно увеличивает использование пропускной способности по сети. Для проверки вновь принятой квоты заменяющий (или новый) узел отправляет начальное число генератору псевдослучайных чисел (PRNG) доступного узла. Доступный узел формирует новую повторно объединенную квоту и затем умножает все элементы в ней (за исключением коэффициентов) на соответствующее текущее значение на выходе PRNG и складывает все это вместе. Доступный узел отправляет данную сумму, наряду с коэффициентами, заменяющему узлу в качестве информации проверки, также именуемой как хэш-информация проверки. Затем заменяющий узел может вычислить то, какое значение суммы должно выдаваться всеми его квотами и коэффициентам. Заменяющий узел подтверждает целостность вновь принятой квоты, если вычисленное значение равно принятой сумме. Возможно, что доступные данные не содержат избыточности, и в результате значимость проверки целостности может быть ограничена. Однако, эта возможность очень отдаленна, особенно вскоре после исходного сохранения.
[0038] Эффективность описанного выше подхода по формированию заменяющих квот посредством повторного объединения квот с доступных узлов может быть продемонстрирована эмпирически. Одним способом определения того, какой объем данных возможно восстановить из набора квот после серий повторных объединений, является выполнение симуляции, представляющей каждую квоту случайным вектором. Затем над этими векторами могут быть выполнены серии операций, и может быть вычислен ранг матрицы, формируемой соответствующими векторами. Данный ранг указывает объемы восстановимых данных из векторов (или квот).
[0039] Теперь представляется анализ эффективности описанного выше подхода. Так как х одноранговых узлов требуется для восстановления, то наилучшей возможной производительности, основывающейся на теоретических информационных пределах, будут соответствовать k, или x*(x+1)/2, квот для этих одноранговых узлов. При этой схеме каждый из этих х одноранговых узлов имеет x квот, общим числом их x*x квот. Таким образом, соотношение между двумя параметрами составляет (x*(x+1)/2)/(x*x), что асимптотически приближается к 1/2 по мере роста x, так что x может быть взято произвольно большим при очень небольших дополнительных расходах пропускной способности. Так как большее x соответствует большей надежности, то x желательно выбирать из больших значений (например, чуть меньше общего количества узлов N). На практике ограничивающим фактором для x вероятнее являются расходы на вычисления, несмотря на то, что существуют некоторые другие эффекты второго порядка, которые могут стать заметными. Примерами являются влияния на затраты проводного протокола, затраты на централизованное индексирование данных, становящиеся значительными размеры коэффициентов или приближение x к общему количеству N узлов в системе в целом, что является тяжелым ограничением.
[0040] Посредством формирования заменяющих квот при помощи существующих узлов, как описано выше, могут сохраняться высокие уровни надежности, удерживая при этом низкое использование пропускной способности. Существует возможность просто ожидать до тех пор, пока не останется всего лишь k узлов хранения, и затем выполнить восстановление (и новое формирование квот для восстановления данных в узлах хранения). Данный подход имеет низкие характеристики надежности, так как дополнительный отказ узла хранения может привести к потере данных. Для данного подхода также требуется формирование исходного файла и новых квот (например, на блоке выгрузки). Другим подходом является выполнение полного восстановления и формирования квот (например, на блоке выгрузки) всякий раз, когда теряется узел хранения. Данный подход обладает лучшими характеристиками надежности, но может потребовать больших объемов пропускной способности.
[0041] Возвращаясь к фиг.2, квоты получают 208 от узлов хранения блоком 110 загрузки. Блок загрузки, заинтересованный в файле данных, может получить информацию от блока 108 слежения в отношении того, какие узлы хранения в настоящий момент имеют квоты файла. Затем блок загрузки может непосредственно получить квоты от указанных узлов 106 хранения. Блок загрузки может получить квоты от x или более доступных узлов. Блок загрузки затем воссоздает 210 исходный файл данных из полученных квот. Воссоздание выполняется используя коэффициенты, включенные вместе с каждой квотой наряду с информацией последовательности квот от блока слежения.
[0042] Загрузки в целом не могут быть сделаны надежными в смысле восстановления после отказа, так как сам блок загрузки является отдельной точкой отказа. Информация о загрузке может просматриваться в качестве рекомендательной, и блок слежения может только предоставить предполагаемому блоку загрузки информацию обо всех доступных узлах, обладающих полным набором квот, включая, возможно, и исходный блок выгрузки, а блоки загрузки определяют для себя, будет ли им сопутствовать успех или произойдет отказ (хотя отказ по любой причине, кроме перехода блока загрузки в автономный режим, должен быть редким).
[0043] В противоположность, когда новый узел делается доступным, то приемлемым для узла, выполняющего полное восстановление, является загрузка нескольких квот с одного узла. Предположим, что загружающий узел (например, блок 110 загрузки) уже принял квоту от выгружающего узла 106 хранения. Для того чтобы определить, будет ли полезна дополнительная повторно объединенная квота от выгружающего узла, выгружающий узел может отправить загружающему узлу коэффициенты дополнительной квоты. Загружающий узел может вычислить, является ли данная квота линейно независимой от той, что он уже имеет, используя коэффициенты, и если это так, то загружающий узел может запросить квоту у выгружающего узла. В одном варианте осуществления загружающему узлу не требуется запрашивать ту же квоту, но он может запросить вместо этой другую квоту, потому что, как правило, одна дополнительная квота будет полезна, если и только если полезны все, кроме миниатюрной части других квот. Загружающий узел также может запросить хэш-информацию проверки, используя точно такой же метод, как и тот, что используется новыми узлами для проверки целостности данных, как описано выше. В целом, хэш-информация проверки от узла полезна, если и только если полезны дополнительные квоты от данного узла могут быть.
[0044] В одном варианте осуществления описанные выше методы распределенного хранения применяются на ненадежных, широко распределенных устройствах хранения (возможно прикрепленных к компьютерам). В настоящее время существует много устройств хранения с очень большим объемом неиспользуемой емкости на неизмеренных подключениях к Интернет, которые могут использоваться для распределенного хранения. Эти устройства хранения (т.е. узлы 106 хранения) могут принадлежать и управляться различными предприятиями и индивидами. Устройства хранения могут иметь высокую частоту отказов, но отказы в значительной степени некоррелированные. Так как маловероятно, что одновременно откажет много узлов, то описанный выше подход вероятнее всего будет работать хорошо. В одном варианте осуществления, блок 108 слежения может позволить поставщикам устройств хранения делать свои хранилища доступными для пользователей, нуждающихся в хранении данных. Блок слежения может включать в себя web-сервер для поставщиков устройств хранения для регистрации их устройств хранения на блоке слежения так, что устройства могут начать использоваться в качестве исходных узлов хранения или заменяющих узлов для файлов данных пользователей хранилища. Блок слежения также может отслеживать использование устройств хранения и способствовать организации оплаты от пользователей хранилища поставщикам устройств хранения.
[0045] Ссылка в описании на «один вариант осуществления» или на «вариант осуществления» означает, что конкретный признак, структура или характеристика, описанные в связи с вариантами осуществления, включаются в, по меньшей мере, один вариант осуществления изобретения. Появления фраз “в одном варианте осуществления” или “предпочтительный вариант осуществления” в различных местах описания не обязательно все относятся к одному и тому же варианту осуществления.
[0046] Некоторые части вышеприведенного изложения представлены в виде способов и символических представлений операций над битами данных внутри компьютерной памяти. Эти описания и представления являются средствами, используемыми специалистами для наиболее эффективной передачи сущности их работы другим специалистам. Здесь и в целом, под способом понимается самосогласованная последовательность этапов (инструкций), приводящая к требуемому результату. Этапы - это то, что требует физических манипуляций над физическими величинами. Как правило, хотя не обязательно, эти величины принимают форму электрических, магнитных или оптических сигналов, приспособленных для сохранения, передачи, объединения, сравнения и иного манипулирования. Время от времени удобно, преимущественно по причинам общего использования, именовать эти сигналы как биты, значения, элементы, символы, знаки, понятия, числа или подобное. Кроме того, так же время от времени удобно именовать конкретные совокупности этапов, требующих физических манипуляций над физическими величинами, как модули или кодовые устройства, без потери общности.
[0047] Тем не менее, должно быть принято во внимание, что все эти и аналогичные определения должны быть связаны с соответствующими физическими величинами и являются просто удобными обозначениями, применяемыми к этим величинам. До тех пор, пока конкретно не указано обратное в качестве очевидного из нижеследующего рассмотрения, понимается, что на всем протяжении описания, рассмотрения, использующие понятия, такие как “обработка”, или “вычисление”, или “расчет”, или “определение”, или “отображение”, или “определение”, или подобные, относятся к действиям и процессам компьютерной системы или аналогичного электронного вычислительного устройства, которое манипулирует и преобразует данные, представленные в качестве физических (электронных) величин внутри устройств хранения компьютерной системы или регистрах или другом таком информационном хранилище, устройствах передачи и отображения.
[0048] Некоторые аспекты настоящего изобретения включают в себя этапы процесса и инструкции, описанные здесь в виде способа. Должно быть отмечено, что этапы процесса и инструкции по настоящему изобретению могут быть воплощены в программном обеспечении, встроенном программном обеспечении (firmware) или аппаратном обеспечении, и при воплощении в программном обеспечении могут быть загружены для размещения и функционирования на различных платформах, используемых многообразием операционных систем.
[0049] Настоящее изобретение также относится к устройству для выполнения представленных здесь операций. Данное устройство может быть специально разработанным для требуемых целей или оно может быть выполнено в виде компьютера общего назначения, выборочно активируемого или переконфигурируемого компьютерной программой, хранящейся на компьютере. Такая компьютерная программа может храниться на машиночитаемом носителе данных, таком как, но не в ограничительном смысле, диске любого типа, включая гибкие диски, оптические диски, CD-ROM, магнитооптические диски, постоянных запоминающих устройствах (ROM), запоминающих устройствах с произвольной выборкой (RAM), EPROM, EEPROM, магнитных и оптических картах, специализированных интегральных микросхемах (ASIC), или носителе любого типа, приемлемом для хранения электронных инструкций, и каждый соединен с шиной компьютерной системы. Кроме того, упоминаемые в описании компьютеры могут включать в себя один процессор или могут быть архитектурами, использующими исполнения с несколькими процессорами для увеличения вычислительных возможностей.
[0050] Представленные здесь способы и демонстрации, по сути, не относятся к какому-либо конкретному компьютеру или другому устройству. Также могут использоваться различные системы общего назначения с программами в соответствии с изложенными здесь идеями, или может оказаться удобным создать более специализированное устройство для выполнения требуемых этапов способа. Требуемая структура для разнообразия таких систем станет очевидна из описания ниже. В дополнение, настоящее изобретение не описывается с привязкой к какому-либо конкретному языку программирования. Должно быть принято во внимание, что для реализации идей настоящего изобретения в соответствии с тем, что здесь изложено, может использоваться многообразие языков программирования, и любое упоминание конкретных языков предоставлено для раскрытия реализуемости и наилучшего варианта осуществления настоящего изобретения.
[0051] Несмотря на то, что изобретение было конкретно показано и описано со ссылкой на предпочтительный вариант осуществления и несколько альтернативных вариантов осуществления, специалисту должно быть понятно, что, не отступая от сущности и объема изобретения, могут быть выполнены различные изменения по форме и в деталях.
[0052] В заключении должно быть отмечено, что язык, используемый в описании, был преимущественно выбран для удобочитаемости и в целях обучения, и он не мог быть выбран с целью очертить или ограничить объем изобретения. Соответственно, раскрытие данного изобретения предназначено проиллюстрировать, а не ограничить объем изобретения.
Claims (23)
1. Способ замены отказавшего узла, хранящего распределенные данные, содержащий этапы, на которых:
посредством первого узла хранения принимают первый набор квот, сгенерированный из файла данных, при этом каждая квота в первом наборе включает в себя линейную комбинацию частей файла данных наряду с набором коэффициентов, использованных для генерирования этой линейной комбинации;
посредством первого узла хранения принимают указание нового узла хранения, заменяющего отказавший узел, при этом отказавший узел включает в себя второй набор квот, сгенерированный из файла данных;
посредством первого узла хранения генерируют первую заменяющую квоту в качестве реакции на упомянутое указание, при этом первую заменяющую квоту генерируют путем:
умножения каждой квоты в первом наборе и набора коэффициентов на случайное масштабирующее значение и
объединения умноженного первого набора квот и умноженного набора коэффициентов; и
посредством первого узла хранения передают сгенерированную первую заменяющую квоту в новый узел хранения,
при этом первая заменяющая квота и по меньшей мере одна другая заменяющая квота формируют второй набор квот в новом узле хранения, причем эта другая заменяющая квота генерируется вторым узлом хранения.
посредством первого узла хранения принимают первый набор квот, сгенерированный из файла данных, при этом каждая квота в первом наборе включает в себя линейную комбинацию частей файла данных наряду с набором коэффициентов, использованных для генерирования этой линейной комбинации;
посредством первого узла хранения принимают указание нового узла хранения, заменяющего отказавший узел, при этом отказавший узел включает в себя второй набор квот, сгенерированный из файла данных;
посредством первого узла хранения генерируют первую заменяющую квоту в качестве реакции на упомянутое указание, при этом первую заменяющую квоту генерируют путем:
умножения каждой квоты в первом наборе и набора коэффициентов на случайное масштабирующее значение и
объединения умноженного первого набора квот и умноженного набора коэффициентов; и
посредством первого узла хранения передают сгенерированную первую заменяющую квоту в новый узел хранения,
при этом первая заменяющая квота и по меньшей мере одна другая заменяющая квота формируют второй набор квот в новом узле хранения, причем эта другая заменяющая квота генерируется вторым узлом хранения.
2. Способ по п.1, в котором общее количество заменяющих квот, сгенерированных для формирования второго набора квот в новом узле хранения, равно параметру надежности, при этом параметр надежности основывается на суммарном количестве узлов хранения, требуемом для того, чтобы файл данных оставался восстановимым.
3. Способ по п.1, дополнительно содержащий этап, на котором проверяют целостность сгенерированных заменяющих квот.
4. Способ по п.1, в котором квоты из первого набора квот генерируются с использованием кодирования со стиранием на основе частей файла данных.
5. Способ по п.1, в котором первая заменяющая квота и по меньшей мере одна другая заменяющая квота используются для воссоздания файла данных.
6. Способ по п.1, в котором первая заменяющая квота и по меньшей мере одна другая заменяющая квота используются для генерирования последующих заменяющих квот для последующего нового узла.
7. Способ по п.1, в котором упомянутое указание принимается от блока слежения, который отслеживает статус узлов хранения и отслеживает местоположения квот.
8. Способ по п.1, дополнительно содержащий этап, на котором отправляют хэш-информацию проверки в новый узел хранения для проверки первой заменяющей квоты.
9. Способ по п.1, в котором целостность первого заменяющего узла проверяют посредством использования новым узлом хранения хэш-информации проверки, предоставляемой дополнительным узлом хранения.
10. Компьютерная система для замены отказавшего узла, хранящего распределенные данные, содержащая:
компьютерный процессор и
невременный машиночитаемый носитель информации, на котором сохранены исполняемые инструкции компьютерной программы, исполняемые компьютерным процессором, причем инструкции компьютерной программы приспособлены для того, чтобы:
принимать первый набор квот, сгенерированный из файла данных, при этом каждая квота в первом наборе включает в себя линейную комбинацию частей файла данных наряду с набором коэффициентов, использованных для генерирования этой линейной комбинации;
принимать указание нового узла хранения, заменяющего отказавший узел, при этом отказавший узел включает в себя второй набор квот, сгенерированный из файла данных;
генерировать первую заменяющую квоту в ответ на это указание, при этом первая заменяющая квота генерируется путем:
умножения каждой квоты в первом наборе и набора коэффициентов на случайное масштабирующее значение и
объединения умноженного первого набора квот и умноженного набора коэффициентов; и
передавать сгенерированную первую заменяющую квоту в новый узел хранения,
при этом первая заменяющая квота и по меньшей мере одна другая заменяющая квота формируют второй набор квот в новом узле хранения, причем эта другая заменяющая квота генерируется вторым узлом хранения.
компьютерный процессор и
невременный машиночитаемый носитель информации, на котором сохранены исполняемые инструкции компьютерной программы, исполняемые компьютерным процессором, причем инструкции компьютерной программы приспособлены для того, чтобы:
принимать первый набор квот, сгенерированный из файла данных, при этом каждая квота в первом наборе включает в себя линейную комбинацию частей файла данных наряду с набором коэффициентов, использованных для генерирования этой линейной комбинации;
принимать указание нового узла хранения, заменяющего отказавший узел, при этом отказавший узел включает в себя второй набор квот, сгенерированный из файла данных;
генерировать первую заменяющую квоту в ответ на это указание, при этом первая заменяющая квота генерируется путем:
умножения каждой квоты в первом наборе и набора коэффициентов на случайное масштабирующее значение и
объединения умноженного первого набора квот и умноженного набора коэффициентов; и
передавать сгенерированную первую заменяющую квоту в новый узел хранения,
при этом первая заменяющая квота и по меньшей мере одна другая заменяющая квота формируют второй набор квот в новом узле хранения, причем эта другая заменяющая квота генерируется вторым узлом хранения.
11. Система по п.10, в которой общее количество заменяющих квот, генерируемых для формирования второго набора квот в новом узле хранения, равно параметру надежности, при этом параметр надежности основывается на суммарном количестве узлов хранения, требуемом для того, чтобы файл данных оставался восстановимым.
12. Система по п.10, в которой инструкции компьютерной программы дополнительно приспособлены для того, чтобы отправлять хэш-информацию проверки в новый узел хранения для проверки первой заменяющей квоты.
13. Система по п.10, в которой первый набор квот генерируется с использованием кодирования со стиранием на основе частей файла данных.
14. Система по п.10, в которой первая заменяющая квота и по меньшей мере одна другая заменяющая квота используются для воссоздания файла данных.
15. Система по п.10, в которой первая заменяющая квота и по меньшей мере одна другая заменяющая квота используются для генерирования последующих заменяющих квот для последующего нового узла.
16. Система по п.10, в которой упомянутое указание принимается от блока слежения, который отслеживает статус узлов хранения и отслеживает местоположения квот.
17. Машиночитаемый носитель данных, на котором записаны исполняемые инструкции компьютерной программы для замены отказавшего узла, хранящего распределенные данные, причем инструкции компьютерной программы приспособлены для:
приема посредством первого узла хранения первого набора квот, сгенерированного из файла данных, при этом каждая квота в первом наборе включает в себя линейную комбинацию частей файла данных наряду с набором коэффициентов, использованных для генерирования этой линейной комбинации;
приема посредством первого узла хранения указания нового узла хранения, заменяющего отказавший узел, при этом отказавший узел включает в себя второй набор квот, сгенерированный из файла данных;
генерирования посредством первого узла хранения первой заменяющей квоты в качестве реакции на упомянутое указание, при этом первая заменяющая квота генерируется путем:
умножения каждой квоты в первом наборе и набора коэффициентов на случайное масштабирующее значение и
объединения умноженного первого набора квот и умноженного набора коэффициентов; и
передачи посредством первого узла хранения сгенерированной первой заменяющей квоты в новый узел хранения,
при этом первая заменяющая квота и по меньшей мере одна другая заменяющая квота формируют второй набор квот в новом узле хранения, причем эта другая заменяющая квота генерируется вторым узлом хранения.
приема посредством первого узла хранения первого набора квот, сгенерированного из файла данных, при этом каждая квота в первом наборе включает в себя линейную комбинацию частей файла данных наряду с набором коэффициентов, использованных для генерирования этой линейной комбинации;
приема посредством первого узла хранения указания нового узла хранения, заменяющего отказавший узел, при этом отказавший узел включает в себя второй набор квот, сгенерированный из файла данных;
генерирования посредством первого узла хранения первой заменяющей квоты в качестве реакции на упомянутое указание, при этом первая заменяющая квота генерируется путем:
умножения каждой квоты в первом наборе и набора коэффициентов на случайное масштабирующее значение и
объединения умноженного первого набора квот и умноженного набора коэффициентов; и
передачи посредством первого узла хранения сгенерированной первой заменяющей квоты в новый узел хранения,
при этом первая заменяющая квота и по меньшей мере одна другая заменяющая квота формируют второй набор квот в новом узле хранения, причем эта другая заменяющая квота генерируется вторым узлом хранения.
18. Машиночитаемый носитель данных по п.17, при этом инструкции компьютерной программы дополнительно приспособлены для отправки хэш-информации проверки в новый узел хранения для проверки заменяющей квоты.
19. Машиночитаемый носитель данных по п.17, при этом сформированная заменяющая квота используется для воссоздания файла данных.
20. Машиночитаемый носитель данных по п.17, при этом общее количество заменяющих квот, сгенерированных для формирования второго набора квот в новом узле хранения, равно параметру надежности, причем параметр надежности основывается на суммарном количестве узлов хранения, требуемом для того, чтобы файл данных оставался восстановимым.
21. Машиночитаемый носитель данных по п.17, при этом квоты из первого набора квот генерируются с использованием кодирования со стиранием на основе частей файла данных.
22. Машиночитаемый носитель данных по п.17, при этом первая заменяющая квота и по меньшей мере одна другая заменяющая квота используются для генерирования последующих заменяющих квот для последующего нового узла.
23. Машиночитаемый носитель данных по п.17, при этом упомянутое указание принимается от блока слежения, который отслеживает статус узлов хранения и отслеживает местоположения квот.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14967609P | 2009-02-03 | 2009-02-03 | |
US61/149,676 | 2009-02-03 | ||
PCT/US2010/023075 WO2010091101A1 (en) | 2009-02-03 | 2010-02-03 | Distributed storage of recoverable data |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2011136622A RU2011136622A (ru) | 2013-03-10 |
RU2501072C2 true RU2501072C2 (ru) | 2013-12-10 |
Family
ID=42398690
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2011136622/08A RU2501072C2 (ru) | 2009-02-03 | 2010-02-03 | Распределенное хранение восстанавливаемых данных |
Country Status (8)
Country | Link |
---|---|
US (1) | US8522073B2 (ru) |
EP (1) | EP2394220B1 (ru) |
KR (1) | KR20110122169A (ru) |
BR (1) | BRPI1008072A2 (ru) |
CA (1) | CA2751358C (ru) |
ES (1) | ES2528245T3 (ru) |
RU (1) | RU2501072C2 (ru) |
WO (1) | WO2010091101A1 (ru) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2675785C2 (ru) * | 2017-06-08 | 2018-12-25 | Общество с ограниченной ответственностью "КВАНТУМ А РУС" | Способ уведомления абонента в сетях сотовой связи и устройство для его осуществления |
RU2680350C2 (ru) * | 2017-05-02 | 2019-02-19 | федеральное государственное казенное военное образовательное учреждение высшего образования "Краснодарское высшее военное училище имени генерала армии С.М. Штеменко" Министерства обороны Российской Федерации | Способ и система распределенного хранения восстанавливаемых данных с обеспечением целостности и конфиденциальности информации |
Families Citing this family (186)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9729829B2 (en) | 2006-12-05 | 2017-08-08 | Crackle, Inc. | Video sharing platform providing for posting content to other websites |
US8386841B1 (en) * | 2010-07-21 | 2013-02-26 | Symantec Corporation | Systems and methods for improving redundant storage fault tolerance |
US11614893B2 (en) | 2010-09-15 | 2023-03-28 | Pure Storage, Inc. | Optimizing storage device access based on latency |
US12008266B2 (en) | 2010-09-15 | 2024-06-11 | Pure Storage, Inc. | Efficient read by reconstruction |
EP2469413B1 (en) | 2010-12-27 | 2013-06-05 | Amplidata NV | A hierarchical, distributed object storage system |
WO2012089701A1 (en) | 2010-12-27 | 2012-07-05 | Amplidata Nv | A distributed object storage system comprising performance optimizations |
US8386840B2 (en) | 2010-12-27 | 2013-02-26 | Amplidata Nv | Distributed object storage system |
US8538029B2 (en) * | 2011-03-24 | 2013-09-17 | Hewlett-Packard Development Company, L.P. | Encryption key fragment distribution |
EP2702502A4 (en) | 2011-04-29 | 2015-06-03 | Tata Consultancy Services Ltd | ARCHIVING AND RECOVERY SYSTEM |
US9106943B2 (en) | 2011-05-04 | 2015-08-11 | Cisco Technology, Inc. | Sharing of subscriber-recorded digital video recorder content |
US8589640B2 (en) | 2011-10-14 | 2013-11-19 | Pure Storage, Inc. | Method for maintaining multiple fingerprint tables in a deduplicating storage system |
US20130185257A1 (en) * | 2012-01-12 | 2013-07-18 | Krishna P. Puttaswamy Naga | Cloud data resiliency system and method |
EP2660723A1 (en) * | 2012-05-03 | 2013-11-06 | Thomson Licensing | Method of data storing and maintenance in a distributed data storage system and corresponding device |
EP2672387B1 (en) * | 2012-06-04 | 2018-08-01 | Amplidata NV | A distributed object storage system |
US9086992B1 (en) | 2012-06-08 | 2015-07-21 | Digital Ordnance Storage, Inc. | System and method for interconnecting storage elements |
US8935221B1 (en) | 2012-07-25 | 2015-01-13 | Amazon Technologies, Inc. | Object loss reporting in a data storage system |
CN103688514B (zh) * | 2013-02-26 | 2017-07-11 | 北京大学深圳研究生院 | 一种最小存储再生码的编码和存储节点修复方法 |
CN103152434A (zh) * | 2013-03-27 | 2013-06-12 | 江苏辰云信息科技有限公司 | 一种分布式云系统中的领导节点更替方法 |
EP2863566B1 (en) | 2013-10-18 | 2020-09-02 | Université de Nantes | Method and apparatus for reconstructing a data block |
US8874835B1 (en) | 2014-01-16 | 2014-10-28 | Pure Storage, Inc. | Data placement based on data properties in a tiered storage device system |
US10291696B2 (en) * | 2014-04-28 | 2019-05-14 | Arizona Board Of Regents On Behalf Of Arizona State University | Peer-to-peer architecture for processing big data |
US11068363B1 (en) | 2014-06-04 | 2021-07-20 | Pure Storage, Inc. | Proactively rebuilding data in a storage cluster |
US9612952B2 (en) | 2014-06-04 | 2017-04-04 | Pure Storage, Inc. | Automatically reconfiguring a storage memory topology |
US11652884B2 (en) | 2014-06-04 | 2023-05-16 | Pure Storage, Inc. | Customized hash algorithms |
US9003144B1 (en) | 2014-06-04 | 2015-04-07 | Pure Storage, Inc. | Mechanism for persisting messages in a storage system |
US9367243B1 (en) | 2014-06-04 | 2016-06-14 | Pure Storage, Inc. | Scalable non-uniform storage sizes |
US10574754B1 (en) | 2014-06-04 | 2020-02-25 | Pure Storage, Inc. | Multi-chassis array with multi-level load balancing |
US9087012B1 (en) | 2014-06-04 | 2015-07-21 | Pure Storage, Inc. | Disaster recovery at high reliability in a storage cluster |
US9836234B2 (en) | 2014-06-04 | 2017-12-05 | Pure Storage, Inc. | Storage cluster |
AU2015269364B2 (en) * | 2014-06-04 | 2019-04-18 | Pure Storage, Inc. | Mechanism for persisting messages in a storage system |
US8850108B1 (en) | 2014-06-04 | 2014-09-30 | Pure Storage, Inc. | Storage cluster |
US9218244B1 (en) | 2014-06-04 | 2015-12-22 | Pure Storage, Inc. | Rebuilding data across storage nodes |
US11399063B2 (en) | 2014-06-04 | 2022-07-26 | Pure Storage, Inc. | Network authentication for a storage system |
US11960371B2 (en) | 2014-06-04 | 2024-04-16 | Pure Storage, Inc. | Message persistence in a zoned system |
US9213485B1 (en) * | 2014-06-04 | 2015-12-15 | Pure Storage, Inc. | Storage system architecture |
US9836245B2 (en) | 2014-07-02 | 2017-12-05 | Pure Storage, Inc. | Non-volatile RAM and flash memory in a non-volatile solid-state storage |
US9021297B1 (en) | 2014-07-02 | 2015-04-28 | Pure Storage, Inc. | Redundant, fault-tolerant, distributed remote procedure call cache in a storage system |
US11604598B2 (en) | 2014-07-02 | 2023-03-14 | Pure Storage, Inc. | Storage cluster with zoned drives |
US11886308B2 (en) | 2014-07-02 | 2024-01-30 | Pure Storage, Inc. | Dual class of service for unified file and object messaging |
US8868825B1 (en) * | 2014-07-02 | 2014-10-21 | Pure Storage, Inc. | Nonrepeating identifiers in an address space of a non-volatile solid-state storage |
US10114757B2 (en) | 2014-07-02 | 2018-10-30 | Pure Storage, Inc. | Nonrepeating identifiers in an address space of a non-volatile solid-state storage |
US10853311B1 (en) | 2014-07-03 | 2020-12-01 | Pure Storage, Inc. | Administration through files in a storage system |
US9811677B2 (en) | 2014-07-03 | 2017-11-07 | Pure Storage, Inc. | Secure data replication in a storage grid |
US8874836B1 (en) | 2014-07-03 | 2014-10-28 | Pure Storage, Inc. | Scheduling policy for queues in a non-volatile solid-state storage |
US9817750B2 (en) | 2014-07-03 | 2017-11-14 | Pure Storage, Inc. | Profile-dependent write placement of data into a non-volatile solid-state storage |
US9747229B1 (en) | 2014-07-03 | 2017-08-29 | Pure Storage, Inc. | Self-describing data format for DMA in a non-volatile solid-state storage |
US9766972B2 (en) | 2014-08-07 | 2017-09-19 | Pure Storage, Inc. | Masking defective bits in a storage array |
US9483346B2 (en) | 2014-08-07 | 2016-11-01 | Pure Storage, Inc. | Data rebuild on feedback from a queue in a non-volatile solid-state storage |
US9558069B2 (en) | 2014-08-07 | 2017-01-31 | Pure Storage, Inc. | Failure mapping in a storage array |
US9495255B2 (en) | 2014-08-07 | 2016-11-15 | Pure Storage, Inc. | Error recovery in a storage cluster |
US9082512B1 (en) | 2014-08-07 | 2015-07-14 | Pure Storage, Inc. | Die-level monitoring in a storage cluster |
US10983859B2 (en) | 2014-08-07 | 2021-04-20 | Pure Storage, Inc. | Adjustable error correction based on memory health in a storage unit |
US10079711B1 (en) | 2014-08-20 | 2018-09-18 | Pure Storage, Inc. | Virtual file server with preserved MAC address |
US9727432B1 (en) | 2014-10-09 | 2017-08-08 | Seagate Technology Llc | Accelerated testing using simulated failures in a multi-device storage system |
WO2016080569A1 (ko) * | 2014-11-19 | 2016-05-26 | 서울대학교산학협력단 | 일정 수 이상의 파일 조각으로 원본 파일을 복원하는 파일 관리 장치 및 그것의 파일 관리 방법 |
US10042848B1 (en) | 2014-12-19 | 2018-08-07 | Amazon Technologies, Inc. | Sparse index-based storage, retrieval, and management of stored data |
US9959274B2 (en) * | 2014-12-19 | 2018-05-01 | Amazon Technologies, Inc. | Volume-level redundancy coding techniques for sequential transfer optimized storage devices |
US9948615B1 (en) | 2015-03-16 | 2018-04-17 | Pure Storage, Inc. | Increased storage unit encryption based on loss of trust |
US11294893B2 (en) | 2015-03-20 | 2022-04-05 | Pure Storage, Inc. | Aggregation of queries |
US9940234B2 (en) | 2015-03-26 | 2018-04-10 | Pure Storage, Inc. | Aggressive data deduplication using lazy garbage collection |
US10082985B2 (en) | 2015-03-27 | 2018-09-25 | Pure Storage, Inc. | Data striping across storage nodes that are assigned to multiple logical arrays |
US10178169B2 (en) | 2015-04-09 | 2019-01-08 | Pure Storage, Inc. | Point to point based backend communication layer for storage processing |
US9672125B2 (en) | 2015-04-10 | 2017-06-06 | Pure Storage, Inc. | Ability to partition an array into two or more logical arrays with independently running software |
US10140149B1 (en) | 2015-05-19 | 2018-11-27 | Pure Storage, Inc. | Transactional commits with hardware assists in remote memory |
US9817576B2 (en) | 2015-05-27 | 2017-11-14 | Pure Storage, Inc. | Parallel update to NVRAM |
US10846275B2 (en) | 2015-06-26 | 2020-11-24 | Pure Storage, Inc. | Key management in a storage device |
US10983732B2 (en) | 2015-07-13 | 2021-04-20 | Pure Storage, Inc. | Method and system for accessing a file |
US11232079B2 (en) | 2015-07-16 | 2022-01-25 | Pure Storage, Inc. | Efficient distribution of large directories |
US10108355B2 (en) | 2015-09-01 | 2018-10-23 | Pure Storage, Inc. | Erase block state detection |
US11269884B2 (en) | 2015-09-04 | 2022-03-08 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
US11341136B2 (en) | 2015-09-04 | 2022-05-24 | Pure Storage, Inc. | Dynamically resizable structures for approximate membership queries |
US9768953B2 (en) | 2015-09-30 | 2017-09-19 | Pure Storage, Inc. | Resharing of a split secret |
US10762069B2 (en) | 2015-09-30 | 2020-09-01 | Pure Storage, Inc. | Mechanism for a system where data and metadata are located closely together |
US10853266B2 (en) | 2015-09-30 | 2020-12-01 | Pure Storage, Inc. | Hardware assisted data lookup methods |
US9843453B2 (en) | 2015-10-23 | 2017-12-12 | Pure Storage, Inc. | Authorizing I/O commands with I/O tokens |
US10007457B2 (en) | 2015-12-22 | 2018-06-26 | Pure Storage, Inc. | Distributed transactions with token-associated execution |
US10261690B1 (en) | 2016-05-03 | 2019-04-16 | Pure Storage, Inc. | Systems and methods for operating a storage system |
US11231858B2 (en) | 2016-05-19 | 2022-01-25 | Pure Storage, Inc. | Dynamically configuring a storage system to facilitate independent scaling of resources |
US10691567B2 (en) | 2016-06-03 | 2020-06-23 | Pure Storage, Inc. | Dynamically forming a failure domain in a storage system that includes a plurality of blades |
US11861188B2 (en) | 2016-07-19 | 2024-01-02 | Pure Storage, Inc. | System having modular accelerators |
US11706895B2 (en) | 2016-07-19 | 2023-07-18 | Pure Storage, Inc. | Independent scaling of compute resources and storage resources in a storage system |
US10768819B2 (en) | 2016-07-22 | 2020-09-08 | Pure Storage, Inc. | Hardware support for non-disruptive upgrades |
US11449232B1 (en) | 2016-07-22 | 2022-09-20 | Pure Storage, Inc. | Optimal scheduling of flash operations |
US9672905B1 (en) | 2016-07-22 | 2017-06-06 | Pure Storage, Inc. | Optimize data protection layouts based on distributed flash wear leveling |
US10216420B1 (en) | 2016-07-24 | 2019-02-26 | Pure Storage, Inc. | Calibration of flash channels in SSD |
US11080155B2 (en) | 2016-07-24 | 2021-08-03 | Pure Storage, Inc. | Identifying error types among flash memory |
US11604690B2 (en) | 2016-07-24 | 2023-03-14 | Pure Storage, Inc. | Online failure span determination |
US10366004B2 (en) | 2016-07-26 | 2019-07-30 | Pure Storage, Inc. | Storage system with elective garbage collection to reduce flash contention |
US11886334B2 (en) | 2016-07-26 | 2024-01-30 | Pure Storage, Inc. | Optimizing spool and memory space management |
US10203903B2 (en) | 2016-07-26 | 2019-02-12 | Pure Storage, Inc. | Geometry based, space aware shelf/writegroup evacuation |
US11797212B2 (en) | 2016-07-26 | 2023-10-24 | Pure Storage, Inc. | Data migration for zoned drives |
US11734169B2 (en) | 2016-07-26 | 2023-08-22 | Pure Storage, Inc. | Optimizing spool and memory space management |
US11422719B2 (en) | 2016-09-15 | 2022-08-23 | Pure Storage, Inc. | Distributed file deletion and truncation |
US12039165B2 (en) | 2016-10-04 | 2024-07-16 | Pure Storage, Inc. | Utilizing allocation shares to improve parallelism in a zoned drive storage system |
US10756816B1 (en) | 2016-10-04 | 2020-08-25 | Pure Storage, Inc. | Optimized fibre channel and non-volatile memory express access |
US9747039B1 (en) | 2016-10-04 | 2017-08-29 | Pure Storage, Inc. | Reservations over multiple paths on NVMe over fabrics |
US10545861B2 (en) | 2016-10-04 | 2020-01-28 | Pure Storage, Inc. | Distributed integrated high-speed solid-state non-volatile random-access memory |
US10481798B2 (en) | 2016-10-28 | 2019-11-19 | Pure Storage, Inc. | Efficient flash management for multiple controllers |
US10491378B2 (en) | 2016-11-16 | 2019-11-26 | StreamSpace, LLC | Decentralized nodal network for providing security of files in distributed filesystems |
US11550481B2 (en) | 2016-12-19 | 2023-01-10 | Pure Storage, Inc. | Efficiently writing data in a zoned drive storage system |
US11307998B2 (en) | 2017-01-09 | 2022-04-19 | Pure Storage, Inc. | Storage efficiency of encrypted host system data |
US9747158B1 (en) | 2017-01-13 | 2017-08-29 | Pure Storage, Inc. | Intelligent refresh of 3D NAND |
US11955187B2 (en) | 2017-01-13 | 2024-04-09 | Pure Storage, Inc. | Refresh of differing capacity NAND |
US10255134B2 (en) | 2017-01-20 | 2019-04-09 | Samsung Electronics Co., Ltd. | Control plane method and apparatus for providing erasure code protection across multiple storage devices |
US10979223B2 (en) | 2017-01-31 | 2021-04-13 | Pure Storage, Inc. | Separate encryption for a solid-state drive |
US10528488B1 (en) | 2017-03-30 | 2020-01-07 | Pure Storage, Inc. | Efficient name coding |
US11016667B1 (en) | 2017-04-05 | 2021-05-25 | Pure Storage, Inc. | Efficient mapping for LUNs in storage memory with holes in address space |
US10141050B1 (en) | 2017-04-27 | 2018-11-27 | Pure Storage, Inc. | Page writes for triple level cell flash memory |
US10516645B1 (en) | 2017-04-27 | 2019-12-24 | Pure Storage, Inc. | Address resolution broadcasting in a networked device |
US10944671B2 (en) | 2017-04-27 | 2021-03-09 | Pure Storage, Inc. | Efficient data forwarding in a networked device |
US11467913B1 (en) | 2017-06-07 | 2022-10-11 | Pure Storage, Inc. | Snapshots with crash consistency in a storage system |
US11782625B2 (en) | 2017-06-11 | 2023-10-10 | Pure Storage, Inc. | Heterogeneity supportive resiliency groups |
US11138103B1 (en) | 2017-06-11 | 2021-10-05 | Pure Storage, Inc. | Resiliency groups |
US11947814B2 (en) | 2017-06-11 | 2024-04-02 | Pure Storage, Inc. | Optimizing resiliency group formation stability |
US10425473B1 (en) | 2017-07-03 | 2019-09-24 | Pure Storage, Inc. | Stateful connection reset in a storage cluster with a stateless load balancer |
US10402266B1 (en) | 2017-07-31 | 2019-09-03 | Pure Storage, Inc. | Redundant array of independent disks in a direct-mapped flash storage system |
US10831935B2 (en) | 2017-08-31 | 2020-11-10 | Pure Storage, Inc. | Encryption management with host-side data reduction |
US10210926B1 (en) | 2017-09-15 | 2019-02-19 | Pure Storage, Inc. | Tracking of optimum read voltage thresholds in nand flash devices |
US10877827B2 (en) | 2017-09-15 | 2020-12-29 | Pure Storage, Inc. | Read voltage optimization |
US10496330B1 (en) | 2017-10-31 | 2019-12-03 | Pure Storage, Inc. | Using flash storage devices with different sized erase blocks |
US10515701B1 (en) | 2017-10-31 | 2019-12-24 | Pure Storage, Inc. | Overlapping raid groups |
US12067274B2 (en) | 2018-09-06 | 2024-08-20 | Pure Storage, Inc. | Writing segments and erase blocks based on ordering |
US10545687B1 (en) | 2017-10-31 | 2020-01-28 | Pure Storage, Inc. | Data rebuild when changing erase block sizes during drive replacement |
US10884919B2 (en) | 2017-10-31 | 2021-01-05 | Pure Storage, Inc. | Memory management in a storage system |
US11520514B2 (en) | 2018-09-06 | 2022-12-06 | Pure Storage, Inc. | Optimized relocation of data based on data characteristics |
US12032848B2 (en) | 2021-06-21 | 2024-07-09 | Pure Storage, Inc. | Intelligent block allocation in a heterogeneous storage system |
US11354058B2 (en) | 2018-09-06 | 2022-06-07 | Pure Storage, Inc. | Local relocation of data stored at a storage device of a storage system |
US11024390B1 (en) | 2017-10-31 | 2021-06-01 | Pure Storage, Inc. | Overlapping RAID groups |
US10637508B2 (en) | 2017-11-03 | 2020-04-28 | Board Of Trustees Of Michigan State University | Optimal construction of regenerating code through rate-matching |
US10860475B1 (en) | 2017-11-17 | 2020-12-08 | Pure Storage, Inc. | Hybrid flash translation layer |
US10990566B1 (en) | 2017-11-20 | 2021-04-27 | Pure Storage, Inc. | Persistent file locks in a storage system |
US10929053B2 (en) | 2017-12-08 | 2021-02-23 | Pure Storage, Inc. | Safe destructive actions on drives |
US10719265B1 (en) | 2017-12-08 | 2020-07-21 | Pure Storage, Inc. | Centralized, quorum-aware handling of device reservation requests in a storage system |
US10929031B2 (en) | 2017-12-21 | 2021-02-23 | Pure Storage, Inc. | Maximizing data reduction in a partially encrypted volume |
US10733053B1 (en) | 2018-01-31 | 2020-08-04 | Pure Storage, Inc. | Disaster recovery for high-bandwidth distributed archives |
US10467527B1 (en) | 2018-01-31 | 2019-11-05 | Pure Storage, Inc. | Method and apparatus for artificial intelligence acceleration |
US10976948B1 (en) | 2018-01-31 | 2021-04-13 | Pure Storage, Inc. | Cluster expansion mechanism |
US11036596B1 (en) | 2018-02-18 | 2021-06-15 | Pure Storage, Inc. | System for delaying acknowledgements on open NAND locations until durability has been confirmed |
US11494109B1 (en) | 2018-02-22 | 2022-11-08 | Pure Storage, Inc. | Erase block trimming for heterogenous flash memory storage devices |
US11995336B2 (en) | 2018-04-25 | 2024-05-28 | Pure Storage, Inc. | Bucket views |
US12001688B2 (en) | 2019-04-29 | 2024-06-04 | Pure Storage, Inc. | Utilizing data views to optimize secure data access in a storage system |
US10853146B1 (en) | 2018-04-27 | 2020-12-01 | Pure Storage, Inc. | Efficient data forwarding in a networked device |
US11385792B2 (en) | 2018-04-27 | 2022-07-12 | Pure Storage, Inc. | High availability controller pair transitioning |
US10931450B1 (en) | 2018-04-27 | 2021-02-23 | Pure Storage, Inc. | Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers |
US12079494B2 (en) | 2018-04-27 | 2024-09-03 | Pure Storage, Inc. | Optimizing storage system upgrades to preserve resources |
US11436023B2 (en) | 2018-05-31 | 2022-09-06 | Pure Storage, Inc. | Mechanism for updating host file system and flash translation layer based on underlying NAND technology |
US10942807B2 (en) | 2018-06-12 | 2021-03-09 | Weka.IO Ltd. | Storage system spanning multiple failure domains |
US11438279B2 (en) | 2018-07-23 | 2022-09-06 | Pure Storage, Inc. | Non-disruptive conversion of a clustered service from single-chassis to multi-chassis |
US11868309B2 (en) | 2018-09-06 | 2024-01-09 | Pure Storage, Inc. | Queue management for data relocation |
US11500570B2 (en) | 2018-09-06 | 2022-11-15 | Pure Storage, Inc. | Efficient relocation of data utilizing different programming modes |
US10936406B2 (en) * | 2018-10-09 | 2021-03-02 | EMC IP Holding Company LLC | Multi cloud transactional storage for availability and security |
US10454498B1 (en) | 2018-10-18 | 2019-10-22 | Pure Storage, Inc. | Fully pipelined hardware engine design for fast and efficient inline lossless data compression |
US10976947B2 (en) | 2018-10-26 | 2021-04-13 | Pure Storage, Inc. | Dynamically selecting segment heights in a heterogeneous RAID group |
US11334254B2 (en) | 2019-03-29 | 2022-05-17 | Pure Storage, Inc. | Reliability based flash page sizing |
US11775189B2 (en) | 2019-04-03 | 2023-10-03 | Pure Storage, Inc. | Segment level heterogeneity |
US12087382B2 (en) | 2019-04-11 | 2024-09-10 | Pure Storage, Inc. | Adaptive threshold for bad flash memory blocks |
US11099986B2 (en) | 2019-04-12 | 2021-08-24 | Pure Storage, Inc. | Efficient transfer of memory contents |
US11487665B2 (en) | 2019-06-05 | 2022-11-01 | Pure Storage, Inc. | Tiered caching of data in a storage system |
US11714572B2 (en) | 2019-06-19 | 2023-08-01 | Pure Storage, Inc. | Optimized data resiliency in a modular storage system |
US11281394B2 (en) | 2019-06-24 | 2022-03-22 | Pure Storage, Inc. | Replication across partitioning schemes in a distributed storage system |
US11893126B2 (en) | 2019-10-14 | 2024-02-06 | Pure Storage, Inc. | Data deletion for a multi-tenant environment |
US11416144B2 (en) | 2019-12-12 | 2022-08-16 | Pure Storage, Inc. | Dynamic use of segment or zone power loss protection in a flash device |
US11847331B2 (en) | 2019-12-12 | 2023-12-19 | Pure Storage, Inc. | Budgeting open blocks of a storage unit based on power loss prevention |
US12001684B2 (en) | 2019-12-12 | 2024-06-04 | Pure Storage, Inc. | Optimizing dynamic power loss protection adjustment in a storage system |
US11704192B2 (en) | 2019-12-12 | 2023-07-18 | Pure Storage, Inc. | Budgeting open blocks based on power loss protection |
US11188432B2 (en) | 2020-02-28 | 2021-11-30 | Pure Storage, Inc. | Data resiliency by partially deallocating data blocks of a storage device |
US11507297B2 (en) | 2020-04-15 | 2022-11-22 | Pure Storage, Inc. | Efficient management of optimal read levels for flash storage systems |
US11256587B2 (en) | 2020-04-17 | 2022-02-22 | Pure Storage, Inc. | Intelligent access to a storage device |
US11474986B2 (en) | 2020-04-24 | 2022-10-18 | Pure Storage, Inc. | Utilizing machine learning to streamline telemetry processing of storage media |
US11416338B2 (en) | 2020-04-24 | 2022-08-16 | Pure Storage, Inc. | Resiliency scheme to enhance storage performance |
US12056365B2 (en) | 2020-04-24 | 2024-08-06 | Pure Storage, Inc. | Resiliency for a storage system |
US11768763B2 (en) | 2020-07-08 | 2023-09-26 | Pure Storage, Inc. | Flash secure erase |
US11513974B2 (en) | 2020-09-08 | 2022-11-29 | Pure Storage, Inc. | Using nonce to control erasure of data blocks of a multi-controller storage system |
US11681448B2 (en) | 2020-09-08 | 2023-06-20 | Pure Storage, Inc. | Multiple device IDs in a multi-fabric module storage system |
US11216441B1 (en) | 2020-11-25 | 2022-01-04 | Coupang Corp. | Systems and methods for managing a highly available and scalable distributed database in a cloud computing environment |
US11487455B2 (en) | 2020-12-17 | 2022-11-01 | Pure Storage, Inc. | Dynamic block allocation to optimize storage system performance |
US11614880B2 (en) | 2020-12-31 | 2023-03-28 | Pure Storage, Inc. | Storage system with selectable write paths |
US12093545B2 (en) | 2020-12-31 | 2024-09-17 | Pure Storage, Inc. | Storage system with selectable write modes |
US12067282B2 (en) | 2020-12-31 | 2024-08-20 | Pure Storage, Inc. | Write path selection |
US11847324B2 (en) | 2020-12-31 | 2023-12-19 | Pure Storage, Inc. | Optimizing resiliency groups for data regions of a storage system |
US12061814B2 (en) | 2021-01-25 | 2024-08-13 | Pure Storage, Inc. | Using data similarity to select segments for garbage collection |
US11630593B2 (en) | 2021-03-12 | 2023-04-18 | Pure Storage, Inc. | Inline flash memory qualification in a storage system |
US12099742B2 (en) | 2021-03-15 | 2024-09-24 | Pure Storage, Inc. | Utilizing programming page size granularity to optimize data segment storage in a storage system |
US11507597B2 (en) | 2021-03-31 | 2022-11-22 | Pure Storage, Inc. | Data replication to meet a recovery point objective |
US11832410B2 (en) | 2021-09-14 | 2023-11-28 | Pure Storage, Inc. | Mechanical energy absorbing bracket apparatus |
US11994723B2 (en) | 2021-12-30 | 2024-05-28 | Pure Storage, Inc. | Ribbon cable alignment apparatus |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1599013A2 (en) * | 2004-05-14 | 2005-11-23 | Microsoft Corporation | Distributed hosting of web content using partial replication |
RU2006125251A (ru) * | 2006-07-13 | 2008-01-27 | Институт систем обработки изображений Российской академии наук (ИСОИ РАН) (RU) | Устройство распределенного хранения изображений с регулируемой избыточностью |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6970939B2 (en) * | 2000-10-26 | 2005-11-29 | Intel Corporation | Method and apparatus for large payload distribution in a network |
US7146524B2 (en) * | 2001-08-03 | 2006-12-05 | Isilon Systems, Inc. | Systems and methods for providing a distributed file system incorporating a virtual hot spare |
US7159150B2 (en) * | 2002-12-31 | 2007-01-02 | International Business Machines Corporation | Distributed storage system capable of restoring data in case of a storage failure |
US7266716B2 (en) * | 2003-10-23 | 2007-09-04 | Hewlett-Packard Development Company, L.P. | Method and recovery of data using erasure coded data from stripe blocks |
JP2007511820A (ja) * | 2003-10-27 | 2007-05-10 | アーカイヴァス インコーポレイテッド | 独立ノード冗長アレイに対するポリシーに基づく管理 |
US7302603B2 (en) * | 2003-11-20 | 2007-11-27 | International Business Machines Corporation | Host-initiated data reconstruction for improved RAID read operations |
US7201533B2 (en) * | 2004-02-18 | 2007-04-10 | Grate Sewer Lock Co., Llc | Sewer grate locking mechanism and method of installing same |
US7240236B2 (en) | 2004-03-23 | 2007-07-03 | Archivas, Inc. | Fixed content distributed data storage using permutation ring encoding |
US7734643B1 (en) * | 2004-06-30 | 2010-06-08 | Oracle America, Inc. | Method for distributed storage of data |
US7529198B2 (en) * | 2005-04-07 | 2009-05-05 | Microsoft Corporation | Scalable overlay network |
US7546427B2 (en) | 2005-09-30 | 2009-06-09 | Cleversafe, Inc. | System for rebuilding dispersed data |
JP4566874B2 (ja) * | 2005-10-04 | 2010-10-20 | 株式会社日立製作所 | Ipネットワークにおけるストレージアクセス管理機能及びシステム |
US7778960B1 (en) * | 2005-10-20 | 2010-08-17 | American Megatrends, Inc. | Background movement of data between nodes in a storage cluster |
US7596673B2 (en) * | 2005-12-08 | 2009-09-29 | Sony Corporation | Failure tolerant data storage |
US20070177739A1 (en) * | 2006-01-27 | 2007-08-02 | Nec Laboratories America, Inc. | Method and Apparatus for Distributed Data Replication |
US7613946B2 (en) * | 2006-09-14 | 2009-11-03 | International Business Machines Corporation | Apparatus, system, and method for recovering a multivolume data set |
US7992037B2 (en) * | 2008-09-11 | 2011-08-02 | Nec Laboratories America, Inc. | Scalable secondary storage systems and methods |
US8627184B2 (en) * | 2009-03-31 | 2014-01-07 | Qualcomm Incorporated | Systems and methods for protecting a multi-part broadcast control message |
-
2010
- 2010-02-03 EP EP10739071.8A patent/EP2394220B1/en not_active Not-in-force
- 2010-02-03 ES ES10739071.8T patent/ES2528245T3/es active Active
- 2010-02-03 KR KR1020117020552A patent/KR20110122169A/ko not_active Application Discontinuation
- 2010-02-03 CA CA2751358A patent/CA2751358C/en not_active Expired - Fee Related
- 2010-02-03 WO PCT/US2010/023075 patent/WO2010091101A1/en active Application Filing
- 2010-02-03 RU RU2011136622/08A patent/RU2501072C2/ru not_active IP Right Cessation
- 2010-02-03 US US12/699,670 patent/US8522073B2/en not_active Expired - Fee Related
- 2010-02-03 BR BRPI1008072A patent/BRPI1008072A2/pt not_active Application Discontinuation
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1599013A2 (en) * | 2004-05-14 | 2005-11-23 | Microsoft Corporation | Distributed hosting of web content using partial replication |
RU2006125251A (ru) * | 2006-07-13 | 2008-01-27 | Институт систем обработки изображений Российской академии наук (ИСОИ РАН) (RU) | Устройство распределенного хранения изображений с регулируемой избыточностью |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2680350C2 (ru) * | 2017-05-02 | 2019-02-19 | федеральное государственное казенное военное образовательное учреждение высшего образования "Краснодарское высшее военное училище имени генерала армии С.М. Штеменко" Министерства обороны Российской Федерации | Способ и система распределенного хранения восстанавливаемых данных с обеспечением целостности и конфиденциальности информации |
RU2675785C2 (ru) * | 2017-06-08 | 2018-12-25 | Общество с ограниченной ответственностью "КВАНТУМ А РУС" | Способ уведомления абонента в сетях сотовой связи и устройство для его осуществления |
Also Published As
Publication number | Publication date |
---|---|
EP2394220A1 (en) | 2011-12-14 |
ES2528245T3 (es) | 2015-02-05 |
CA2751358C (en) | 2016-06-07 |
RU2011136622A (ru) | 2013-03-10 |
EP2394220A4 (en) | 2013-02-20 |
CA2751358A1 (en) | 2010-08-12 |
BRPI1008072A2 (pt) | 2016-03-15 |
US20100199123A1 (en) | 2010-08-05 |
EP2394220B1 (en) | 2014-10-22 |
US8522073B2 (en) | 2013-08-27 |
WO2010091101A1 (en) | 2010-08-12 |
KR20110122169A (ko) | 2011-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2501072C2 (ru) | Распределенное хранение восстанавливаемых данных | |
CN110750382B (zh) | 用于提高数据修复性能的最小存储再生码编码方法及系统 | |
US20180217898A1 (en) | System and method for supporting integrity of data storage with erasure coding | |
US10042566B2 (en) | Intelligent read strategy within a dispersed storage network (DSN) | |
US10652350B2 (en) | Caching for unique combination reads in a dispersed storage network | |
US8954793B2 (en) | Method and a storage server for data redundancy | |
US10469406B2 (en) | Partial task execution in a dispersed storage network | |
US9552254B1 (en) | Verification of erasure encoded fragments | |
US10958731B2 (en) | Indicating multiple encoding schemes in a dispersed storage network | |
US10956091B2 (en) | Expanding a dispersed storage network (DSN) | |
US10318382B2 (en) | Determining missing encoded data slices | |
US20170004043A1 (en) | Method and system for processing data access requests during data transfers | |
US10506045B2 (en) | Memory access using deterministic function and secure seed | |
US10057351B2 (en) | Modifying information dispersal algorithm configurations in a dispersed storage network | |
US10594793B2 (en) | Read-prepare requests to multiple memories | |
CN117667834B (zh) | 存算解耦系统、数据处理方法及存储介质 | |
US10585715B2 (en) | Partial task allocation in a dispersed storage network | |
US20240045777A1 (en) | Processing of Data Access Requests in a Storage Network | |
KR101270307B1 (ko) | 인터넷 패리티에 기반하여 데이터를 복구하는 방법, 장치 및 시스템 | |
US20240283466A1 (en) | System and method for distribution storage of blockchain transaction data based on erasure code | |
KR20240056400A (ko) | 에러 정정 코드 기반 블록체인 데이터 저장 방법 및 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | The patent is invalid due to non-payment of fees |
Effective date: 20160204 |