Содержание

Перенос XCP-ng на RAID 1 и обновление до 8 версии

Устанавливал XCP, когда она была ещё XenServer. В то время штатной возможности установки на RAID не было. Теперь XCP умеет устанавливаться на RAID-1 и загружаться с него. Пора обновиться с 7.6 на 8.0 и заодно перетащить систему на зеркало.

XCP установлена на sda. Хранилище виртуалок: sda3 и sdb1 в RAID-10, sda7 и sdb2 в RAID-0.

shell-session

# parted /dev/sda print
Number  Start   End     Size    File system     Name  Flags
 5      1049kB  4296MB  4295MB  ext3
 2      4296MB  23.6GB  19.3GB  ext3
 1      23.6GB  43.0GB  19.3GB  ext3
 4      43.0GB  43.5GB  537MB                         bios_grub, legacy_boot
 6      43.5GB  44.6GB  1074MB  linux-swap(v1)
 3      44.6GB  2500GB  2455GB
 7      2500GB  3001GB  501GB

shell-session

# parted /dev/sdb print
Number  Start   End     Size    File system  Name  Flags
 1      44.6GB  2500GB  2455GB
 2      2500GB  3001GB  501GB

shell-session

# cat /proc/mdstat
Personalities : [raid10] [raid0]

md2 : active raid0 sda7[1] sdb2[0]
      977457152 blocks super 1.2 512k chunks

md1 : active raid10 sda3[2] sdb1[0]
      2397758464 blocks super 1.2 512K chunks 2 offset-copies [2/2] [UU]
      bitmap: 2/18 pages [8KB], 65536KB chunk

Запускаем xsconsole. Заходим в Backup, Restore and update -> Backup Virtual Machine Metadata. Выбираем хранилище и сохраняем метаданные виртуальных машин. Можно из флешки создать локальное хранилище и сохранить на него. Можно сохранять конфигурацию через xe-backup-metadata.

Останавливаем сервер. Подключаем новую пару дисков, отключаем старую. Загружаемся в режиме BIOS с установочного диска или флешки.
Установка проходит, как обычно, только вместо выбора диска нужно в меню Software RAID выбрать пару дисков.

XCP-ng RAID install
Установка на RAID 1

После успешной установки подключаем старую пару дисков и загружаемся вместе с ней. Новая пара дисков будет выглядеть примерно так:

shell-session

# parted /dev/md127 print
Model: Linux Software RAID Array (md)
Disk /dev/md127: 250GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: pmbr_boot

Number  Start   End     Size    File system     Name  Flags
 5      1049kB  4296MB  4295MB  ext3
 2      4296MB  23.6GB  19.3GB
 1      23.6GB  43.0GB  19.3GB  ext3
 4      43.0GB  43.5GB  537MB                         bios_grub, legacy_boot
 6      43.5GB  44.6GB  1074MB  linux-swap(v1)
 3      44.6GB  250GB   205GB                   sr-1

shell-session

# cat /proc/mdstat
Personalities : [raid1]

md127 : active raid1 sdb[1] sda[0]
      244198400 blocks super 1.0 [2/2] [UU]
      bitmap: 2/2 pages [8KB], 65536KB chunk

Сначала нужно восстановить все старые хранилища. Если хранилище размещалось на RAID, то собираем сначала его. Рассмотрим восстановление одного хранилища.

Ищем идентификатор хоста:

shell-session

# xe host-list
uuid ( RO)                : 208cd3c1-6a1b-4062-b3e0-735b0c374cb2

Ищем идентификатор хранилища:

shell-session

# pvscan
PV /dev/mapper/storage2   VG VG_XenStorage-f25ac47f-f6dd-5a74-f520-650d087907c1   lvm2 [932.16 GiB / >387.15 GiB free]
PV /dev/mapper/storage1   VG VG_XenStorage-148b4f48-3d4d-7cd1-ddbc-a7ee7972f313   lvm2 [2.23 TiB / 543.16 GiB free]

В моём случае это f25ac47f-f6dd-5a74-f520-650d087907c1 и 148b4f48-3d4d-7cd1-ddbc-a7ee7972f313. Для примера возьмём второй:

shell-session

# xe sr-introduce uuid=148b4f48-3d4d-7cd1-ddbc-a7ee7972f313 type=lvm content-type=user name-label="LSR2 HDD R10"
# xe pbd-create host-uuid=208cd3c1-6a1b-4062-b3e0-735b0c374cb2 sr-uuid=148b4f48-3d4d-7cd1-ddbc-a7ee7972f313 device-config:device=/dev/mapper/storage1
# xe pbd-plug uuid=2e11c952-9da9-42e3-680a-ebf7a6e2a062

Аналогично восстанавливаем остальные хранилища, если имеются.

Далее запускаем xsconsole. Заходим в Backup, Restore and update -> Restore Virtual Machine Metadata. Выбираем хранилище и восстанавливаем метаданные виртуальных машин. Можно из флешки создать локальное хранилище и восстановить из него. Можно восстанавливать конфигурацию через xe-restore-metadata.

После этого должны появиться виртуальные машины. Можно запускать.

В параметрах загрузки GRUB настроена автосборка RAID массивов (rd.auto=1). Но в initramfs включен драйвер только для RAID-1. Поэтому системный RAID-1 автоматически собирался, а мои 10 и 0 на этапе загрузки не могли собраться и переходили в состояние inactive. А поэтому они не могли собраться и в загруженной системе по конфигурации из mdadm.conf.
Нужно сделать так, чтобы при загрузке ядра собирался только системный RAID-1.

Ищем идентификатор системного RAID:

shell-session

# mdadm --detail /dev/md127
/dev/md127:
           Version : 1.0
        Raid Level : raid1
              Name : localhost:127
              UUID : 2a284c09:a7ec68ec:f9b7e3ee:97b62ec8

Идём в /etc/grub.cfg, меняем параметр rd.auto=1 на rd.md.uuid=2a284c09:a7ec68ec:f9b7e3ee:97b62ec8. Перезагружаемся.

Системный RAID должен собраться при загрузке ядра. Остальные — при загрузке ОС по конфигурации из /etc/mdadm/mdadm.conf.

  1. XCP-ng new install features
  2. How to take Pool Metadata Backup on XenServer
  3. How to Back Up Virtual Machine Metadata to a USB Device
  4. How to Introduce a Local Storage Repository in XenServer
  5. Helpful SR CLI commands
  6. Centos 7 convert to software RAID 1