Как я преобразовываю массив RAID 4 в RAID 0?

Я имел RAID с тремя дисками 0 массивов и выполнил следующее для добавления четвертого диска:

mdadm --manage /dev/md127 --add /dev/xvdi

Каждый диск является объемом EC2 на 1 ТБ. Массив занял приблизительно 40 часов для изменения. Приблизительно 1 час через, изменяясь остановился, и объем стал недоступным. Я перезапустил машину и изменение, длительное затем законченный по-видимому успешно, но об уровне массива теперь сообщают как RAID 4, и применимая способность не изменилась.

mdadm --detail /dev/md127 теперь сообщает о следующем:

/dev/md127:
        Version : 1.2
  Creation Time : Wed Jul  1 22:26:36 2015
     Raid Level : raid4
     Array Size : 4294965248 (4096.00 GiB 4398.04 GB)
  Used Dev Size : 1073741312 (1024.00 GiB 1099.51 GB)
   Raid Devices : 5
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Sun Oct 11 07:40:48 2015
          State : clean, degraded 
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

     Chunk Size : 512K

           Name : [removed]
           UUID : [removed]
         Events : 63530

    Number   Major   Minor   RaidDevice State
       0     202      160        0      active sync   /dev/xvdk
       1     202      144        1      active sync   /dev/xvdj
       2     202       80        2      active sync   /dev/xvdf
       4     202      128        3      active sync   /dev/xvdi
       4       0        0        4      removed

Моя цель здесь состоит в том, чтобы иметь RAID на 4 ТБ 0 массивов. Мне не нужно дублирование, так как я копирую путем взятия снимков объема в AWS. Я выполняю Сервер Ubuntu 14.04.3.

Как я переключаюсь на RAID 0, не теряя данных, принимая во внимание то, что состояние clean, degraded?

5
задан 11 October 2015 в 04:40

3 ответа

Вы можете изменить текущую конфигурацию непосредственно на RAID с mdadm -G -l 0 /dev/md127. Так как RAID 4 с только 4 из 5 участников - по существу RAID 0 без паритетной полосы, преобразование произойдет немедленно. Если бы был паритетный участник, то это было бы пропущено, но так как это уже перечислено как «Удаленное», это будет просто пропущено, Устройства Набега, уменьшенные к 4, и государство должно быть «чистым».

От вопроса mdadm, напечатанного выше, Вы видите, что членский размер составляет 1 TB, и размер объема составляет 4 TB, таким образом, объем должен быть применимым, как, даже без паритетного участника. Вам тогда будет нужно к , выращивают разделение с разделенным и выступают, файловая система изменяют размеры операций за обычный.

5
ответ дан 23 November 2019 в 08:55

Есть один сценарий, в котором я получаю ухудшенный массив FAILED. Это выглядит так:

  • создать чередующийся массив RAID0
  • Преобразовать его в RAID4
  • Добавить диск четности в массив RAID4
  • Fail один из других дисков в массиве и удалите его
  • Преобразование массива RAID4 в RAID0

На последнем шаге диск четности удаляется, а затем обнаруживает, что не может преобразовать массив для RAID0. Тем не менее, он мог знать об этом заранее (очевидно, он требует, чтобы все диски без четности были подключены). Результатом является массив в чистом, ухудшенном состоянии.

преобразовать чередование RAID0 в RAID4

mdadm --grow / dev / md / vg_docker --level = 4 mdadm --detail / dev / md / vg_docker

добавить диск четности

mdadm --manage / dev / md / vg_docker --add / dev / sdm mdadm --detail / dev / md / vg_docker

ждать завершения восстановления

сбой одного из исходных дисков в массиве RAID0

mdadm --manage / dev / md / vg_docker --fail / dev / sde mdadm --detail / dev / md / vg_docker

удалить его из массива

mdadm --manage / dev / md / vg_docker --remove / dev / sde mdadm --detail / dev / md / vg_docker

преобразовать его обратно в Полоса RAID0

mdadm --grow / dev / md / vg_docker --level = stripe

Дает вывод: mdadm: / dev / md / vg_docker: не удалось установить уровень в raid0

mdadm --detail / dev / md / vg_docker

Состояние теперь чистое, СБОЙ, и все данные потеряны.

Было бы хорошо, если бы mdadm мог проверить перед преобразованием массива в полосу RAID0, можно ли выполнить операцию.

Справочная информация: чередование RAID0 полезно для повышения производительности в облачной установке. Базовое хранилище уже достаточно доступно, поэтому RAID необходим только для дополнительной производительности. Выше было сделано из некоторых экспериментов, которые пытались заменить диск в массиве RAID0 другим диском, добавив новый диск (паритет) и затем удалив диск, который мы хотим удалить. Затем преобразование обратно в RAID0 должно дать требуемый результат при замене одного диска.

0
ответ дан 23 November 2019 в 08:55

Я знаю, что это старо, но эти шаги могли быть полезны людям.

Как добавить диски к RAID 0?

ENV:

  1. песни 7 (ядро: 3.10.0-327.22.2.el7.x86_64)
  2. версия v3.4 mdadm - 28-го января 2016
  3. Сначала 3 диска 10 ГБ каждый
  4. Четвертый диск также 10 ГБ

