Почему RAID 0 не может использовать все дисковое пространство на двух дисках разных размеров?

10

Процитирую статью из Википедии о RAID :

RAID 0 может быть создан с дисками разных размеров, но объем памяти, добавляемый в массив каждым диском, ограничен размером самого маленького диска. Например, если диск размером 100 ГБ объединен с диском объемом 350 ГБ, размер массива будет 200 ГБ (100 ГБ × 2).

Однако в статье не говорится, почему он не может объединить их в RAID-массив и использовать все дисковое пространство. Я понимаю, что чередование записывает между ними, но, конечно же, оно не должно препятствовать записи в более поздние сектора второго диска, в то же время работая с пониженной производительностью? Существует ли альтернативная система RAID (например, программный RAID), которая предлагает такую ​​функцию?

многочлен
источник
Я не уверен, что это будет работать с некоторыми аппаратными рейдами, но с программными рейдами. Чтобы воспользоваться некоторыми аспектами рейда 0, используя больше доступного пространства на двух дисках разного размера, таких как один 100 ГБ и один 350 ГБ, вы можете попробовать создать 3 Разделы 100 ГБ на диске большего размера и разделите раздел 100 КБ на первом и 3 раздела 100 ГБ на втором диске. Рейдовый уровень 0 даст вам 400 гигабайтов для использования при некотором увеличении производительности чтения / записи, но, вероятно, будет меньше, чем если бы вы чередовали два диска по 200 ГБ.
Кит Рейнольдс
Обычно вы не захотите этого делать. Для демонстрации я настроил RAID0, используя одну флешку 1G и 16G. Я сделал расширенные разделы, заполняя каждый диск. Затем я сделал 981MB разделов на каждом диске, пока они не были заполнены. Затем я сделал рейд, используя 16 разделов с командой на Linux mdadm --create --verbose /dev/md0 --chunk=512 -l0 -n16 /dev/sdd5 /dev/sde5 /dev/sde6 /dev/sde7 /dev/sde8 /dev/sde9 /dev/sde10 /dev/sde11 /dev/sde12 /dev/sde13 /dev/sde14 /dev/sde15 /dev/sde16 /dev/sde17 /dev/sde18 /dev/sde19. У меня оказалось меньше места, чем было, если бы я просто использовал 16-Гбайт диск
Кит Рейнольдс

Ответы:

11

Причина, по которой размер ограничен размером самого маленького диска, связана с тем, что полосы записываются «поочередно» и должны быть одинакового размера.

В двухдисковой системе все нечетные полосы находятся на одном диске, четные - на другом. Пишет поочередно между дисками, нечетные / четные / нечетные / четные / ...

Поскольку полосы должны быть одинакового размера и парными (для двух дисков), вы можете использовать максимально свободное пространство 2 * (размер наименьшего диска).

боб
источник
3

Вы можете использовать оставшееся пространство. Вы можете создать том, используя оставшееся пространство, или даже использовать его как часть другого RAID. Однако использование этого дополнительного пространства приведет к снижению производительности, которую дает RAID 0, поскольку два разных процесса могут пытаться получить доступ к одному и тому же физическому контроллеру и диску.

Почему вы не можете добавить это дополнительное пространство к исходному RAID? Ну, не вдаваясь в подробности, это из-за алгоритмов использования RAID. RAID 0 записывает данные на первый диск RAID, затем на следующий. Это повышает производительность, так как не нужно ждать, пока предыдущий диск завершит чтение или запись. Если в вашем посте использовались 250 ГБ, большая часть записи была бы на первый диск, что практически исключало бы увеличение производительности.

RAID может быть не тем решением, которое вы ищете, если вы хотите использовать все пространство дисков, вы должны занимать тома. Spanning позволяет вам брать много томов и объединять их в один большой том. Spanning не предлагает увеличения производительности или избыточности.

