VK Private Cloud logo
Помощь
Обновлена 21 августа 2026 г. в 11:12

Замена сбойного LLD-диска

Диагностика

  1. Подключитесь к вычислительному узлу, на котором вышел из строя диск (подробнее — в разделе Подключение к вычислительному узлу).

  2. Определите проблемный диск. Для этого можно воспользоваться утилитой dmesg или любым другим доступным средством диагностики.

    Пример вывода команды dmesg:

    [90265.248679] md: super_written gets error=-5[90265.248689] md/raid1:mdX: Disk failure on dm-6, disabling device.               md/raid1:mdX: Operation continuing on 1 devices.
  3. Проверьте текущий статус логических томов (Logical Volume):

    # lvs

    Пример вывода:

    WARNING: Couldn't find device with uuid fk2sWk-yvsL-NlHy-hSI9-55sD-jDm9-L6iep3.WARNING: VG kvm-vg is missing PV fk2sWk-yvsL-NlHy-hSI9-55sD-jDm9-L6iep3 (last written to /dev/sdb1).LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertcinder_state_dir kvm-vg rwi-aor-p- 60.00g 100.00volume-12582874-3a9f-4af0-9aca-1cb10ec7480a kvm-vg Rwi-aor-p- 10.00g 100.00volume-e01eab6b-669a-4185-85f5-f213f64fe3c4 kvm-vg Rwi-a-r-p- 4.00g 100.00