Начальная настройка:

$ sudo mdadm --create --verbose /dev/md0 --level=0 --name=DB_RAID2 --raid-devices=3 /dev/xvdh /dev/xvdi /dev/xvdj
$ sudo mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Tue Sep  5 14:25:10 2017
     Raid Level : raid0
     Array Size : 31432704 (29.98 GiB 32.19 GB)
   Raid Devices : 3
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Tue Sep  5 14:25:10 2017
          State : clean 
 Active Devices : 3
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 0

     Chunk Size : 512K

           Name : temp:DB_RAID2  (local to host temp)
           UUID : e8780813:5adbe875:ffb0ab8a:05f1352d
         Events : 0

    Number   Major   Minor   RaidDevice State
       0     202      112        0      active sync   /dev/xvdh
       1     202      128        1      active sync   /dev/xvdi
       2     202      144        2      active sync   /dev/xvdj

$ sudo mkfs -t ext4 /dev/md0
$ sudo mount /dev/md0 /mnt/test

Добавьте диск к RAID 0 за один шаг (не работает):

$ sudo mdadm --grow /dev/md0 --raid-devices=4 --add /dev/xvdk
mdadm: level of /dev/md0 changed to raid4
mdadm: added /dev/xvdk
mdadm: Failed to initiate reshape!

Вероятно, это перестало работать из-за этой ошибки.

Неродной 1: преобразуйте в RAID-4:

$ sudo mdadm --grow --level 4 /dev/md0
mdadm: level of /dev/md0 changed to raid4
$ cat /proc/mdstat 
Personalities : [raid0] [raid6] [raid5] [raid4] 
md0 : active raid4 xvdj[2] xvdi[1] xvdh[0]
      31432704 blocks super 1.2 level 4, 512k chunk, algorithm 5 [4/3] [UUU_]

unused devices: <none>

Неродной 2: Добавьте диск:

$ sudo mdadm --manage /dev/md0 --add /dev/xvdk
mdadm: added /dev/xvdk

Ожидайте до восстанавливается:

$ cat /proc/mdstat 
Personalities : [raid0] [raid6] [raid5] [raid4] 
md0 : active raid4 xvdk[4] xvdj[2] xvdi[1] xvdh[0]
      31432704 blocks super 1.2 level 4, 512k chunk, algorithm 5 [4/3] [UUU_]
      [=>...................]  recovery =  8.5% (893572/10477568) finish=3.5min speed=44678K/sec

$ cat /proc/mdstat 
Personalities : [raid0] [raid6] [raid5] [raid4] 
md0 : active raid4 xvdk[4] xvdj[2] xvdi[1] xvdh[0]
      31432704 blocks super 1.2 level 4, 512k chunk, algorithm 5 [4/4] [UUUU]

unused devices: <none>

Неродной 3: Преобразуйте в RAID 0 назад:

$ sudo mdadm --grow --level 0 --raid-devices=4 /dev/md0
$

Ожидайте, пока это не изменится:

$ cat /proc/mdstat 
Personalities : [raid0] [raid6] [raid5] [raid4] 
md0 : active raid4 xvdk[4] xvdj[2] xvdi[1] xvdh[0]
      31432704 blocks super 1.2 level 4, 512k chunk, algorithm 5 [5/4] [UUUU_]
      [===>.................]  reshape = 16.2% (1702156/10477568) finish=6.1min speed=23912K/sec

$ cat /proc/mdstat
Personalities : [raid0] [raid6] [raid5] [raid4] 
md0 : active raid0 xvdk[4] xvdj[2] xvdi[1] xvdh[0]
      41910272 blocks super 1.2 512k chunks

Неродной 4: измените размер файловой системы:

$ sudo mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Tue Sep  5 14:25:10 2017
     Raid Level : raid0
     Array Size : 41910272 (39.97 GiB 42.92 GB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Tue Sep  5 14:55:46 2017
          State : clean 
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

     Chunk Size : 512K

           Name : temp:DB_RAID2  (local to host temp)
           UUID : e8780813:5adbe875:ffb0ab8a:05f1352d
         Events : 107

    Number   Major   Minor   RaidDevice State
       0     202      112        0      active sync   /dev/xvdh
       1     202      128        1      active sync   /dev/xvdi
       2     202      144        2      active sync   /dev/xvdj
       4     202      160        3      active sync   /dev/xvdk
$ df -h
/dev/md0         30G   45M   28G   1% /mnt/test

Фактический изменяют размер и после того, как измените размер:

$ sudo resize2fs /dev/md0
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/md0 is mounted on /mnt/test; on-line resizing required
old_desc_blocks = 4, new_desc_blocks = 5
The filesystem on /dev/md0 is now 10477568 blocks long.

$ df -h /dev/md0
Filesystem      Size  Used Avail Use% Mounted on
/dev/md0         40G   48M   38G   1% /mnt/test
4
ответ дан 23 November 2019 в 08:55

Другие вопросы по тегам:

Похожие вопросы: