Ответы:
Если вы можете сделать так, чтобы логический том находился в отдельном подмножестве физических томов от остальной части исходной группы томов ( 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 для создания согласованной копии: сначала сделайте снимок исходного lv с помощью lvcreate -s, а затем скопируйте снимок.
dd(если вы не спешите сбрасывать старые тома), не забудьте изменить UUID новых файловых систем: tune2fs -U random / dev / targetvg / targetlv
pvmove -n lvol1 /dev/sdb1 /dev/sdc1
pvmove может перемещать данные между физическими томами: Руководство администратора LVM
vgextendvg1 с новым pv, затем pvmoveваш lv в новый pv, vgsplitвременный vg, который вы vgmergeв vg2. Затем pvmoveснова lv to vg2 оригинальный pv, vgreducevg2, чтобы прочитать промежуточный pv. Или чтобы избежать промежуточной копии, вы можете просто сначала объединить vg1 в vg2, pvmovelv1 и vgsplitснова vg1 из vg2. Это должно ответить на возражения @ MattBianco и @kissgyorgy и эквивалентно решению @Gilles , но заменяя снимок и низкоуровневых ddнаpvmove
По состоянию на LVM в Debian участке (9.0), а именно 2.02.168-2, это возможно сделать копию логического тома по группам томов , используя комбинацию vgmerge, lvconvertи vgsplit. Поскольку перемещение представляет собой комбинацию копии и удаления, это также будет работать для перемещения.
Кроме того, вы можете использовать, pvmoveчтобы просто переместить громкость.
Полный автономный пример сеанса с использованием петлевых устройств и далее
lvconvert.
Резюме: мы создаем группу томов vg1с логическим томом lv1, а vg2также lv2и делаем копию lv1в 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на /dev/loop1и /dev/loop2
соответственно.
vgcreate vg1 /dev/loop1
vgcreate vg2 /dev/loop2
Создайте логические тома lv1и lv2на 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на /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
Сделать 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.