LINUX.ORG.RU
решено ФорумAdmin

LVM: как переместить PE в пределах PV?


0

1

Доброго времени суток.

Сабж. В LV в 2 PV, один из низ забит полностью, на другом много мелких дисков и между ними свободное пространство, например:

  Physical extent 48 to 67:
    Logical volume      /dev/vgjb/lvgeek_log
    Logical extents     0 to 19
  Physical extent 68 to 77:
    FREE
  Physical extent 78 to 85:
    Logical volume      /dev/vgjb/lvshaman007
    Logical extents     0 to 7

При попытке переместить PE в пределах PV получаю

jb:~# pvmove /dev/md3:78-85 /dev/md3:68-75
  No extents available for allocation

Если добавить -vvv, можно увидеть, что свободные экстенты PE он ищет на другом PV из той же VG и не находит.

Есть ли способ обойти эту глупую проверку, или самым простым решением будет добавление временного диска, через который и пойдёт перемещение в 2 этапа (на временный диск, затем обратно, но на другие PE)?

Да, я понимаю, что свободное пространство в VG, хоть и разбито на мелкие куски, может быть объединено в один большой LV, но хочется сделать красиво

★★★★★

Вопрос скорее теоретический, т.к. я уже создал в tmpfs файл, соответствующее блочное loop устройство и успешно перенёс несколько логических дисков

router ★★★★★
() автор топика
Ответ на: комментарий от router

Сделал так:

1) файл подходящего размера в /dev/shm/. PVs на 2 ГиБ мне хватало, цифра 10 МиБ была взята с потолка, должно было хватить и 1 дополнительного МиБ.

# dd if=/dev/zero of=/dev/shm/pvtmp bs=1M count=$((1024*2+10))

2) создаю соответствующее блочное устройство

# losetup -f
/dev/loop0
# losetup /dev/loop0 /dev/shm/pvtmp

3) pvcreate, vgextend. Думаю, подробностей не требуется

4) перенос:

pvmove /dev/md3:78-85 /dev/loop0  && pvmove /dev/loop0:0-7 /dev/md3:68-75

5) проверка через pvdisplay -m, lvdisplay -m

6) vgreduce, pvremove, losetup -d

router ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.