ย้ายโลจิคัลวอลุ่มจากกลุ่มวอลุ่มหนึ่งไปยังกลุ่มอื่น


18

เป็นไปได้ไหมที่จะย้ายโลจิคัลวอลุ่มจากกลุ่มวอลุ่มหนึ่งไปยังกลุ่มอื่นโดยรวม?

เป็นไปได้หรือไม่ที่จะสร้างการจับคู่เลเวล (มากกว่าหรือน้อยกว่า) และคัดลอกข้อมูลไป แต่มีวิธีใดบ้างในการใช้เครื่องมือ LVM เพียงอย่างเดียว?

ถ้าไม่มีเหตุผลทางทฤษฎีหรือข้อ จำกัด ทางเทคนิค (ขนาดขอบเขต) หรือไม่?

คำตอบ:


13

กลุ่มวอลุ่มประกอบด้วยฟิสิคัลวอลุ่มทั้งหมด ฟิสิคัลวอลุ่มประกอบด้วยขอบเขตจำนวนมาก (โดยทั่วไปขอบเขตคือ 4MB) แต่ละขอบเขตอาจเป็นของโลจิคัลวอลุ่มที่แตกต่างกัน ในการถ่ายโอนโลจิคัลวอลุ่มไปยังกลุ่มอื่นคุณไม่สามารถถ่ายโอนส่วนขยายได้เนื่องจากอาจแยกฟิสิคัลวอลุ่มระหว่างแหล่งข้อมูล VG และเป้าหมาย VG

สิ่งที่คุณสามารถทำได้คือโอน PV หนึ่งตัวหรือมากกว่าจากแหล่ง VG ไปยังเป้าหมาย VG ด้วยvgsplitคำสั่ง คุณสามารถระบุ PVs ที่คุณต้องการถ่ายโอนหรือ LV ใด (แต่จะทีละหนึ่งรายการเท่านั้น) หากคุณระบุ LV มันและ LV อื่น ๆ ในแหล่ง VG ต้องอยู่ใน PVs แยกต่างหาก VG ปลายทางจะถูกสร้างขึ้นหากไม่มี VG ที่มีชื่อที่ระบุ

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

คุณอาจต้องใช้pvmoveก่อนเพื่อจัดการโลจิคัลวอลุ่มที่คุณต้องการย้ายไปเป็น PVs แยกกัน

ถ้าคุณหมายถึงการรักษาขอบเขตทางกายภาพของ VG และย้ายข้อมูลที่ไม่มีในตัวเครื่องมือ แต่คุณสามารถทำให้กระจกแล้วเอาต้นฉบับ


ดูเหมือนว่า target_group สามารถเป็นกลุ่มที่มีอยู่แล้วได้หรือไม่
XTL

8

ในฐานะของ LVM ใน Debian ยืด (9.0) คือ 2.02.168-2 มันเป็นไปได้ที่จะทำสำเนาของปริมาณตรรกะข้ามกลุ่มปริมาณการใช้การรวมกันของvgmerge, และlvconvert vgsplitเนื่องจากการย้ายเป็นการรวมกันของการคัดลอกและการลบการทำเช่นนี้จึงเหมาะสำหรับการย้าย

หรือคุณสามารถใช้pvmoveเพื่อย้ายระดับเสียง

เซสชันตัวอย่างแบบสมบูรณ์ในตัวเองโดยใช้อุปกรณ์วนรอบและ lvconvertตามมา

สรุป: เราสร้างกลุ่มปริมาณvg1ที่มีปริมาณตรรกะlv1และvg2ด้วยlv2และทำสำเนาของในlv1vg2

สร้างไฟล์

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

เรียกใช้คำสั่งผสานในโหมดทดสอบ สิ่งนี้จะรวม 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

แล้วสร้างกระจกคู่ RAID 1 จากการใช้ lv1 อาร์กิวเมนต์บอกทำสำเนากระจกบนlvconvertdest-pvlvconvert/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) คำสั่งเหล่านี้ส่วนใหญ่จะต้องถูกเรียกใช้ในฐานะรูท

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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.