एक वॉल्यूम ग्रुप से दूसरे में लॉजिकल वॉल्यूम को स्थानांतरित करें


18

क्या पूरे खंड में एक मात्रा समूह से दूसरे में तार्किक आयतन संभव है?

यह एक (अधिक या कम) मिलान lv बनाने और डेटा को कॉपी करने के लिए संभव है, लेकिन क्या LVL टूल के साथ ऐसा करने का कोई तरीका है?

यदि नहीं, तो क्या कोई सैद्धांतिक कारण है या एक तकनीकी सीमा (सीमा आकार) है?

जवाबों:


13

एक वॉल्यूम समूह में पूरे भौतिक वॉल्यूम होते हैं। एक भौतिक मात्रा में कई विस्तार होते हैं (एक सीमा आमतौर पर 4 एमबी होती है); प्रत्येक सीमा भिन्न तार्किक आयतन से संबंधित हो सकती है। किसी भिन्न समूह में तार्किक आयतन को स्थानांतरित करने के लिए, आप केवल extents को स्थानांतरित नहीं कर सकते, क्योंकि स्रोत VG और लक्ष्य VG के बीच भौतिक आयतन को विभाजित कर सकता है।

आप क्या कर सकते हैं एक या एक से अधिक पीवी को स्रोत वीजी से vgsplitकमांड वीजी के साथ लक्ष्य वीजी में स्थानांतरित कर सकते हैं । आप निर्दिष्ट कर सकते हैं कि आप किस पीवी को स्थानांतरित करना चाहते हैं, या कौन से LV (लेकिन एक बार में केवल एक)। यदि आप एक LV निर्दिष्ट करते हैं, तो स्रोत VG में अन्य LVs अलग 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 पर जाने के लिए आप जिस तार्किक वॉल्यूम को ले जाना चाहते हैं, उसकी व्यवस्था करने के लिए आपको पहले उपयोग करने की आवश्यकता हो सकती है ।

यदि आप वीजी की भौतिक सीमाओं को बनाए रखने और डेटा को स्थानांतरित करने के लिए हैं, तो कोई अंतर्निहित टूल नहीं है, लेकिन आप एक दर्पण बना सकते हैं फिर मूल को हटा सकते हैं


ऐसा लगता है कि target_group पहले से मौजूद हो सकता है?
XTL

8

डेबियन स्ट्रेच (9.0) में LVM के रूप में, (अर्थात्) 2.02.168-2, वॉल्यूम समूहों की तार्किक मात्रा की एक प्रति , और vgmerge, के संयोजन का उपयोग करना संभव है । चूंकि एक चाल कॉपी और डिलीट का संयोजन है, यह एक चाल के लिए भी काम करेगा।lvconvertvgsplit

वैकल्पिक रूप से, आप 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

क्रमशः / देव / लूप 1 और / देव / लूप 2 पर वॉल्यूम समूह vg1 और vg2 बनाएं।

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

क्रमशः vg1 और vg2 पर लॉजिकल वॉल्यूम lv1 और lv2 बनाएं।

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

Lv1 और lv2 पर ext4 फाइल सिस्टम बनाएं।

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

वैकल्पिक रूप से, lv1 पर कुछ लिखें ताकि आप बाद में जांच सकें कि कॉपी सही तरीके से बनाई गई थी। Vg1 को निष्क्रिय करें।

vgchange -a n vg1

टेस्ट मोड में मर्ज कमांड चलाएँ। यह vg2 को 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 दर्पण जोड़ी बनाएं lvconvertdest-pvतर्क कहता है lvconvertपर दर्पण प्रतिलिपि बनाने के लिए /dev/loop2

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

फिर दर्पण को विभाजित करें। नया LV अब है 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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.