Переміщення логічного тома з однієї групи томів в іншу


18

Чи можливо перемістити логічний том з однієї групи томів в іншу в цілому?

Можна створити (більше або менше) збіг lv та скопіювати дані, але чи можна це зробити лише за допомогою інструментів LVM?

Якщо ні, чи є теоретична причина чи технічне обмеження (розміри ступеня)?

Відповіді:


13

Об'ємна група складається з цілих фізичних томів. Фізичний об'єм складається з багатьох розширень (розмір, як правило, становить 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 та перемістити дані, вбудованого інструменту немає, але ви можете зробити дзеркало та видалити оригінал .


Здається, цільова група може бути попередньою?
XTL

8

Станом на 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.


2

Я запропоную своє:

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

Це майже протилежне питання. Сенс у тому, щоб перемістити обсяг замість копіювання даних до нового.
XTL
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.