Відповіді:
Якщо ви можете домовитись, щоб логічний том був у окремому підмножині фізичних томів від решти групи вихідних томів (це 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 до 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
Потім створіть із lv1
використання дзеркальну пару RAID 1 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
Потім розділіть дзеркало. Новий НН зараз 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.