Задача восстановления утерянных дисков в дисковом массиве

advertisement
Задача восстановления утерянных
дисков в массиве с использованием
арифметики конечных колец
Андрей Федоров
Постановка задачи
Задача восстановления утерянных дисков в дисковом массиве является частным случаем задачи
помехозащищенного кодирования, и для ее решения может быть использован (и используется)
богатый арсенал компьютерной алгебры. В то же время, дисковые массивы обладают
особенностью, позволяющей выделить их в отдельный класс для исследования
1. Информация в дисковых массивах утрачивается и восстанавливается не отдельными
битами, а целыми дисками, т.е. большими пакетами, которые могут иметь терабайтные
размеры
2. Количество дисков в массиве измеряется единицами и десятками
То есть количество защищаемых пакетов в последовательности значительно меньше разрядности
одного пакета.
Практически пакеты настолько велики, что никогда не участвуют в операциях чтения и записи
целиком. Их разбивают на блоки одинакового размера и для целей помехозащищенного
кодирования объединяют блоки с одинаковыми номерами из разных пакетов в страйпы (stripes)
(Рисунок 1).
D0
D0
…
D0
D1
D1
…
D1
D2
D2
…
D2
DN-1
DN-1
…
DN-1
Stripe 0
Stripe 1
Stripe k-1
Рисунок 1. Формирование страйпов
В дальнейшем мы будем производить вычисления в рамках одного страйпа, подразумевая, что
вычисления во всех страйпах производятся одинаково.
Размер страйпа, в свою очередь, тоже является достаточно большим по сравнению с машинным
словом, обычно, десятки или сотни килобайт. На практике его размер подбирается из
соображений максимальной производительности массива с учетом кэширования. Поэтому
вычисления в рамках страйпа разбиваются на последовательность вычислений с отдельными
словами.
Изначально наша задача состоит в том, чтобы построить такой дисковый массив, в котором выход
из строя одного или более дисков не приводил бы к потере данных.
Пусть имеется 𝑁 дисков данных
𝐷0 , 𝐷1 , 𝐷2 , … , 𝐷𝑁−1
При каждой операции записи будем вычислять значение величин 𝑃, 𝑄, … , 𝑅 именуемых
синдромами.
𝑃 = 𝑝0 𝐷0 + 𝑝1 𝐷1 + 𝑝2 𝐷2 + ⋯ + 𝑝𝑁−1 𝐷𝑁−1
{𝑄 = 𝑞0 𝐷0 + 𝑞1 𝐷1 + 𝑞…2 𝐷2 + ⋯ + 𝑞𝑁−1 𝐷𝑁−1 (1)
𝑅 = 𝑟0 𝐷0 + 𝑟1 𝐷1 + 𝑟2 𝐷2 + ⋯ + 𝑟𝑁−1 𝐷𝑁−1
Тогда в случае утраты дисков с разными номерами 𝑥, 𝑦, … , 𝑧 можем составить систему линейных
уравнений
𝑁−1
𝑝𝑥 𝐷𝑥 + 𝑝𝑦 𝐷𝑦 + ⋯ +𝑝𝑧 𝐷𝑧 = 𝑃 − ∑ 𝑝𝑖 𝐷𝑖
𝑖=0
𝑁−1
𝑞𝑥 𝐷𝑥 + 𝑞𝑦 𝐷𝑦 + ⋯ +𝑞𝑧 𝐷𝑧 = 𝑄 − ∑ 𝑞𝑖 𝐷𝑖
…
{
𝑖 ≠ 𝑥, 𝑦, 𝑧
(2)
𝑖=0
𝑁−1
𝑟𝑥 𝐷𝑥 + 𝑟𝑦 𝐷𝑦 + ⋯ + 𝑟𝑧 𝐷𝑧 = 𝑅 − ∑ 𝑟𝑖 𝐷𝑖
𝑖=0
Если система (2) однозначно разрешима относительно 𝐷𝑥 , 𝐷𝑦 , … , 𝐷𝑧 , мы можем восстанавливать
утраченные диски в количестве, равном количеству предвычисленных синдромов.
Прикладная проблематика построения отказоустойчивых массивов связана со скоростью
вычислений и построена вокруг следующих задач
1. При каждом обновлении информации необходимо быстро пересчитывать синдромы (1)
2. При каждой операции чтения в случае, если утрачены диски в количестве, равном
количеству синдромов, необходимо быстро решать систему уравнений (2)
Для решения первой задачи часто в качестве коэффициентов в уравнениях (1) выбирают
последовательные степени какого либо элемента, причем одним из таких элементов всегда
выступает единица
𝑝𝑖 = 1
𝑁−𝑖
0≤𝑖 ≤𝑁−1
{𝑞𝑖 =…𝑞
𝑟𝑖 = 𝑟 𝑁−𝑖
Такой подход позволяет для быстрого вычисления синдромов использовать схему Горнера
2
𝑃 = 𝐷0 + 𝐷1 + 𝐷2 + ⋯ + 𝐷𝑁−1
𝑄 = 𝑞1 𝐷𝑁−1 + 𝑞 2 𝐷𝑁−2 + ⋯ + 𝑞 𝑁 𝐷0 = (((𝐷0 𝑞 + 𝐷1 )𝑞 + 𝐷2 )𝑞 + ⋯ + 𝐷𝑁−1 ) 𝑞
…
1
2
𝑁
𝑅 = 𝑟 𝐷𝑁−1 + 𝑟 𝐷𝑁−2 + ⋯ + 𝑟 𝐷0 = (((𝐷0 𝑟 + 𝐷1 )𝑟 + 𝐷2 )𝑟 + ⋯ + 𝐷𝑁−1 ) 𝑟
{
Что же касается решения задачи быстрого восстановления, то очевидным образом ее сложность
выше задачи вычисления синдромов и существенно возрастает с ростом размерности. Отметим,
что большинство промышленных реализаций дисковых массивов снижают свою
производительность при утрате двух дисков, а способность восстановления трех или более дисков
является экзотикой.
Мы хотим на основе анализа условий разрешимости системы (2) построить способ представления
данных, позволяющий производить вычисления с высокой скоростью.
Анализ условий разрешимости системы
До сих пор в ущерб строгости мы обходили вниманием вопрос, над какой алгебраической
структурой производятся вычисления. Наша ближайшая цель – построить такую структуру ℜ.
Во-первых, в ℜ нам необходимо иметь операции умножения элементов 𝐷𝑖 на элементы
𝑝𝑖 , 𝑞𝑖 , … , 𝑟𝑖 , а так же операции сложения результатов. Т.е. 𝐷𝑖 должны составлять векторное
пространство над 𝑝𝑖 , 𝑞𝑖 , … , 𝑟𝑖 . Например, все перечисленные элементы могут находиться в кольце
или даже в поле.
Во-вторых, нам нужно иметь возможность однозначно решать систему (2) относительно набора
утраченных дисков 𝐷𝑥 , 𝐷𝑦 , … , 𝐷𝑧 . Фундаментальный анализ условий однозначной разрешимости
содержится, например, в (Елизаров, 2004). В рамках нашего исследования мы ограничимся
тривиальным наблюдением: для решения (2) нам нужно иметь возможность производить
операцию деления на определитель матрицы для любых различных 0 ≤ 𝑥, 𝑦, 𝑧 < 𝑁
𝑝𝑥 𝑝𝑦
𝑞𝑥 𝑞𝑦
∆𝑥,𝑦,…𝑧 = 𝑑𝑒𝑡 ( ⋮
𝑟𝑥 𝑟𝑦
⋯
⋱
⋯
𝑝𝑧
𝑞𝑧
⋮)
𝑟𝑧
(3)
Говоря другими словами, определитель ∆𝑥,𝑦,…,𝑧 должен быть обратим в ℜ. Если элементы
𝑝𝑖 , 𝑞𝑖 , … , 𝑟𝑖 лежат в некотором подполе ℱ ⊂ ℜ, то это условие сводится к условию
Δ𝑥,𝑦,…,𝑧 ≠ 0
При этом не требуется, чтобы в поле ℱ лежали все 𝐷𝑖 , они могут находиться вне его в расширении
ℜ.
Организация вычислений в конечных расширениях полей
В дальнейшем простые конечные поля 𝐺𝐹(𝑝), где - простое число, будем обозначать символом 𝔇.
Будем строить конечные расширения 𝔇(𝑛) следующим образом: вначале расширим 𝔇 до кольца
многочленов 𝔇[𝑥], а затем факторизуем по идеалу некоторого многочлена 𝑔(𝑥) ∈ 𝔇[𝑥] степени 𝑛.
Если многочлен 𝑔(𝑥) неразложим над 𝔇, то 𝔇(𝑛) является полем 𝔇(𝑛) = 𝔇[𝑥]⁄𝑔(𝑥) = 𝐺𝐹(𝑝𝑛 ).
Элементами 𝔇(𝑛) являются многочлены степени не выше 𝑛 c коэффициентами из 𝔇. Для
3
программной реализации данного метода удобно представлять элементы 𝔇(𝑛) в виде массива
элементов 𝔇 размерности 𝑛 (Рисунок 2)
d0
d1
d2
d3
…
Рисунок 2. Представление полинома в виде массива коэффициентов
При этом элементы 𝔇 в 𝔇(𝑛) в нашем представлении выглядят как массивы, все элементы
которого, кроме нулевого, равны нулю (Рисунок 3).
d0
0
0
0
0
1
2
3
…
n-1
Рисунок 3. Представление элементов поля в его расширении
Операции умножения и сложения будем производить как операции умножения и сложения
многочленов с последующим нахождением остатка от деления на многочлен 𝑔(𝑥).
Обратим внимание на тот факт, что с точки зрения программной реализации операция умножения
элемента 𝔇 на элемент 𝔇(𝑛) является более простой, чем операция умножения двух
произвольных элементов из 𝔇(𝑛) . Будучи операцией умножения вектора на скаляр, она сводится к
n-кратному повторению умножения в 𝔇 и зависит не от многочлена 𝑔(𝑥), а только от его степени
n.
Продолжим расширение. Расширим 𝔇(𝑛) до кольца многочленов 𝔇(𝑛) [𝑦] и снова факторизуем по
идеалу некоторого многочлена 𝑓(𝑦) степени 𝑚. Полученное конечное расширение будем
обозначать 𝔇(𝑛𝑚) . Аналогично, для программной реализации будем представлять элементы
𝔇(𝑛𝑚) как массивы элементов 𝔇(𝑛) размерности 𝑚 и точно так же будем производить операции с
этими массивами, как операции с многочленами по модулю 𝑓(𝑦).
Тогда относительно элементов 𝔇 элементы 𝔇(𝑛𝑚) представляются как двумерные массивы
размерности 𝑛 × 𝑚, или как массивы массивов. Это представление выглядит естественным,
поскольку мы фактически расширили 𝔇 до кольца 𝔇[𝑥][𝑦], а затем факторизовали по модулям
𝑓(𝑦) и 𝑔(𝑥).
𝑑0,0
[ ⋮
𝑑0,𝑛−1
⋯ 𝑑𝑚−1,0
⋱
⋮
]
⋯ 𝑑𝑚−1,𝑛−1
Несмотря на изоморфизм конечных полей одинакового размера 𝔇(𝑛𝑚) ≅ 𝔇(𝑚𝑛) , порядок
построения расширений может оказаться существенным для целей нашего исследования.
Технически разница представления элементов состоит в том, что в одном случае элементы
представляются в виде массива размерности 𝑛 из элементов размерности 𝑚, а в другом, в виде
массива размерности 𝑚 из элементов размерности 𝑛 (Рисунок 4). Для того, чтобы подчеркнуть
разницу в порядке расширения будем обозначать степень расширения в верхнем индексе не
произведением, а через запятую 𝔇(𝑛,𝑚)
4
d00
d01
d02
…
d00
d01
…
d10
d11
d12
…
d10
d11
…
d10
d11
…
…
dm-1,0 dm-1,1 dm-1,2
…
…
dn-1,0 dn-1,1
…
Рисунок 4. Технические варианты «двойного» расширения
Прикладной смысл «многоступенчатых» расширений связан с особенностями организации
вычислений в компьютерах. В базовой модели современные процессоры доставляют поле 𝐺𝐹(2),
но обработку данных осуществляют не отдельными битами, а параллельно целыми словами.
Модель «многоступенчатых» расширений позволяет организовать вычисления в расширениях
большого размера как набор операций со словами, а не с отдельными битами.
Например, процессоры Intel® Core™, выпускаемые начиная с 2010, оснащены командой
PCLMULQDQ (VPCLMULQDQ). Эта команда позволяет осуществлять умножение двух 64-разрядных
чисел с получением 128-разрядного результата при выключенных цепях переносов, что
эквивалентно умножению многочленов с двоичными коэффициентами. В работе (Gueron &
Kounavis, 2010) описаны возможности этой команды для организации вычислений в конечных
полях 𝐺𝐹(2128 ).
В дальнейшем нам понадобится иметь представление «одинарных расширений» 𝔇(𝑛) =
𝔇[𝑥]/𝑔(𝑥) и 𝔇(𝑚) = 𝔇[𝑦]/𝑔(𝑦) в «двойном расширении» 𝔇(𝑛,𝑚) = (𝔇[𝑥]⁄𝑔(𝑥))[𝑦]⁄𝑓(𝑦)
(Рисунок 5)
Элементы
в
Элементы
в
d00
d01
d02
…
d00
0
0
…
0
0
0
…
d10
0
0
…
…
0
0
0
…
…
0
dm-1,0
0
0
…
0
Рисунок 5. Варианты представления элементов в расширении
Обратим внимание на операцию умножения в 𝔇(𝑛,𝑚) в двух частных случаях, когда один из
сомножителей лежит в 𝔇(𝑛) или в 𝔇(𝑚) . В первом случае операция сводится к m-кратному
повторению операции умножения в 𝔇(𝑛) . Во втором случае она имеет сложность операции
умножения полиномов степени 𝑚 − 1, но при этом операции умножения коэффициентов этого
полинома выполняются не в 𝔇(𝑛) , а в 𝔇, т.е. являются существенно более простыми. Например,
при 𝔇 = 𝐺𝐹(2) они сводятся к операциям умножения на 0 или 1 и являются умножением только в
фундаментальном смысле, но при этом производятся не с отдельными битами а целыми nразрядными словами.
5
Используя данный подход можно продолжать расширения и далее, тем самым предоставляя
конструктивный способ программной реализации операций в кольцах (полях) достаточно
большого размера. Такой способ организации вычислений в конечных алгебраических структурах
будем называть методом последовательных расширений.
Построение отказоустойчивых массивов с использованием метода
последовательных расширений
Для построения отказоустойчивых массивов будем представлять каждый диск в страйпе, как
элемент конечной алгебраической структуры 𝔇(𝑛,𝑚) , оснащенной операциями сложения и
умножения. Наличие этих операций позволяет производить вычисление синдромов (1), но для
восстановления утраченных дисков (2), как было обсуждено выше, нам еще нужна обратимость
некоторых элементов. Если 𝔇(𝑛,𝑚) является полем, то проблемы не существует. Но для
построения поля необходимо иметь многочлен 𝑓(𝑦), неприводимый над 𝔇(𝑛) . Ограниченный
класс таких многочленов можно построить, используя результаты (Kyuregyan, 2002), но в целом
задача выяснения неприводимости полинома является нетривиальной. К счастью, перед нами не
стоит задача построения поля. Нам достаточно построить кольцо или даже векторное
пространство с достаточным количеством обратимых элементов.
Для этого в мы построим структуру 𝔇(𝑛,𝑚) , как результат двойного последовательного
расширения 𝐺𝐹(2), а коэффициенты 𝑝𝑖 , 𝑞𝑖 , … , 𝑟𝑖 будем выбирать из содержащегося в этой
структуре поля 𝔇(𝑛) или 𝔇(𝑚) (Рисунок 6)
Кольцо(векторное
пространство)
Поле
Рисунок 6. Выбор коэффициентов в поле
Строго говоря, нам не требуется, чтобы 𝔇(𝑛) или 𝔇(𝑚) являлись полями. Нам достаточно, чтобы
определитель (3) был обратим. В этом можно убедиться даже путем перебора, который в 𝔇(𝑛)
или 𝔇(𝑚) менее сложен, чем в 𝔇(𝑛,𝑚) .
Продемонстрируем предложенный метод на примерах.
6
Варианты реализации помехоустойчивых дисковых массивов
В данном разделе мы собираемся продемонстрировать, что существующие методы построения
отказоустойчивых дисковых массивов являются частными случаями метода последовательных
расширений и предложить новые схемы построения.
RAID-6
Самой распространенной технологией построения дисковых массивов с возможностью
восстановления двух дисков является RAID-6. При рассмотрении этой технологии будем следовать
(Anvin, 2009).
Для выполнения вычислений блоки страйпа разбиваются на слова размером 1 байт. Каждый байт
рассматривается как элемент поля 𝐺𝐹(28 ) и вычисления повторяются для каждого байта блока.
Небольшой размер поля обусловлен возрастанием сложности вычислений в полях большего
размера. В качестве модуля для вычислений в поле выбирается неприводимый полином степени
8, например, 𝑥 8 + 𝑥 4 + 𝑥 3 + 𝑥 2 + 1. В качестве элементов 𝑝𝑖 выбирается единица поля, а в
качестве элементов 𝑞𝑖 последовательные степени элемента 𝑞 = 𝑥 ∈ 𝐺𝐹(28 ). Тогда (1) мы можем
записать в виде
𝑃 = 𝐷0 + 𝐷1 + ⋯ +𝐷𝑁−1
{
𝑄 = 𝑞 0 𝐷0 + 𝑞1 𝐷1 + ⋯ 𝑞 𝑁−1 𝐷𝑁−1
В терминах модели последовательных расширений в качестве базового поля 𝔇 выбирается 𝐺𝐹(2)
и первый раз расширяется до 𝔇(8) = 𝐺𝐹(28 ). В этом расширении выбирается элемент 𝑞 и,
соответственно, находятся все элементы 𝑞𝑖 , а так же определители (3) для каждой пары (𝑥, 𝑦), 0 ≤
𝑥≠𝑦<𝑁
Δ𝑥,𝑦 = det (
1
𝑞𝑥
1
)
𝑞𝑦
Теперь если расширить 𝔇(8) до 𝔇(8,𝑚) , где 𝑚 – размер блока в страйпе, то вычисления (1) и
решение системы (2) в 𝔇(8,𝑚) сводятся к m-кратному независимому повторению одинаковых
вычислений в каждом байте блока 𝔇(8) = 𝐺𝐹(28 ).
Таким образом, технология RAID-6 является частным случаем построения дисковых массивов
методом последовательных расширений, при котором элементы 𝑞𝑖 выбираются из первого
расширения 𝔇(8) = 𝐺𝐹(28 ) ⊂ 𝔇(8,𝑚) , где 𝑚 – размер блока в страйпе.
RAID RDP
Выберем в качестве базового поля 𝔇 = 𝐺𝐹(2) и расширим его до 𝔇(5) с помощью многочлена
𝑓(𝑦) = 𝑦 5 − 1. Отметим, что этот полином разлагается на множители и поэтому расширение 𝔇(5)
полем не является. Но с прикладной точки зрения полиномы вида 𝑥 𝑛 − 1 удобны тем, что в
порожденном ими расширениях операция умножения на многочлен 𝑥 реализуется как операция
циклического сдвига в n-разрядном регистре.
(𝑑𝑛−1 𝑥 𝑛−1 + 𝑑𝑛−2 𝑥 𝑛−2 + ⋯ + 𝑑0 ) ∙ 𝑥 (𝑚𝑜𝑑 𝑥 𝑛 − 1) =
=⟨
(𝑑𝑛−1 𝑥 𝑛−1 + 𝑑𝑛−2 𝑥 𝑛−2 … + 𝑑0 ) ∙ 𝑥 = 𝑑𝑛−1 𝑥 𝑛 + 𝑑𝑛−2 𝑥 𝑛−1 + ⋯ + 𝑑0 𝑥
⟩=
𝑑𝑛−1 𝑥 𝑛 + 𝑑𝑛−2 𝑥 𝑛−1 + ⋯ + 𝑑0 𝑥 (𝑚𝑜𝑑 𝑥 𝑛 − 1) = 𝑑𝑛−1 𝑥 𝑛 + 𝑑𝑛−2 𝑥 𝑛−1 + ⋯ + 𝑑0 𝑥 − 𝑑𝑛−1 𝑥 𝑛 + 𝑑𝑛−1
= 𝑑𝑛−2 𝑥 𝑛−1 + ⋯ + 𝑑0 𝑥 + 𝑑𝑛−1
7
В (1) выберем 𝑝𝑖 = 1 и 𝑞𝑖 = 𝑦 4 + 𝑦 𝑖 и составим систему для вычисления синдромов
𝑁−1
𝑃 = ∑ 𝐷𝑖
𝑖=0
𝑁−1
𝑄 = ∑ 𝑞𝑖 𝐷𝑖 , 𝑞𝑖 = 𝑦 4 + 𝑦 𝑖
{
𝑖=0
Тогда для синдрома 𝑄 имеем
𝑁−1
𝑁−1
4
𝑖
𝑄 = ∑(𝑦 + 𝑦 )𝐷𝑖 = 𝑦 𝑃 + ∑ 𝑦 𝑖 𝐷𝑖
𝑖=0
4
𝑖=0
С учетом того, что в кольце многочленов по модулю 𝑦 5 − 1 операция умножения на 𝑦 𝑖 является
операцией циклического сдвига на 𝑖 разрядов, схему вычисления синдрома 𝑄 можно изобразить
следующим образом (Рисунок 7)
d00
d01
d02
d03
d04
d00
d01
d02
d03
d04
d10
d11
d12
d13
d14
d14
d10
d11
d12
d13
d20
d21
d22
d23
d24
d23
d24
d20
d21
d22
d30
d31
d32
d33
d34
d32
d33
d34
d30
d31
d40
d41
d42
d43
d43
d41
d42
d43
d43
d40
q0
q1
q2
q3
q4
Рисунок 7. Схема вычисления синдрома Q в алгоритме RAID RDP
На основании схемы (Рисунок 7) составим таблицу, в которой каждый столбец соответствует диску
данных, а строка номеру элемента в массиве, представляющему этот диск как многочлен в 𝔇(5).
Элемент в ячейке таблицы соответствует номеру в массиве 𝑄, в вычислении которого данный
элемент участвует (Таблица 1).
y0
y1
y2
y3
y4
D0
0
1
2
3
4
D1
1
2
3
4
0
D2
2
3
4
0
1
D3
3
4
0
1
2
D4(P)
4
0
1
2
3
Q
0
1
2
3
4
Таблица 1. Вычисление Q в RAID-RDP
Мы составили таблицу в таком виде, чтобы продемонстрировать ее совпадение с таблицей из
статьи (Peter Corbett, 2004), которая описывает алгоритм RAID RDP (Row Diagonal Parity),
8
являющийся альтернативой RAID-6. Нам только осталось расширить 𝔇(5) до 𝔇(𝑛,5) и сделать
оговорку, что элементы 𝐷𝑖 выбираются из подмножества 𝔇(𝑛,5) многочленов со степенью не выше
3, чтобы показать, что массив RAID RDP так же является частным случаем массива, построенного
методом последовательных расширений.
Произвольный массив с защитой трех дисков
Выберем произвольный неприводимый многочлен над 𝐺𝐹(2), например 𝑦128 + 𝑦 7 + 𝑦 2 + 𝑦 + 1.
Обширный список таких многочленов приведен в (Seroussi, 1998). С его помощью расширим
𝐺𝐹(2) до 𝔇(128) = 𝐺𝐹(2128 ). Для вычисления синдромов (1) выберем 𝑝𝑖 , 𝑞𝑖 и 𝑟𝑖 таким образом,
чтобы определитель (3) был ненулевым для любых попарно неравных 0 ≤ 𝑥, 𝑦, 𝑧 < 𝑁, например
𝑝𝑖 = 1
{𝑞𝑖 = 𝑞 𝑖 , 𝑞 = 𝑦
𝑟𝑖 = 𝑟 𝑖 , 𝑟 = (𝑦 2 + 1)
С учетом того, что количество дисков в массиве 𝑁 обычно измеряется десятками, выбирать эти
коэффициенты можно путем перебора. Главным критерием выбора из возможных вариантов
является минимизация сложности вычислений, что в первом приближении соответствует
минимальному количеству ненулевых коэффициентов в 𝑞, 𝑟 и всевозможных Δ𝑥,𝑦,𝑧 . При этом
нужно учитывать, что 𝑝, 𝑞, 𝑟 используются в вычислениях при каждой операции записи,
определитель Δ𝑥,𝑦,𝑧 при каждой операции чтения в случае, если произошел отказ трех дисков, а
само его значение вычисляется только при установлении факта отказа, и является пренебрежимо
редкой операцией.
Организовав вычисления в 𝔇(128) = 𝐺𝐹(2128 ) произведем расширение этого поля до векторного
пространства 𝔇(𝑛,128), где n произвольно, например, соответствует размеру машинного слова или
границе линии кэш. Мы получили размер блока 𝐷𝑖 ∈ 𝔇(𝑛,128) равным 16 ∙ 𝑛 байт.
Важно отметить, что во всех необходимых для вычислений операциях умножения в качестве
одного из сомножителей обязательно некоторый выступает элемент из 𝔇(128) ⊂ 𝔇(𝑛,128). Это
позволяет нам, как было показано выше, исключить из вычислений трудоемкие операции
умножения в полях 𝐺𝐹(2𝑛 ).
Заключение
Стандартный подход при организации RAID-6 вычислений состоит в разбиении блоков на
отдельные слова, вычисления в которых производятся независимо друг от друга. Основная идея
настоящей статьи состоит в том, чтобы рассматривать целый блок как единую алгебраическую
структуру, и тем самым, расширить возможности по построению алгоритма вычислений.
При этом показано, что и RAID-6, и RAID RDP являются частными случаями предлагаемого
подхода.
Введенный в статье метод последовательных расширений может использоваться для организации
вычислений и в других прикладных областях, где требуются вычисления в алгебраических
структурах большого размера.
9
Список литературы
Anvin, H. P. (21 May 2009 г.). The mathematics of RAID-6. Получено 18 Nov 2009 г., из The Linux Kernel
Archives: http://ftp.kernel.org/pub/linux/kernel/people/hpa/raid6.pdf
Gueron, S., & Kounavis, M. E. (2010). Intel® Carry-Less Multiplication Instruction and its Usage for
Computing the GCM Mode. Intel Corporation.
Kyuregyan, M. K. (2002). Recurrent Methods for Constructing Irreducible Polynomials over GF(2s). Finite
Fields and Their Applications, 8, стр. 52-68.
Peter Corbett, B. E. (2004). Row-Diagonal Parity for Double Disk Failure Correction. Proceedings of the
Third USENIX Conference on File and Storage Technologies. San Francisco, CA, USA: USENIX
Association.
Seroussi, G. (1998). Table of Low-Weight Binary Irreducible Polynomials. Hewlett Packard Computer
System Laboratory, HPL-98-135.
Елизаров, В. П. (2004). Условия, необходимые для разрешимости системы линейных уравнений
над кольцом. Дискретная Математика, 16(2), стр. 44-53.
10
Download