Замена диска

  1. Подключитесь к управляющему узлу (подробнее — в разделе Подключение к управляющему узлу).

  2. Отключите сервис cinder-volume для ef-nvme на узле, на котором находится сбойный диск:

    # openstack volume service set --disable <УЗЕЛ> cinder-volume

    Здесь <УЗЕЛ> — вычислительный узел со сбойным диском.

  3. Проверьте, что сервис cinder-volume на нужном вычислительном узле отключен:

    # openstack volume service list

    Пример вывода:

    +------------------+---------------------+------+----------+-------+----------------------------+| Binary           | Host                | Zone | Status   | State | Updated At                 |+------------------+---------------------+------+----------+-------+----------------------------+| cinder-scheduler | cpn001              | nova | enabled  | up    | 2026-03-25T14:36:08.000000 || cinder-volume    | rbd:volumes:c1@ceph | AZ1  | enabled  | up    | 2026-03-25T14:36:06.000000 || cinder-backup    | cpn001              | nova | enabled  | up    | 2026-03-25T14:36:11.000000 || cinder-volume    | kcn001@ef-nvme      | AZ1  | disabled | up    | 2026-03-25T14:36:09.000000 || cinder-volume    | kcn002@ef-nvme      | AZ1  | enabled  | up    | 2026-03-25T14:36:07.000000 |+------------------+---------------------+------+----------+-------+----------------------------+
  4. С помощью сервиса storeman выполните автоматическую миграцию всех виртуальных машин с дисками LLD на другие вычислительные узлы:

    # source openrc-storeman.sh
  5. Проверьте статус миграции дисков:

    # storeman-client-3 status

    Пример вывода:

    Summary:Evacuating hosts: 0Migration tasks: 1Rejected migrations: 0Filters:Blacklisted projects:Blacklisted VMs:Blacklisted targets:LLD handler: enabledPlanned migrations: 1Success migrations: 0Failed migrations: 0Rejected migrations: 0Planned LLD migration: 12582874-3a9f-4af0-9aca-1cb10ec7480aVolume migration: 12582874-3a9f-4af0-9aca-1cb10ec7480aSize: 10Migration running: TrueTask status: Migration is running [1]From host: kcn001@ef-nvme#ef-nvmeTo host: kcn002@ef-nvme#ef-nvme
  6. Проверьте, что миграция дисков выполнена:

    # for i in $(openstack volume list --all --long -f json | jq -r '.[] | select (.Type == "ef-nvme" and .Status == "in-use").ID'); do openstack volume show -f value -c os-vol-host-attr:host -c status $i | grep -q kcn001@ef-nvme#ef-nvme && echo $i; done

    Вывод команды должен быть пустым.

  7. Замените сбойный диск.

  8. Подключитесь к вычислительному узлу.

  9. С помощью команд dmesg или lsblk убедитесь, что новый диск подключен к вычислительному узлу.

    Пример вывода команды lsblk:

    NAME                                                                  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTSsda                                                                     8:0    0   50G  0 disk├─sda1                                                                  8:1    0    2G  0 part /boot└─sda2                                                                  8:2    0   48G  0 part /sdc                                                                     8:32   0  600G  0 disk└─sdc1                                                                  8:33   0  600G  0 part  ├─kvm--vg-cinder_state_dir_rmeta_1                                  253:2    0    4M  0 lvm   │ └─kvm--vg-cinder_state_dir                                        253:4    0   60G  0 lvm  /mnt/cinder  ├─kvm--vg-cinder_state_dir_rimage_1                                 253:3    0   60G  0 lvm   │ └─kvm--vg-cinder_state_dir                                        253:4    0   60G  0 lvm  /mnt/cinder  ├─kvm--vg-volume--12582874--3a9f--4af0--9aca--1cb10ec7480a_rmeta_1  253:7    0    4M  0 lvm   │ └─kvm--vg-volume--12582874--3a9f--4af0--9aca--1cb10ec7480a        253:9    0   10G  0 lvm   ├─kvm--vg-volume--12582874--3a9f--4af0--9aca--1cb10ec7480a_rimage_1 253:8    0   10G  0 lvm   │ └─kvm--vg-volume--12582874--3a9f--4af0--9aca--1cb10ec7480a        253:9    0   10G  0 lvm   ├─kvm--vg-volume--e01eab6b--669a--4185--85f5--f213f64fe3c4_rmeta_1  253:15   0    4M  0 lvm   │ └─kvm--vg-volume--e01eab6b--669a--4185--85f5--f213f64fe3c4        253:17   0    4G  0 lvm   └─kvm--vg-volume--e01eab6b--669a--4185--85f5--f213f64fe3c4_rimage_1 253:16   0    4G  0 lvm     └─kvm--vg-volume--e01eab6b--669a--4185--85f5--f213f64fe3c4        253:17   0    4G  0 lvm sdd                                                                     8:48   0   10G  0 disk├─sdd1                                                                  8:49   0    3G  0 part├─sdd14                                                                 8:62   0    4M  0 part├─sdd15                                                                 8:63   0  106M  0 part└─sdd16                                                               259:0    0  913M  0 partsde                                                                     8:64   0  600G  0 disksr0                                                                    11:0    1  478K  0 rom

    Здесь sde — новый диск.

  10. Удалите сбойный диск из Volume Group (VG):

    # vgreduce --removemissing --force kvm-vg

    Пример вывода:

    WARNING: Couldn't find device with uuid fk2sWk-yvsL-NlHy-hSI9-55sD-jDm9-L6iep3.WARNING: VG kvm-vg is missing PV fk2sWk-yvsL-NlHy-hSI9-55sD-jDm9-L6iep3 (last written to /dev/sdb1).WARNING: Couldn't find device with uuid fk2sWk-yvsL-NlHy-hSI9-55sD-jDm9-L6iep3.WARNING: Couldn't find device with uuid fk2sWk-yvsL-NlHy-hSI9-55sD-jDm9-L6iep3.WARNING: Couldn't find device with uuid fk2sWk-yvsL-NlHy-hSI9-55sD-jDm9-L6iep3.WARNING: Couldn't find device with uuid fk2sWk-yvsL-NlHy-hSI9-55sD-jDm9-L6iep3.Wrote out consistent volume group kvm-vg.

