Есть ли простой способ переместить / скопировать логический том из одной группы томов в другую? (Пакет lvm2)

я переставляю кучу дисков на моем сервере дома, и я нахожусь в положении, когда хочу переместить кучу логических томов LVM в другую группу томов. Есть ли простой способ сделать это? Я видел упоминание о cplv команда, но это, кажется, либо старый или не то, что когда-либо было доступно для Linux.

27
задан studiohack
10.01.2023 6:10 Количество просмотров материала 2842
Распечатать страницу

3 ответа

если логический том можно расположить в отдельном подмножестве физических томов от остальной части исходной группы томов (lvconvert sourcevg/sourcelv /dev/pv1 ... может помочь), можно использовать vgsplit разделить lv на новый vg и vgmerge для слияния нового vg с целевым vg.

хотя LVM имеет функцию зеркального отображения, вы не можете (разумно) использовать его для копирования между группами томов, потому что обе ноги зеркала должны жить на одном vg и ассоциации не может быть сломанный.

вы можете скопировать том LVM в другой, как вы бы скопировать любой том в другой: создать целевой lv соответствующего размера, а затем скопировать содержимое с dd if=/dev/sourcevg/sourcelv of=/dev/targetvg/targetlv bs=4M. Если исходный том активен, вы можете использовать LVM для создания согласованной копии: сначала сделайте снимок исходного тома с помощью lvcreate -s, затем скопировать снимок.

19
отвечен Gilles 2023-01-11 13:58
pvmove -n lvol1 /dev/sdb1 /dev/sdc1

pvmove может перемещать данные между физическим объемам: руководство администратора LVM

2
отвечен milan 2023-01-11 16:15

по состоянию на LVM в Debian stretch (9.0), а именно 2.02.168-2, это можно сделать копию логического тома в группах томов с помощью комбинация vgmerge,lvconvert и vgsplit. Так как движение является сочетание копии и удаления, это также будет работать для перемещения.

в качестве альтернативы, вы можете использовать pvmove просто перемещать громкости.

полный автономный пример сеанса с использованием петлевых устройств и lvconvert следующий.

резюме: мы создайте группу томов vg1 С логического тома lv1 и vg2 С lv2, и сделайте копию lv1 in vg2.

создать файлы.

truncate pv1 --size 100MB
truncate pv2 --size 100MB

настройка устройств петли на файлах.

losetup /dev/loop1 pv1
losetup /dev/loop2 pv2

создание физических томов на устройствах цикла (инициализация устройств цикла для использование LVM).

pvcreate /dev/loop1 /dev/loop2

создание группы томов vg1 и vg2 on /dev/loop1 и /dev/loop2 соответственно.

vgcreate vg1 /dev/loop1
vgcreate vg2 /dev/loop2

создать логический Тома lv1 и lv2 on vg1 и vg2 соответственно.

lvcreate -L 10M -n lv1 vg1
lvcreate -L 10M -n lv2 vg2

создать файловую систему ext4 на lv1 и lv2.

mkfs.ext4 -j /dev/vg1/lv1
mkfs.ext4 -j /dev/vg2/lv2

дополнительно, напишите что-нибудь на lv1 так что вы можете позже проверить копию правильно создан. Сделай vg1 неактивные.

vgchange -a n vg1

выполнить команду слияния в тестовом режиме. Это слияние lv1 на lv2.

vgmerge -A y -l -t -v <<destination-vg>> <<source-vg>>
vgmerge -A y -l -t -v vg2 vg1

а потом по-настоящему.

vgmerge -A y -l -v vg2 vg1

затем создайте RAID 1 зеркальная пара из lv1 используя lvconvert. Тот < аргумент> говорит lvconvert сделать зеркальную копию lv1_copy on /dev/loop2.

lvconvert --type raid1 --mirrors 1 <<source-lv>> <<dest-pv>>
lvconvert --type raid1 --mirrors 1 /dev/vg2/lv1 /dev/loop2

затем разбейте зеркало. Новый LV теперь lv1_copy.

lvconvert --splitmirrors 1 --name <<source-lv-copy>> <<source-lv>>
lvconvert --splitmirrors 1 --name lv1_copy /dev/vg2/lv1

Make vg2 неактивные.

vgchange -a n vg2

затем (в режиме тестирования)

vgsplit -t -v <<source-vg>> <<destination-vg>> <<moved-to-pv>>
vgsplit -t -v /dev/vg2 /dev/vg1 /dev/loop1

реальные

vgsplit -v /dev/vg2 /dev/vg1 /dev/loop1

результат:

lvs
[...]
lv1        vg1       -wi-a-----  12.00m
lv1_copy   vg2       -wi-a-----  12.00m
lv2        vg2       -wi-a-----  12.00m

Примечания:

1) Большинство этих команд должны быть Запуск от имени root.

2) при наличии дублирования имен логических томов в две группы томов, vgmerge откажется действовать.

3) о слиянии:

Logical volumes in `vg1` must be inactive

и на сплите:

Logical volume `vg2/lv1` must be inactive.
0
отвечен Faheem Mitha 2023-01-11 18:32

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх