Как изменить размер программного массива RAID0, изменив размер раздела?

Вопрос или проблема

У меня есть RAID 0, созданный с помощью mdadm на двух разделах на двух отдельных дисках. Возможно ли изменить размер (увеличить) этот массив, изменив размер базового раздела, т.е. сделать что-то вроде остановки массива -> увеличение раздела -> запуск массива -> mdadm -G -z max, а затем изменить размер файловой системы без потери данных?

Если нет, есть ли способ преобразовать RAID 0 во что-то более гибкое и затем изменить его размер?

Итак, мне нужно решение, чтобы увеличить массив RAID 0 без копирования всего раздела, простои допустимы. Я понимаю, что мог бы добавить еще 2 раздела, но это было бы не очень удобно.

Если вам повезет (подходящий формат метаданных суперблока, суперблок v1.2 сработал для меня), то сначала остановите массив с помощью mdadm -S /dev/mdX, а затем соберите его заново:

mdadm -A --update=devicesize /dev/mdX

Это обновит компоненты устройств с использованием минимального размера компонентов. Я только что использовал это, чтобы увеличить размер массива raid0, который находился на 2x2TB SSD и я сделал dd (sda1/sdb1) на 2x4TB SSD (sdc1/sdd1) [пришлось сначала сделать разметку gdisk на fd00 Linux RAID]. Так как у меня есть место только для подключения 2 дисков, это было сделано по одному диску за раз, очевидно, с полностью остановленными массивами, так что ничего не было в /proc/mdstat.

Однако это не для слабонервных. Легко что-то испортить.

Вы не можете изменить размер разделов RAID0. Возможно, вы сможете добавить еще один диск в существующий md массив.

Когда вы загрузитесь в образ восстановления (например, с какого-либо Linux на USB-накопителе), вы можете создать RAID0 с нуля с новым размером раздела.

Сначала проверьте текущую конфигурацию RAID:

$ mdadm -D /dev/md4 | head -n5
/dev/md4:
           Version : 1.2
     Creation Time : Tue Dec  3 22:19:50 2024
        Raid Level : raid0
        Array Size : 343508992 (327.60 GiB 351.75 GB)

и lsblk

...
└─nvme0n1p4 259:4    0 163.9G  0 part            <- размер раздела
  └─md4       9:4    0 327.6G  0 raid0 /var      <- общий размер RAID

parted может вывести существующую разметку диска:

$ parted /dev/nvme0n1 p
Model: INTEL SSDPE2MX450G7 (nvme)
Disk /dev/nvme0n1: 450GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  537MB   536MB   fat16        primary  boot, esp
 2      537MB   1611MB  1074MB               primary  raid
 3      1611MB  64.5GB  62.9GB               primary  raid
 4      64.5GB  241GB   176GB                primary  raid

Эта настройка использует только половину диска (раздел 4 заканчивается на 241GB), оставляя место для увеличения последнего раздела.

Резервное копирование существующих данных. chroot в существующую систему (убедитесь, что номер md соответствует вашей настройке):

mkdir -p /mnt
mount /dev/md3 /mnt
mkdir -p /mnt/{boot,proc,sys,dev/pts}
mount /dev/md2 /mnt/boot
mount /dev/md4 /mnt/var
mount -t proc proc /mnt/proc
mount -t sysfs sys /mnt/sys
mount -o bind /dev /mnt/dev
mount --bind /dev/pts /mnt/dev/pts
mount --bind /run /mnt/run
chroot /mnt /bin/bash

скопируйте /var данные на другой раздел или сервер

rsync -raHAX /var/ /var.bak/ --info=progress2

выйдите из chroot, отключите монтирование, остановите массив mdadm:

exit
umount /dev/md4
mdadm --stop /dev/md4

Измените размер разделов, например, используя parted

parted /dev/nvme0n1 resizepart 4 100%                                                    

и то же самое для /dev/nvme1n1:

parted /dev/nvme1n1 resizepart 4 100%

создайте новый RAID (это УДАЛИТ данные на данном разделе)

mdadm --stop /dev/md4
mdadm --create /dev/md4 --name md4 --level=0 --raid-devices=2 /dev/nvme[0-1]n1p4
mkfs.ext4 /dev/md4 

переотомите:

mount /dev/md4 /mnt/var
chroot /mnt /bin/bash

скопируйте данные обратно:

rsync -raHAX  /var.bak/ /var/ --info=progress2
rm -rf /var.bak

обновите /etc/mdadm/mdadm.conf, добавив строку с измененным разделом

mdadm -D --scan

Обновите uuid в /etc/fstab (если вы монтируете через UUID):

dumpe2fs /dev/md4 | grep UUID

Ответ или решение

Как изменить размер программного массива RAID 0 путем изменения размеров разделов?

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

Изменение размера RAID 0: оговорки

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

Шаги по изменению размера массива RAID 0

  1. Создание резервной копии данных:
    Перед тем как приступить к любым манипуляциям с RAID, создайте резервную копию всех данных. Это очень важно, так как операции с RAID, особенно с RAID 0, могут привести к потере данных.

  2. Остановка массива RAID:
    Остановите текущий массив RAID командой:

    mdadm -S /dev/mdX
  3. Изменение размера раздела:
    Используйте parted или аналогичный инструмент для изменения размера разделов на обоих дисках. Например:

    parted /dev/nvme0n1 resizepart 4 100%
    parted /dev/nvme1n1 resizepart 4 100%
  4. Обновление размеров компонентов RAID:
    После изменения размеров разделов, нужно обновить размеры массива RAID:

    mdadm -A --update=devicesize /dev/mdX
  5. Пересоздание файловой системы:
    После того как размер массива был изменен, вы сможете расширить файловую систему. Для файловой системы ext4 это можно сделать с помощью следующей команды:

    resize2fs /dev/mdX

Переход на более гибкий уровень RAID

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

Для этого вам нужно будет:

  1. Сделать резервную копию всех данных.
  2. Создать новый RAID массив с необходимым уровнем RAID.
  3. Восстановить данные из резервной копии.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...