KVM और Libvirt - मैं एक नया सिटिओ डिस्क कैसे हॉटप्लग कर सकता हूँ?


24

मैं चल रहे KVM वर्चुअल सर्वर पर फ़ाइल-आधारित डिस्क को हॉट-ऐड करने की कोशिश कर रहा हूं। मैंने कमांड का उपयोग करके स्क्रैच से एक नई डिस्क बनाई है

dd of=/home/cloud/vps_59/test.img bs=1 seek=5G count=0

और मुझे उम्मीद थी कि इसे वायरल शेल में लाकर अतिथि को गर्मजोशी से जोड़ा जाएगा:

virsh # attach-disk vps_59 /home/cloud/vps_59/test.img \
        vdd --driver=file --subdriver=raw

डोमेन की XML परिभाषा तब बन जाती है:

<disk type='file' device='disk'>
  <driver name='qemu' type='raw'/>
  <source file='/home/cloud/vps_59/root.img'/>
  <target dev='vda' bus='virtio'/>
</disk>
<disk type='file' device='disk'>
  <driver name='file' type='raw'/>
  <source file='/home/cloud/vps_59/test.img'/>
  <target dev='vdd' bus='virtio'/>
</disk>

जैसा कि आप देख सकते हैं, ड्राइवर का नाम गलत हो गया है, यह driver name='qemu'मौजूदा vdaडिस्क के रूप में होना चाहिए । मैंने कोशिश की है --drive=qemuलेकिन यह बताता है कि यह असमर्थित है।

दूसरी बात, मैं केवल उबंटू 10.04.4 LTS पर चलने वाली वर्चुअल मशीन को रिबूट करने के बाद नए जोड़े गए ड्राइव को "देखता हूं"। मैं ड्राइव को "हॉटप्लग" कैसे बना सकता हूं? मैं आभासी मशीन को रिबूट के बिना नई ड्राइव को तुरंत "देखना" चाहता हूं।


1
असंबंधित सुझाव, qemu-imgइसके बजाय का उपयोग करें dd- इसके तर्क अधिक प्राकृतिक आते हैं और वही काम करते हैं:qemu-img create test.img 5G
chutz

जवाबों:


31

मैं एक नोट के साथ शुरू करना चाहता हूं जिसे आपको virsh attach-diskसीमित मात्रा में विकल्पों के साथ उपयोग करने से बचना चाहिए । इसके बजाय, मैं एक अलग, अस्थायी XML फ़ाइल में या आपके द्वारा दिए गए सटीक डिस्क प्रारूप को निर्दिष्ट करने का सुझाव दूंगा, जिसमें गुण-प्रबंधक GUI एप्लिकेशन का उपयोग करके (बाद के लिए, पहला चरण छोड़ें)।

  1. नीचे इस तरह एक डिस्क परिभाषा के साथ एक अस्थायी फ़ाइल बनाएँ ।

    अपनी स्थिति को फिट करने के लिए गुणों को समायोजित करें

    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/path/to/disk-image.img'/>
      <target dev='vdb' bus='virtio'/>
    </disk>
    

    युक्ति: अपने वर्तमान XML डोमेन कॉन्फ़िगरेशन में झांकें और <disk>वहां से एक अनुभाग कॉपी करें ।

    virsh dumpxml <domainname>
    
  2. अब डिस्क को वर्तमान डोमेन में जोड़ने से पहले, सुनिश्चित करें कि अतिथि में आवश्यक हॉटप्लग कर्नेल मॉड्यूल लोड किए गए हैं।

    हाल के CentOS / RHEL / फेडोरा जैसे कुछ लिनक्स वितरणों में यह अंतर्निहित कर्नेल है। इस मामले में, के लिए जाँच करें CONFIG_HOTPLUG_PCI_ACPI। यदि यह है y, तो आप सभी तैयार हैं और आप इस चरण को छोड़ सकते हैं।

    modprobe acpiphp
    modprobe pci_hotplug
    

    इन दो मॉड्यूल को जोड़ने पर विचार करें /etc/modulesयदि आप चाहते हैं कि उन्हें डिफ़ॉल्ट रूप से बूट पर लोड किया जाए।

  3. डिस्क को रनिंग वीएम के उपयोग से जोड़ें

    virsh attach-device <domain name> /path/to/disk.xml
    

    वैकल्पिक रूप से, --persistentLibvirt को डोमेन XML परिभाषा 'लगातार' अपडेट करने के लिए विकल्प जोड़ें ।

  4. अंत में, अतिथि के अंदर जांचें कि क्या डिस्क वास्तव में हॉटप्लग-डाला गया था। कर्नेल को ट्रिगर किया जाना चाहिए, जैसा कि इसके साथ जांचा जा सकता है dmesg:

    [  321.946440] virtio-pci 0000:00:06.0: using default PCI settings
    [...]
    [  321.952782]  vdb: vdb1 vdb2
    

    उपरोक्त उदाहरण में मैंने vdbविभाजन तालिका में दो विभाजनों के साथ एक डिस्क जोड़ी है ।

संदर्भ


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