Відповіді:
Об'ємна група складається з цілих фізичних томів. Фізичний об'єм складається з багатьох розширень (розмір, як правило, становить 4 МБ); кожен ступінь може належати до іншого логічного обсягу. Щоб перенести логічний том в іншу групу, ви не можете просто передати розширення, оскільки це може розділити фізичний об'єм між джерелом VG та цільовим VG.
Що ви можете зробити, це перенести один або кілька ПВ від вихідного VG до цільового VG за допомогою vgsplit
команди. Ви можете вказати, які ПВ ви хочете передати, або які НН (але лише по одному). Якщо ви вказали НН, то він та інші НН у вихідному VG повинні бути на окремих ПВ. VG пункту призначення буде створено, якщо VG із вказаним іменем не існує.
vgsplit -n source_group/volume_to_copy source_group target_group
vgsplit source_group target_group /dev/sdy99 /dev/sdz99
Можливо, вам потрібно спочатку скористатися, pvmove
щоб організувати, щоб логічні томи, які ви хочете перемістити, були на окремих ПВ.
Якщо ви мали намір зберегти фізичні межі VG та перемістити дані, вбудованого інструменту немає, але ви можете зробити дзеркало та видалити оригінал .
Станом на 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 on / 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
Запустіть команду злиття в тестовому режимі. Це об'єднує vg1 у vg2.
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
.
dest-pv
Аргумент каже , lvconvert
щоб зробити дзеркальну копію на /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/lv1
неактивним.
lvchange -a n /dev/vg2/lv1
Потім (тестовий режим)
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) При злитті логічні томи в vg1
повинні бути неактивними. І на роздвоєнні логічні обсяги vg2
приналежності до vg1
повинні бути неактивними. У нашому випадку це так lv1
.
Я запропоную своє:
umount /somedir/
lvdisplay /dev/vgsource/lv0 --units b
lvcreate -L 12345b -n lv0 vgtarget
dd if=/dev/vgsource/lv0 of=/dev/vgtarget/lv0 bs=1024K conv=noerror,sync status=progress
mount /dev/vgtarget/lv0 /somedir/
якщо все добре, видаліть джерело
lvremove vgsource/lv0