Разметка нового диска

  1. Подключитесь к деплой-ноде по SSH (подробнее — в разделе Подключение к деплой-ноде).

  2. Для разметки нового диска получите и сохраните значения переменных:

    # grep -rE '(cinder_hiops_parts_per_disk:|cinder_hiops_gpt_align:|cinder_hiops_part_type:|cinder_hiops_use_lvm_mirrors:|lvm_mirrors_count:)' ./inventory
  3. Подключитесь к вычислительному узлу, на котором был заменен диск.

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

    1. Присвойте значение переменной cinder_hiops_parts_per_disk (количество разделов на диске). Пример:

      # cinder_hiops_parts_per_disk=1
    2. Присвойте значение переменной cinder_hiops_gpt_align (выравнивание разделов). Пример:

      # cinder_hiops_gpt_align=2048
    3. Присвойте значение переменной diskname (название нового диска). Пример:

      # diskname=sde
    4. Присвойте значение переменной cinder_hiops_part_type (тип раздела). Пример:

      # cinder_hiops_part_type=8E00
    5. Присвойте значение переменной SIZE_S (доступный размер диска в секторах):

      # SIZE_S=$(( $(cat /sys/block/$diskname/size) - 2 * $cinder_hiops_gpt_align ))
    6. Присвойте значение переменной PART_SIZE (размер раздела в секторах):

      # PART_SIZE=$(( ${SIZE_S} / $cinder_hiops_parts_per_disk ))
    7. Сделайте значение переменной PART_SIZE кратным значению cinder_hiops_gpt_align:

      # PART_SIZE=$(( ${PART_SIZE} - ( ${PART_SIZE} % $cinder_hiops_gpt_align ) ))
  5. Удалите таблицы разделов на диске:

    # /sbin/sgdisk --zap /dev/$diskname
  6. Запустите скрипт разметки диска:

    # for n in $(seq 1 $cinder_hiops_parts_per_disk); do /sbin/sgdisk --new=${n}:0:+${PART_SIZE} -t ${n}:$cinder_hiops_part_type --mbrtogpt -- /dev/$diskname; done
  7. Проверьте, что разделы создались:

    # lsblk | grep $diskname | grep part
  8. Создайте Physical Volume (PV) из нового диска:

    # pvcreate /dev/${diskname}1

    Пример вывода:

    Physical volume "/dev/sde1" successfully created.
  9. Добавьте новый PV в Volume Group (VG):

    # vgextend kvm-vg /dev/${diskname}1

    Ожидаемый вывод:

    Volume group "kvm-vg" successfully extended

Восстановление реплики

  1. Определите список LV с потерей реплики:

    # lvs

    Пример вывода:

    LV                                          VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertcinder_state_dir                            kvm-vg rwi-aor-r- 60.00g                                    100.00         volume-12582874-3a9f-4af0-9aca-1cb10ec7480a kvm-vg Rwi-aor-r- 10.00g                                    100.00         volume-e01eab6b-669a-4185-85f5-f213f64fe3c4 kvm-vg Rwi-a-r-r-  4.00g                                    100.00

    Здесь LV с потерей реплики — том с атрибутом r в предпоследней позиции в столбце Attr.

  2. Запустите восстановление для каждого тома с потерей реплики:

    # lvconvert -y --repair kvm-vg/<ИМЯ_ТОМА>

    Пример вывода:

    Faulty devices in kvm-vg/volume-12582874-3a9f-4af0-9aca-1cb10ec7480a successfully replaced.
  3. С помощью команды lvs проверьте, что началась синхронизация. Пример вывода:

    LV                                          VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert cinder_state_dir                            kvm-vg rwi-aor--- 60.00g                                    11.06          volume-12582874-3a9f-4af0-9aca-1cb10ec7480a kvm-vg Rwi-aor--- 10.00g                                    22.65          volume-e01eab6b-669a-4185-85f5-f213f64fe3c4 kvm-vg Rwi-a-r---  4.00g                                    22.02

    Атрибута r нет, а значения в столбце Cpy%Sync говорят о том, что синхронизация началась.

  4. Включите сервис cinder-volume, чтобы вернуть вычислительный узел в работу с LLD.

Была ли статья полезна?