Я создал 3 массива RAID0 с помощью mdadm на 3 Rackspace CloudServers с помощью CloudBlockStorage Rackspace в качестве их устройств. Каждый массив имеет их собственный набор объемов CBS. CBS RS имеет верхний предел 1 ТБ для их дисков, и мне было нужно более крупное устройство хранения данных. Один из серверов для хранения данных, вторым является живое зеркало того сервера, и третьим является ночной снимок. Я создал массив на каждом из серверов с помощью этой команды:
mdadm --create /dev/md0 --level=0 --raid-devices=3 /dev/xvdb1 /dev/xvdd1 /dev/xvde1
Когда это прибыло время для роста массива, и так как это было моим первым разом, растя один, я запустил на наименее критическом сервере: сервер снимка. Я добавил новый объем и, с небольшой игрой, придумал эту команду:
mdadm --grow /dev/md0 --raid-devices=4 --add /dev/xvdf1
Согласно mdadm странице справочника это сказало, что Вы не можете вырастить RAID0, таким образом, mdadm преобразовывает его в RAID4, выращивает его и затем преобразовывает назад. (Это никогда не преобразовывает назад, но это - другая проблема). Массив изменяется, но размер никогда не изменяется. Мое предположение - то, что новый диск просто стал диском четности для массива. Таким образом для получения пространства мне нужно, я добавил другой объем:
mdadm --grow /dev/md0 --raid-devices=5 --add /dev/xvdg1
Это изменяет и дает мне дополнительных 500 ГБ, я надеялся на то, таким образом, я делаю resize2fs /dev/md0
и хорошо для движения; 2 ТБ пространства.
Таким образом, это - то, где странность происходит. Я переключаюсь для роста массива на зеркальном сервере. При знании от предыдущих шагов, что я должен буду добавить два объема для получения дополнительного пространства, в котором я нуждаюсь, я использую эту команду:
mdadm --grow /dev/md0 --raid-devices=5 --add /dev/xvdf1 /dev/xvdg1
Это изменяется, и вещи выглядят хорошо, но когда я делаю resize2fs /dev/md0
сопровождаемый a df -hal
Я вижу, что это действительно выращивало и сообщает о 2.5 ТБ пространства, не 2.0 ТБ, которых я ожидал. Это - как будто это не создало диск четности, я предположил, что это сделало от первого показа и использовало все свободное пространство для массива.
Одной вещью, которая выглядела по-другому, был вывод mdadm -D /dev/md0
после изменения на зеркальном сервере. Я видел это для устройств RAID:
Number Major Minor RaidDevice State
0 202 17 0 active sync /dev/xvdb1
1 202 49 1 active sync /dev/xvdd1
2 202 65 2 active sync /dev/xvde1
5 202 97 3 active sync /dev/xvdg1
4 202 81 4 active sync /dev/xvdf1
5 0 0 5 removed
Вывод cat /proc/mdstat
шоу, которые это действительно преобразовывало в RAID4:
Personalities : [raid0] [raid6] [raid5] [raid4]
md0 : active raid4 xvdg1[5] xvdf1[4] xvdd1[1] xvdb1[0] xvde1[2]
2621432320 blocks super 1.2 level 4, 512k chunk, algorithm 5 [6/5] [UUUUU_]
unused devices: <none>
Таким образом, мои проблемы..., я выращивал первый массив (сервер снимка) неправильно, и это должно было получить 2.5 ТБ, но моя ошибка только дала ему 2.0 ТБ? Или я выращивал второй массив (зеркальный сервер) неправильно и не имею диска четности, что я думал, что собирался добраться? Что я могу сделать, или чему нужно сделать меня, для роста этих массивов последовательно?
Я тоже столкнулся с его проблемой и после некоторого тестирования могу вырастить программный массив RAID 0.
Я нашел вариант, который, если вы думаете о нем, имеет смысл включить в команду роста , вариант - файл резервной копии
. Если вы думаете об этом, чтобы реально увеличить массив RAID 0, как если бы вы делали это на оборудовании, вам нужно будет скопировать данные в другом месте, чтобы уничтожить и воссоздать массив, если нет, я бы хотел, чтобы математика увеличивалась массив RAID 0 без дополнительного места (правда).
Еще я обнаружил, что я не смог просто добавить один диск в массив RAID 0, он работает, только если я добавлю два диска, не пробовал больше, чем это пока.
Таким образом, команда для увеличения массива RAID 0 будет (для вашего случая):
mdadm --grow /dev/md0 --raid-devices=5 \
--backup-file=/drive/With/Enough/Space/growth.bak --add /dev/xvdf1 /dev/xvdg1