Keltari
источник
Это не объясняет, почему он не может использовать все два диска в одном томе. Кроме того, отдельная часть томов вообще не вызовет проблем с производительностью - управление дисковым вводом-выводом на низком уровне обрабатывается прерываниями через disk.sys, поэтому запросы на чтение / запись в любом случае передаются по конвейеру, и Windows также поддерживает перекрывающийся ввод-вывод.
Полином
Хорошо, вы обновляете до сих пор не объяснил это. Я знаком с тем, как работает чередование, но это не объясняет, почему он не может просто перейти в однодисковый режим (со стандартной производительностью одного диска) после заполнения меньшего диска. Спасибо за упоминание охвата объема, хотя - это выглядит полезным.
Полином
1
Потому что так работает RAID. Если вы действительно хотите, вы можете RAID 0, что вы могли, затем создать том со свободным пространством, затем охватить RAID и дополнительный том. Но я не думаю, что любые RAID-контроллеры позволят вам это сделать. Вы можете сделать это с помощью комбинации аппаратного и программного RAID.
Келтари
1
-1 «Это повышает производительность, поскольку не нужно ждать, пока предыдущий диск завершит чтение или запись», то же самое можно сказать и о двух жестких дисках разных размеров в RAID 0
Celeritas
2
@Polynomial Это не было бы RAID 0. Вы спросили, почему RAID 0 не может использовать все дисковое пространство, и затем вы отвечаете «почему это просто ...». Это невозможно, потому что это RAID 0. Если бы он сделал что-то еще, это было бы что-то еще.
Дэвид Шварц
0

RAID является псевдостандартом, который описывает, как данные могут храниться на массиве дисков. Стандарт описывает четыре различных способа хранения данных (технически больше, но больше никто не заботится о других):

Рейд-0: Чередование. Каждый блок данных распределяется по каждому члену устройства RAID. Никакой избыточности, так что это больше просто массив недорогих дисков, а не избыточный массив недорогих дисков.

Рейд-1: Зеркальное отображение. Каждый блок данных хранится на каждом диске в массиве. Это действительно только с двумя дисками. RAID 1/0 или просто RAID 10 представляет собой комбинацию зеркалирования и чередования и может использоваться для использования более двух дисков.

Рейд-5: Паритет. Каждый блок данных распределяется по каждому члену устройства RAID + один диск выделен для контроля четности.

Raid-6: Double Parity: такой же, как Raid-5, но с двумя дисками четности.

Вот и все. Raid не описывает, что делать с несоответствиями размеров или чем-то еще, но чередование действительно работает только с дисками одинакового размера. Обычно способ обойти это заключается в том, что вы можете использовать оставшееся пространство в качестве отдельного диска.

Отойдя от RAID как способа создания большого дискового массива, вы можете использовать такие вещи, как ZFS, и просто добавлять диски в пул хранения. ZFS всегда будет стараться использовать оба диска максимально эффективно, и вы сможете указать ZFS, какой уровень избыточности вас устраивает.

Предыдущие технологии - это такие вещи, как сопоставление томов (т. Е. LVM или эквивалент Windows), которые абстрагируют идею преобразования блоков на диск на более высокий уровень. С помощью LVM вы можете охватывать диски, расширять разделы, иметь несмежные разделы и так далее. Сопоставление томов - это не RAID, и вместо увеличения производительности при увеличении количества дисков оно просто будет произвольно выбирать запись на один или другой диск в зависимости от того, где вы находитесь в файловой системе. Это называется spanning и обычно лучше RAID, если вы предпочитаете IOPS, а не просто производительность.

Clarus
источник
0
A RAID 0 can be created with disks of differing sizes, but the storage
space added to the array by each disk is limited to the size of the
smallest disk.

Это может быть правдой и будет справедливо для большинства реализаций RAID0. Однако не для всех.

Есть две причины для использования RAID 0:

  1. Объедините несколько дисков в один большой том.
  2. Представление.

Вариант 2 является наиболее распространенным, и я думаю, что он используется почти во всех текущих реализациях RAID 0. Техническое объяснение состоит в том, что информация записывается попеременно между дисками.

Нетехническим способом: думайте о дисках как о двух книгах. Эти книги имеют ограниченную скорость доступа (чтение / запись). Таким образом, вместо двух 100-страничных книг мы переформатируем их в две книги, но нумеруем страницы так, чтобы все четные числа были записаны в одной книге, а все нечетные числа - в другой.

Теперь наша новая книга «R0» ведет себя так, как если бы это была одна книга с удвоенным количеством страниц и удвоенной скоростью.


Вариант 1 может быть таким же простым, как «приклеивать книги друг к другу». В этом случае у вас нет увеличения скорости, но вы можете склеивать книги с разным количеством страниц. Кажется, я вспоминаю некоторые реализации RAID0, подобные этой примерно в 1990 году. Но это не то, что большинство людей считают «правильным RAID 0».

Hennes
источник