क्या केवीएम के साथ ऑनलाइन डिस्क संभव है?


15

हम कुछ परियोजनाओं पर लिनक्स वर्चुअलाइजेशन के लिए KVM विकसित कर रहे हैं। अभी तक सब ठीक चल रहा है। लेकिन हमारी आवश्यकताओं में से एक रिबूट या इसे ऑफ़लाइन लेने के बिना डिस्क स्थान को एक चल रहे अतिथि में जोड़ने की क्षमता है। क्या यह केवीएम के साथ संभव है?

केवल एक चीज जो मैंने अब तक पाया है (लेकिन अभी तक परीक्षण नहीं किया है) मशीन में डिस्क को हॉटप्लग करने की क्षमता है। यदि मैं इस मार्ग पर जाता हूं, तो मैं हमेशा अतिथि पर LVM वॉल्यूम समूह में नई डिस्क जोड़ सकता हूं और फिर चुने हुए तार्किक वॉल्यूम का विस्तार कर सकता हूं। इस दृष्टिकोण के लिए सबसे बड़ा नकारात्मक यह है कि समय के साथ हम वर्चुअल डिस्क के परिवर्तनशील संख्या वाले मेहमानों के साथ समाप्त हो सकते हैं। "वास्तविक" डिस्क स्थान मेजबान को एक SAN को प्रदान किया जाएगा, इसलिए हम हमेशा होस्ट में अधिक स्थान जोड़ सकते हैं।


(और "हाँ", यह संभव है।)
पोएज

जवाबों:


4

मुझे लगता है कि यदि आपने मशीन को नीचे ले जाए बिना इसे करना चाहते हैं, तो आप क्या कर रहे हैं, इसका उल्लेख किया है।

क्यों नहीं बस आभासी मशीनों LUNs बंद देना SAN और वहाँ अंतरिक्ष का प्रबंधन? यह बेहतर काम करता है यदि आप किसी भी तरह से लाइव माइग्रेशन जैसी सुविधाओं का उपयोग करना चाहते हैं।

KVM QEMU पर आधारित है, इसलिए यह सभी छवि प्रारूप का समर्थन उस परियोजना से आता है। यह एक अच्छा तरीका है कि विभिन्न स्वरूपों का आकार बदलना है जो Qemu / KVM का समर्थन करता है। लेकिन Qemu मंच इस सवाल को पूछने के लिए एक अच्छा स्थान होगा यदि आपको यहां कोई ठोस उत्तर नहीं मिलता है।

एक और विकल्प जो आदर्श नहीं हो सकता है वह है ड्राइव के लिए वास्तव में बड़े qcow2 या अन्य विरल छवि प्रारूप का उपयोग करना। इसलिए आप प्रत्येक मशीन को OS के लिए एक छोटी ड्राइव और LVM के तहत डेटा के लिए बड़ी स्पार्स इमेज दे सकते हैं। यह कम से कम आभासी ड्राइव / छवियों की संख्या को बनाए रखेगा जिन्हें आप प्रबंधित कर रहे हैं। लेकिन यह पतली प्रोविजनिंग एक समस्या हो सकती है, हालांकि यदि आप 1000 मशीनों के लिए ऐसा करते हैं और हर कोई आपको उस खाली जगह पर ले जाता है जो वे देखते हैं।

XEN मेरा मानना ​​है कि वर्तमान में समान सीमाएँ हैं।


आगे विचार करने पर, अतिथि के भीतर से SAN स्टोरेज को बढ़ते हुए जैसा कि आप उल्लेख करते हैं, शायद जाने का रास्ता है। और अतिरिक्त जानकारी के लिए भी धन्यवाद।
इल

विखंडन के कारण पतले प्रोविजनिंग महंगा हो सकता है।
वज़ोक्स

15

मुझे पता है कि यह एक पुराना सवाल है, लेकिन मैंने इसे हल के लिए गुगली करते हुए पाया है और आशा है कि यह किसी और की मदद कर सकता है।

