Назад | Перейти на главную страницу

mdadm: рост странностей массива RAID0

Я создал 3 массива RAID0 с помощью mdadm на 3 серверах Rackspace CloudServer, используя CloudBlockStorage от Rackspace в качестве своих устройств. Каждый массив имеет свой собственный набор томов CBS. RS-CBS имеет верхний предел для своих дисков 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 за которым следует 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.

Я нашел вариант, который, если вы думаете, имеет смысл включить в команду роста, вариант: --backup-file. Если вы думаете об этом, чтобы реально увеличить массив 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