Назад | Перейти на главную страницу

Внутренняя ошибка LVM: сегменты LV повреждены после добавления полосы в LV raid5

Я пытаюсь смоделировать плановое обновление системы хранения. Для этого я воссоздал установку с меньшими дисками в виртуальной машине.

Подготовка

Отправной точкой является LV с raid5, 2 полосами на 3 PV и кэшированием на одном PV, настроенный следующим образом:

pvcreate / dev / sdd / dev / sde / dev / sdf vgcreate vg01 / dev / sdd / dev / sde / dev / sdf lvcreate -n origin_lv -l 8180 -i 2 --type raid5 vg01 \ / dev / sdd / dev / sde / dev / sdf

что приводит к VG с raid5 на 3 устройствах. Затем я сделал это, чтобы создать тома кеша:

pvcreate /dev/sdc1
vgextend vg01 /dev/sdc1
lvcreate -n origin_lv_cache -L 10G vg01 /dev/sdc1


pvcreate /dev/sdc2
vgextend vg01 /dev/sdc2
lvcreate -n origin_lv_cache_meta -L 1G vg01 /dev/sdc2

это для создания пула кешей:

lvconvert \
   --type cache-pool \
   --poolmetadata vg01/origin_lv_cache_meta \
   vg01/origin_lv_cache

и прикрепил его к исходному LV:

lvconvert \
     --type cache \
     --cachepool vg01/origin_lv_cache \
     vg01/origin_lv

>>>> output: "Logical volume vg01/origin_lv is now cached"

Затем я использую luksFormat и mkfs, в результате чего получается отлично монтируемая файловая система.

Эта проблема

Теперь я хочу добавить емкость. Для этого я пробовал следующее:

lvconvert --splitcache vg01/origin_lv

убрать кеширование. Это синхронизирует все, от кеша до фактического LV, тогда я могу сделать это:

pvcreate /dev/sdg 
vgextend vg01 /dev/sdg

чтобы добавить новый PV, затем:

lvconvert --stripes 3 vg01 / origin_lv [все предыдущие устройства] [новое устройство]

в результате, как и ожидалось, у LV будет на 50% больше места. Теперь я попытался повторно подключить кеш и даже удалить тома кеша и воссоздать их, но когда я пытаюсь повторно подключить его к фактическому LV, я получаю следующее:

lvconvert \
    --type cache-pool \
    --poolmetadata vg01/origin_lv_cache_meta \
    vg01/origin_lv_cache

вывод:

Do you want wipe existing metadata of cache pool vg01/origin_lv_cache? [y/n]: y
  LV origin_lv, segment 1 invalid: reshape for cache segment.
  Internal error: LV segments corrupted in origin_lv.

Однако я могу монтировать и читать / записывать базовый LV просто отлично, просто не получается повторно подключить кеш.

любые идеи, что мне здесь не хватает?

Как оказалось, fsresize не знает о базовом статусе синхронизации. Использование lvs для проверки статуса синхронизации и ожидание 100% синхронизации, затем изменение размера работало нормально.