आज के लिए के रूप में यह है मशीन पर हार्ड ड्राइव आकार बदलने के लिए संभव है। मुझे यहाँ काम करने का तरीका मिल गया है:

https://bugzilla.redhat.com/show_bug.cgi?id=648594

निम्न चरणों का पालन करना चाहिए:

  1. एक फ़ाइल नाम और KVM डिवाइस का नाम खोजें जिसमें आप हार्ड ड्राइव का आकार बदलना चाहते हैं:

    root@vhstage02:/data# virsh dumpxml test | xpath -e /domain/devices/disk
    Found 2 nodes in stdin:
    -- NODE --
    <disk type="file" device="disk">
      <driver name="qemu" type="qcow2" />
      <source file="/data/test.img" />
      <backingStore />
      <target dev="vda" bus="virtio" />
      <alias name="virtio-disk0" />
      <address type="pci" domain="0x0000" bus="0x00" slot="0x04" function="0x0" />
    </disk>
    -- NODE --
    <disk type="file" device="cdrom">
      <driver name="qemu" type="raw" />
      <source file="/data/images/debian-8.2.0-amd64-netinst.iso" />
      <backingStore />
      <target dev="hda" bus="ide" />
      <readonly />
      <alias name="ide0-1-1" />
      <address type="drive" controller="0" bus="1" target="0" unit="1" />
    </disk>
    

हमारे लिए एक दिलचस्प डिस्क है। आपको ढूंढना चाहिए sourceऔर aliasब्लॉक करना चाहिए । मेरे लिए फ़ाइल नाम है test.imgऔर उपनाम नाम है virtio-disk0। इस नाम के लिए, आपको drive-qemu ड्राइव नाम प्राप्त करने के लिए पूर्वसर्ग करने की आवश्यकता है ।

  1. अब हम वास्तव में qemu मॉनिटर का उपयोग करके ड्राइव का आकार बदलते हैं:

    virsh qemu-monitor-command test block_resize  drive-virtio-disk0  100G --hmp
    

ध्यान दें कि फ़ाइल नाम का उपयोग बिना .img एक्सटेंशन और ड्राइव के डिस्क डिस्क उर्फ ​​में जोड़ा गया था। 100G उस ड्राइव का परिणामी आकार है जिसे हम चाहते हैं

  1. मशीन में लॉगिन करें और जांचें कि वास्तविक आकार बदल गया है:

    root@test:~# fdisk -l
    
    Disk /dev/vda: 100 GiB, 107374182400 bytes, 209715200 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0x7e6e7f71
    
    Device     Boot  Start       End   Sectors  Size Id Type
    /dev/vda1  *      2048    499711    497664  243M 83 Linux
    /dev/vda2       501758 167770111 167268354 79.8G  5 Extended
    /dev/vda5       501760 167770111 167268352 79.8G 8e Linux LVM
    

बस! अब आप या तो नए विभाजन बना सकते हैं या मौजूदा लोगों का आकार बदल सकते हैं।


1
वापस आने और इस उत्तर को जोड़ने के लिए धन्यवाद! यह करने के पुराने तरीके की तुलना में चीजों को बहुत सरल बनाता है।
डेव शेरोहमान

4

AFAIK, यह संभव नहीं है - आप नई डिस्क छवियां जोड़ सकते हैं, और जैसा कि आप बताते हैं कि आप एक LVM वॉल्यूम में नई छवियां भी जोड़ सकते हैं, लेकिन एक सक्रिय, बूट करने योग्य डिस्क छवि का आकार बदलने के लिए आपको इसे बंद करने में सक्षम होना चाहिए। विभाजन को संपादित करें और संपादित करें।

यहाँ एक छवि का विस्तार करने के लिए एक अच्छी व्याख्या है । हालाँकि इसे शटडाउन की आवश्यकता है, आप शायद केवल कुछ मिनट के डाउनटाइम के साथ दूर हो सकते हैं, खासकर यदि आप --nonsparse छवि विकल्प से बचते हैं और gparted डिस्क को एक आईएसओ फ़ाइल में डालते हैं और अग्रिम में अपने KVM अतिथि में माउंट करते हैं। उम्मीद है की यह मदद करेगा।


