Mantıksal bir birimi bir birim grubundan diğerine taşıma


18

Mantıksal bir hacmi bir birim grubundan diğerine bir bütün olarak taşımak mümkün müdür?

(Daha fazla veya daha az) eşleşen bir lv oluşturmak ve verileri kopyalamak mümkündür, ancak bunu tek başına LVM araçlarıyla yapmanın herhangi bir yolu var mı?

Değilse, teorik bir neden veya teknik bir sınırlama var mı (boyut boyutları)?

Yanıtlar:


13

Bir hacim grubu tüm fiziksel hacimlerden oluşur. Fiziksel bir hacim birçok uzantıdan oluşur (bir kapsam genellikle 4 MB'dir); her bir kapsam farklı bir mantıksal hacme ait olabilir. Mantıksal bir birimi farklı bir gruba aktarmak için, uzantıları aktaramazsınız, çünkü bu fiziksel hacmi kaynak VG ile hedef VG arasında bölebilir.

Yapabileceğiniz şey, vgsplitkomutla VG kaynağından hedef VG'ye bir veya daha fazla PV aktarmaktır . Hangi PV'leri aktarmak istediğinizi veya hangi LV'leri (ancak her seferinde yalnızca bir tane) belirtebilirsiniz. Bir LV belirtirseniz, bu ve kaynak VG'deki diğer LV'ler ayrı PV'lerde olmalıdır. Belirtilen ada sahip bir VG yoksa hedef VG oluşturulur.

vgsplit -n source_group/volume_to_copy source_group target_group
vgsplit source_group target_group /dev/sdy99 /dev/sdz99

pvmoveTaşımak istediğiniz mantıksal hacimleri ayrı PV'lerde olacak şekilde ayarlamak için önce kullanmanız gerekebilir .

VG'nin fiziksel sınırlarını korumak ve verileri taşımak istiyorsanız, yerleşik bir araç yoktur, ancak bir ayna yapabilir ve orijinali kaldırabilirsiniz .


Target_group önceden var olan bir grup olabilir mi?
XTL

8

Yani 2.02.168-2 Debian streç (9.0) 'de LVM gibi, bir arada kullanarak ses grupları arasında mantıklı bir hacimde bir kopyasını yapmak mümkündür vgmerge, lvconvertve vgsplit. Bir taşıma, bir kopya ile silme işleminin bir kombinasyonu olduğu için, bu da bir taşıma için işe yarayacaktır.

Alternatif olarak, pvmoveyalnızca sesi taşımak için kullanabilirsiniz .

Döngü cihazları ve eksiksz kendine yeten bir örnek oturumu lvconvertizler.

Özet: Biz hacim grubu oluşturmak vg1mantıksal hacmi ile lv1ve vg2ile lv2ve bir kopyasını lv1içinde vg2.

Dosya oluşturun.

truncate pv1 --size 100MB
truncate pv2 --size 100MB

Dosyalarda döngü aygıtları ayarlayın.

losetup /dev/loop1 pv1
losetup /dev/loop2 pv2

Loop cihazlarında fiziksel birimler oluşturun (LVM tarafından kullanılmak üzere loop cihazlarını başlatın).

pvcreate /dev/loop1 /dev/loop2

/ Dev / loop1 ve / dev / loop2 üzerinde sırasıyla vg1 ve vg2 birim grupları oluşturun.

vgcreate vg1 /dev/loop1
vgcreate vg2 /dev/loop2

Vg1 ve vg2 üzerinde sırasıyla lv1 ve lv2 mantıksal hacimlerini oluşturun.

lvcreate -L 10M -n lv1 vg1
lvcreate -L 10M -n lv2 vg2

Lv1 ve lv2'de ext4 dosya sistemleri oluşturun.

mkfs.ext4 -j /dev/vg1/lv1
mkfs.ext4 -j /dev/vg2/lv2

İsteğe bağlı olarak, daha sonra kopyanın doğru oluşturulup oluşturulmadığını kontrol etmek için lv1 üzerine bir şeyler yazın. Vg1'i devre dışı bırakın.

vgchange -a n vg1

Birleştirme komutunu test modunda çalıştırın. Bu, vg1'i vg2 ile birleştirir.

vgmerge -A y -l -t -v <<destination-vg>> <<source-vg>>
vgmerge -A y -l -t -v vg2 vg1

Ve sonra gerçek için.

vgmerge -A y -l -v vg2 vg1

Ardından kullanarak bir RAID 1 ayna çifti lv1oluşturun lvconvert. dest-pvArgüman anlatır lvconvertayna kopyasını yapmak için /dev/loop2.

lvconvert --type raid1 --mirrors 1 <<source-lv>> <<dest-pv>>
lvconvert --type raid1 --mirrors 1 /dev/vg2/lv1 /dev/loop2

Sonra aynayı ayırın. Yeni LV şimdi lv1_copy.

lvconvert --splitmirrors 1 --name <<source-lv-copy>> <<source-lv>>
lvconvert --splitmirrors 1 --name lv1_copy /dev/vg2/lv1

Devre vg2/lv1dışı bırak.

lvchange -a n /dev/vg2/lv1

Sonra (test modu)

vgsplit -t -v <<source-vg>> <<destination-vg>> <<moved-to-pv>>
vgsplit -t -v /dev/vg2 /dev/vg1 /dev/loop1

Gerçek için

vgsplit -v /dev/vg2 /dev/vg1 /dev/loop1

Ortaya çıkan çıktı:

lvs
[...]
lv1        vg1       -wi-a-----  12.00m
lv1_copy   vg2       -wi-a-----  12.00m
lv2        vg2       -wi-a-----  12.00m

NOTLAR:

1) Bu komutların çoğunun root olarak çalıştırılması gerekir.

2) İki birim grubundaki mantıksal birimlerin adlarının herhangi bir kopyası varsa, vgmerge devam etmeyi reddeder.

3) Birleştirme vg1işleminde , mantıksal birimler devre dışı olmalıdır. Ve bölünmüş durumda, vg2ait olan mantıksal hacimler vg1inaktif olmalıdır. Bizim durumumuzda, bu lv1.


2

Kendi teklifimi sunacağım:

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/

her şey yolundaysa kaynağı kaldırın

lvremove vgsource/lv0

Bu sorunun tam tersi. Mesele, verileri yeni bir tanesine kopyalamak yerine birimi taşımaktır.
XTL
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.