Неразрушающе изменить размер программного RAID, чтобы использовать свободное пространство перед и после существующих разделов.

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

У меня есть программный RAID на Linux с четырьмя дисками, настроенный как RAID5:

$ lsblk
NAME     MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINTS
sda        8:0    0  3.6T  0 disk  
└─sda6     8:6    0  3.6T  0 part  
  └─md10   9:10   0 10.8T  0 raid5 /mnt/volume0
sdb        8:16   0  3.6T  0 disk  
└─sdb6     8:22   0  3.6T  0 part  
  └─md10   9:10   0 10.8T  0 raid5 /mnt/volume0
sdc        8:32   0  3.6T  0 disk  
└─sdc6     8:38   0  3.6T  0 part  
  └─md10   9:10   0 10.8T  0 raid5 /mnt/volume0
sdd        8:48   0  3.6T  0 disk  
└─sdd6     8:54   0  3.6T  0 part  
  └─md10   9:10   0 10.8T  0 raid5 /mnt/volume0

/dev/md10 отформатирован в XFS. Ранее на этих дисках были другие разделы/данные, которые я удалил, отсюда имена разделов sdX6.

$ /sbin/cfdisk -r

                                 Disk: /dev/sda
            Size: 3.64 TiB, 4000787030016 bytes, 7814037168 sectors
          Label: gpt, identifier: 7C1B7075-38E8-40E0-A382-D960F5AA85A8

    Device            Start         End     Sectors   Size Type
>>  Free space         2048    50008063    50006016  23.8G                      
    /dev/sda6      50008064  7796883455  7746875392   3.6T Microsoft basic data
    Free space   7796883456  7814037134    17153679   8.2G

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

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

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

Введение в управление и настройку RAID-настроек может быть сложной задачей, особенно в Linux-системах, таких как ваш случай с программным RAID5 на четырёх дисках. Задача состоит в том, чтобы неразрушающе изменить размер RAID-массива, чтобы он использовал всё доступное дисковое пространство, включая свободное пространство до и после существующих разделов. Рассмотрим эту задачу подробней.

Теория

RAID5 — это конфигурация, обеспечивающая избыточность данных путём чередования их по нескольким дискам с добавлением информации о чётности. Это позволяет системам продолжать работать в случае отказа одного из дисков. В вашем случае вы используете Linux Software RAID (mdadm) с файловой системой XFS, которая хорошо справляется с большими объёмами данных и поддерживает динамическое увеличение без разрушения данных.

Основная задача состоит в том, чтобы расширить существующие RAID-разделы, используя оставшееся неразмеченным свободное пространство. Это предполагает изменения в таблице разделов (GPT — GUID Partition Table) и увеличение размера RAID-массива, а также расширение файловой системы XFS для использования нового пространства.

Пример

Допустим, у вас есть RAID5 массив на четырёх дисках, и вы хотите расширить его без разрушения текущих данных. Вот шаги, которые теоретически помогут выполнить вашу задачу:

  1. Изменение размеров разделов:
    Чтобы управлять совокупным дисковым пространством, сначала необходимо отредактировать таблицы разделов на каждом диске (например, с использованием gdisk или parted) для максимального расширения существующих RAID-разделов. Это увеличит размер каждого раздела до полного использования дополнительных 23.8G и 8.2G на каждом диске.

  2. Пересборка RAID массива:
    После изменения размеров разделов перезапустите процесс сборки RAID, чтобы включить дополнительные области в массив с помощью mdadm. Это увеличит размер RAID5, сохранив целостность и резервное копирование данных.

  3. Расширение файловой системы:
    Затем расширьте файловую систему XFS; вам понадобится xfs_growfs, который позволяет увеличивать файлы XFS без необходимости в размонтировании.

Применение

Теперь перейдём к практическому применению этих шагов:

  1. Подготовка:

    • Убедитесь, что у вас есть действительная резервная копия всех данных, даже если процесс должен быть неразрушающим. Таким образом, вы обезопасите свои данные.
    • Проверьте здоровье существующего массива и отсутствие ошибок с помощью команд mdadm --detail /dev/md10.
  2. Изменение размеров разделов:

    • Используя parted, измените размеры каждого из разделов на ваших дисках:
      parted /dev/sda
      (parted) resizepart 6 100%
      (parted) quit

      Это сделает то же для /dev/sdb, /dev/sdc, и /dev/sdd.

  3. Пересборка массива:

    • После изменения размеров, перезапустите процессы сборки массива:
      mdadm --grow /dev/md10 --size=max
  4. Расширение файловой системы:

    • Увеличьте размер файловой системы, чтобы она использовала новый размер RAID:
      xfs_growfs /mnt/volume0

Завершение

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

Эти инструкции могут слегка варьироваться в зависимости от конфигурации вашей системы, версий ПО и конкретных обстоятельств. Будьте внимательны на каждом этапе и уточняйте команды, исходя из особенностей вашей Linux-системы.

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

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