Ответы:
Если вы можете сделать так, чтобы логический том находился в отдельном подмножестве физических томов от остальной части исходной группы томов ( 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
vgextend
vg1 с новым pv, затем pvmove
ваш lv в новый pv, vgsplit
временный vg, который вы vgmerge
в vg2. Затем pvmove
снова lv to vg2 оригинальный pv, vgreduce
vg2, чтобы прочитать промежуточный pv. Или чтобы избежать промежуточной копии, вы можете просто сначала объединить vg1 в vg2, pvmove
lv1 и 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.