2
समस्या वास्तव में केवीएम से संबंधित नहीं है; लिनक्स से आप बस उस डिस्क को आकार नहीं दे सकते हैं जिसे आपने बूट किया है। यह भौतिक RAID सरणियों पर भी लागू होता है।
वज़ोक्स

3

डिस्क के बीच लिनक्स सिस्टम को स्थानांतरित करना संभव है, जबकि यह चल रहा है। सीमा यह है कि आप एक डिस्क पर विभाजन को बदल नहीं सकते हैं जिसमें उपयोग में विभाजन हैं।

ऐसा करने के लिए आपका रूट फाइल सिस्टम LVM पर होना चाहिए, इसका अर्थ अक्सर यह होता है कि आपके पास एक अलग बूट फाइल सिस्टम होना चाहिए (यह, हालांकि, आवश्यक नहीं है, यह सिर्फ चीजों को आसान बनाता है)

नई डिस्क में प्लग इन करने के बाद, आप इसे LVM में vgextend के साथ जोड़ते हैं, रूटवॉफ़्ट को नई डिस्क पर ले जाने के लिए pvmove का उपयोग करते हैं, क्रमशः लॉजिकल वॉल्यूम और फाइल सिस्टम का विस्तार करने के लिए lvextend और resize2fs का उपयोग करते हैं, फिर वॉल्यूम से पुरानी डिस्क को निकालने के लिए vgreduce समूह। एक बार हटाए जाने के बाद पुराने वॉल्यूम को अनप्लग किया जा सकता है।

साधारण केस के लिए आपके पास बूट फाइल सिस्टम के लिए एक छोटी सी डिस्क है जिसे आपको कभी नहीं छूना है। लेकिन अगर यह अपने दम पर है, तो इसे अनप्लग करना आसान है, एक नए में प्लग करें और सिस्टम को बंद किए बिना बूट डिस्क को फिर से बनाएं। (जब आप यह कर रहे हैं तो दुर्घटना न करें)

नोट: resize2fs भी फाइल सिस्टम को सिकोड़ सकता है।


0

संभव नहीं है, लेकिन विकास के तहत यह एक विशेषता है। इसके बजाय आप क्या कर सकते हैं VM से एक iSCSI लक्ष्य से कनेक्ट करें और SAN पर उस लक्ष्य पर स्थान का प्रबंधन करें।


आप इस सवाल का जवाब नहीं दे सकते थे कि वह किस उत्तर का उपयोग कर सकता है।
मेई

@ डेविड: और आप क्या सोचते हैं और यहां तक ​​कि मेरे जवाब को गलत ठहराते हैं? मेरा जवाब हाथ में समस्या के लिए समाधान प्रदान नहीं करता है?

आपने कहा "संभव नहीं है ..." तो उसे एक ऐसी सुविधा के बारे में बताया जो इस समय संभव नहीं है। (अब, लगभग दो साल बाद, यह अलग हो सकता है - लेकिन यह जवाब ऐसा नहीं कहता है।)
मेई

1
तो दो साल पहले मुझे उससे कहना चाहिए था "यह दो साल में संभव होगा"? क्या मैं तुम्हें नबी की तरह देखता हूँ? इसके बाद, हॉटप्लगिंग का काम चल रहा था, और ठीक यही मैंने कहा। फिर मैंने VM से जुड़े स्टोरेज को पाने के लिए एक अलग तरीका पेश किया, जो पूरे qemu फीचरसेट से स्वतंत्र होगा। कभी नहीं कहा कि यह एकमात्र तरीका था, लेकिन यह एक तरीका है।
डायनासी

मुझे अब समझ में आया ... मैंने आपके इरादे को बेहतर दिखाने के लिए आपके उत्तर को संपादित किया।
मेई
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.