इस लेख में हम लोकप्रिय डिस्क प्रकारों के लिए KVM वर्चुअल मशीन डिस्क का आकार बदलने के तरीके के बारे में बात करेंगे। हम दिखाएंगे कि बिना डेटा खोए लिनक्स पर KVM हाइपरवाइजर में वर्चुअल मशीन डिस्क आकार को सही ढंग से कैसे बढ़ाया जाए और डिस्क आकार को कम करने के विकल्पों पर चर्चा की जाए।
KVM वर्चुअल मशीन डिस्क आकार कैसे बढ़ाएं/विस्तारित करें?
KVM पर वर्चुअल डिस्क बढ़ाना
आइए 20GB वर्चुअल डिस्क के आकार को बढ़ाने के एक उदाहरण पर विचार करें। VM की वर्चुअल डिस्क सेटिंग बदलने से पहले उसे बंद कर दें.
KVM वर्चुअल मशीन की वर्चुअल डिस्क सेटिंग देखने के लिए, इस कमांड का उपयोग करें:
qemu-img info /path_to_disk
आप इस तरह से परिणाम देखेंगे:
हम देखते हैं कि दो फ़ील्ड हैं जो आकार दिखाते हैं:वर्चुअल_साइज़ और डिस्क_साइज़:
- वर्चुअल_साइज़ - डिस्क बनाते या बढ़ाते समय वर्चुअल डिस्क सेट का आकार होता है (इस उदाहरण में, डिस्क का अधिकतम आकार 20GB है);
- डिस्क_आकार — डिस्क फ़ाइल का वर्तमान आकार है, i. ई।, भौतिक सर्वर पर डिस्क कितनी जगह घेरती है (केवल qcow डिस्क प्रारूप पर लागू होती है)। हमारे उदाहरण में, वर्चुअल डिस्क स्टोरेज पर केवल 1.6GB लेता है।
अगले चरण में, मैं वर्चुअल मशीन के आकार को 5GB तक बढ़ा दूंगा (डिस्क को ठीक से विस्तारित करने के लिए, वर्चुअल मशीन में कोई स्नैपशॉट नहीं होना चाहिए!)।# qemu-img resize /path to disk +5G
Image resized.
यदि आप वर्चुअल डिस्क सेटिंग्स की जाँच करते हैं, तो आप देखेंगे कि इसका विस्तार किया गया है:
# qemu-img info /path_to_disk
image: /path_to_disk file format: qcow2 virtual size: 25G (26843535600 bytes) disk size: 1.6G cluster_size: 65536 Format specific information: compat: 0.10 refcount bits: 16
हमने अपने काम का एक हिस्सा किया है, लेकिन हमें वर्चुअल मशीन के अतिथि ओएस में भी कुछ क्रियाओं की आवश्यकता है। अब हम दिखाएंगे कि अतिथि CentOS 7 और Windows Server 2012 R2 में डिस्क का आकार कैसे बढ़ाया जाए।
यदि आप KVM हाइपरवाइजर में अपने VM के लिए एक और वर्चुअल डिस्क जोड़ने जा रहे हैं,qemu-img
और virsh
साधनों का प्रयोग किया जाता है। CentOS Linux चलाने वाली वर्चुअल मशीन में पार्टीशन कैसे बढ़ाएं?
KVM सर्वर साइड पर वर्चुअल डिस्क का आकार बढ़ाने के बाद, अपनी वर्चुअल मशीन शुरू करें और उससे कनेक्ट करें। हम हार्ड डिस्क विभाजन प्रबंधन उपकरण का उपयोग करेंगे fdisk विभाजन और फ़ाइल सिस्टम आकार का विस्तार करने के लिए।
SSH पर VM Guest OS से कनेक्ट करें और सुनिश्चित करें कि अतिरिक्त 5 Gb डिस्क स्थान दिखाई दे।
df –h
fdisk -l
स्क्रीनशॉट से पता चलता है कि /dev/vda2 का आकार 20GB है, और उपलब्ध डिस्क स्थान 25GB है।
आइए /dev/vda2 को अधिकतम उपलब्ध आकार तक बढ़ाएं:
# fdisk /dev/vda
Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): d Partition number (1,2, default 2): Partition 2 is deleted Command (m for help): n Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): p Partition number (2-4, default 2): First sector (1050624-52428799, default 1050624): Using default value 1050624 Last sector, +sectors or +size{K,M,G} (1050624-52428799, default 52428799): Using default value 52428799 Partition 2 of type Linux and of size 24.5 GiB is set Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) Syncing disks.
फिर वर्चुअल मशीन को पुनरारंभ करें और कमांड चलाएँ जो नए डिस्क आकार को लागू करेगा:
# xfs_growfs /dev/vda2
meta-data=/dev/vda2 isize=512 agcount=4, agsize=1277888 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=5111552, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 5111552 to 6422272
# df -h
Filesystem Size Used Avail Use% Mounted on devtmpfs 485M 0 485M 0% /dev tmpfs 496M 0 496M 0% /dev/shm tmpfs 496M 6.6M 489M 2% /run tmpfs 496M 0 496M 0% /sys/fs/cgroup /dev/vda2 25G 1.3G 24G 6% / /dev/vda1 488M 100M 353M 23% /boot tmpfs 100M 0 100M 0% /run/user/0
परिणामस्वरूप, हमें एक विस्तारित विभाजन /dev/vda2 मिला है। यहाँ हमने वास्तव में क्या किया है:
- fdisk /dev/vda — हमने fdisk चलाया और /dev/vda से कनेक्ट किया;
- /d - हमने विभाजन हटा दिया। डिफ़ॉल्ट रूप से, यह विभाजन 2 था जिसकी हमें आवश्यकता थी, इसलिए हमने अगले आइटम में केवल एंटर दबाया;
- /n - हमने एक नया विभाजन बनाया और Enter या p . दबाया , फिर एंटर दबाएं, क्योंकि जिस पार्टीशन को हम बनाने की कोशिश कर रहे थे वह डिफ़ॉल्ट रूप से 2 होगा;
- पहला और आखिरी सेक्टर निर्दिष्ट करते समय हम केवल एंटर दबाते हैं यदि आप विभाजन को अधिकतम तक विस्तारित करना चाहते हैं। यदि आप विशिष्ट आकार सेट करना चाहते हैं, तो अंतिम सेक्टर में डिस्क का आकार दर्ज करें जैसा कि मेनू में दिखाया गया है +size{K,M,G};
- /w — नई सेटिंग लागू करने के लिए।
VM के पुनरारंभ होने के बाद, इस कमांड का उपयोग करके डिस्क की जाँच करें:
xfs_growfs /dev/vda2
कुछ स्रोत निम्नलिखित कमांड का उपयोग करने की सलाह देते हैं:
resize2fs /dev/vda2
लेकिन यह XFS फाइल सिस्टम के लिए काम नहीं करेगा!
इस प्रकार, आपने CentOS 7 चलाने वाली वर्चुअल मशीन पर डिस्क का आकार बढ़ा दिया है।
गेस्ट विंडोज सर्वर में डिस्क साइज कैसे बढ़ाएं?
RDP या VNC का उपयोग करके Windows सर्वर वर्चुअल मशीन से कनेक्ट करें और डिस्क का विस्तार करें।
- सर्वर प्रबंधक खोलें -> उपकरण -> कंप्यूटर प्रबंधन;
- संग्रहण का चयन करें -> डिस्क प्रबंधन बाएँ फलक में। आपके सभी डिस्क विभाजन और जोड़े गए असंबद्ध स्थान दिखाई देंगे;
- उस विभाजन का चयन करें जिसे आप बढ़ाना चाहते हैं और वॉल्यूम बढ़ाएँ पर क्लिक करें;
- डिफॉल्ट रूप से डिस्क का आकार बढ़ाने के लिए सभी उपलब्ध स्थान की पेशकश की जाएगी;
- एक्सटेंशन समाप्त करने के लिए अगला क्लिक करें। उसके बाद, आपके विभाजन का आकार बढ़ जाएगा।
मैं यह नोट करना चाहूंगा कि आपके वर्चुअल मशीन डिस्क एक्सटेंशन से पहले मैं वर्चुअल डिस्क का बैकअप लेने की सलाह देता हूं। वर्चुअल मशीन को बंद करें और डिस्क छवि को कुछ खाली स्थान वाली बैकअप निर्देशिका में कॉपी करें। अगर विस्तार प्रक्रिया के दौरान कुछ गलत हो जाता है, तो आप हमेशा बैकअप से वर्चुअल डिस्क छवि को पुनर्स्थापित करने में सक्षम होंगे।
KVM वर्चुअल मशीन के डिस्क आकार को कैसे कम करें?
अपने काम में मैं अक्सर इस मुद्दे पर आता हूं, लेकिन दुर्भाग्य से, आप केवीएम में वर्चुअल मशीन के डिस्क आकार को सुरक्षित रूप से कम नहीं कर सकते। भौतिक भंडारण पर वर्चुअल डिस्क आकार को कम करने का एकमात्र स्वीकार्य तरीका डिस्क को परिवर्तित करना है।
वेब पर कई गाइड हैं जो बता रहे हैं कि KVM वर्चुअल मशीन में डिस्क स्थान को कैसे कम किया जाए, लेकिन यह काम नहीं करता है।
मैं कुछ उदाहरण दूंगा जिन्हें मैंने देखा और परीक्षण किया।
Qemu का उपयोग करके KVM डिस्क का आकार कम करना
कुछ संसाधन उन क्रियाओं का वर्णन करते हैं जो आप qemu टूल से कर सकते हैं। वे इस आदेश का उपयोग करके वर्चुअल मशीन डिस्क स्थान को कम करने की पेशकश करते हैं:
qemu-img resize /path_to_disk -5G
— डिस्क स्थान को 5G तक छोटा करने के लिए
या निम्न विकल्प जहां आप विशिष्ट वर्चुअल डिस्क आकार सेट करते हैं:
qemu-img resize /path_to_disk 25G
— डिस्क का आकार 25G पर सेट करने के लिए
इस आदेश को चलाने के बाद क्या होता है? सर्वर शुरू करने के बाद, सिस्टम बूट नहीं होगा:
Unable to verify superblock, continuing... Sorry, could not find valid secondary superblock. Exiting now.
मैंने पहले fdisk का उपयोग करके सिस्टम में डिस्क आकार को कम करने की कोशिश की, लेकिन सिस्टम बूट नहीं होगा, भले ही आप भौतिक सर्वर पर अपनी डिस्क को सिकोड़ना छोड़ दें। और यह काफी तार्किक है। जिस विभाजन को हम कम करने का प्रयास कर रहे हैं वह एक सिस्टम है, और ओएस बूट नहीं होगा क्योंकि इसके आकार को कम करने का प्रयास करते समय इसकी जानकारी स्पष्ट रूप से मिटा दी जाती है।
छवि प्रतिस्थापन का उपयोग करके वर्चुअल डिस्क का आकार घटाना
इन गाइडों में कम लोकप्रिय संस्करण डिस्क प्रतिस्थापन का उपयोग करके डिस्क स्थान को कम करना है। इसका मतलब है कि आप अपनी जरूरत के डिस्क आकार के साथ एक नई वर्चुअल मशीन बनाते हैं। फिर आप नई डिस्क छवि को पुराने के साथ बदलते हैं, और यह विभिन्न स्रोतों में विवरण के आधार पर काम करता है। मैंने इस विधि की जाँच की, और फ़ाइल सिस्टम पिछले संस्करण की तरह निष्क्रिय हो गया। यहाँ कमांड का एक उदाहरण दिया गया है:
virt-resize /old_disk_image /new_disk_image
कुछ ऐसे तरीके भी थे जो रॉ से qcow2 प्रारूप में डिस्क रूपांतरण का उपयोग करते थे, लेकिन मैं शुरू में इस प्रारूप में मशीनें बना रहा हूं और यहां स्पष्टीकरण दिया गया है कि मैं ऐसा क्यों करता हूं।
KVM डिस्क प्रारूप और QCOW2 डिस्क संपीड़न
लेख की शुरुआत में मैंने इन दो डिस्क प्रारूपों का उल्लेख किया:कच्चा और qcow।
कच्चा लाभ अधिकतम प्रदर्शन और व्यापकता हैं। लेकिन इसमें बहुत सी कमियां हैं, जिनमें से प्रमुख हैं:
- वर्चुअल डिस्क फ़ाइल भौतिक सर्वर पर उसे आवंटित सभी स्थान घेरती है;
- आप स्नैपशॉट नहीं ले सकते।
Qcow2 मूल QEMU और QEMU-KVM हाइपरवाइजर प्रारूप है। यह KVM में समर्थित अन्य सभी स्वरूपों से सबसे सुविधाजनक वर्चुअल डिस्क स्वरूप है। जैसे-जैसे वर्चुअल मशीन में डेटा जमा होता है, और स्नैपशॉट समर्थित होते हैं, डिस्क छवि बढ़ जाती है।
Qcow2 के क्या फायदे हैं? आपको अपनी वर्चुअल डिस्क के आकार को कम करने की आवश्यकता नहीं है क्योंकि यह सर्वर स्टोरेज पर केवल उतनी ही जगह घेरती है जितनी इसकी आवश्यकता होती है। यदि आपके सर्वर पर डेटा लगातार ओवरराइट किया जाता है, और डिस्क सूज गई है, तो आप इसे आसानी से संपीड़ित कर सकते हैं। आइए इस विकल्प पर विचार करें। मैं कुछ वर्चुअल डिस्क स्थान को शून्य से भर दूंगा और फिर फ़ाइल को हटा दूंगा:
dd if=/dev/zero of=/mytempfile
rm -rf /mytempfile
जब आप इसे अपने सर्वर से चेक करते हैं, तो पहले डिस्क इमेज का आकार 2.4G था, और फिर यह 5.9G हो गया:
# du -sh /image_path
2.4G *****
# डु-श /छवि_पथ
5.9G *****
इसका मतलब है कि वर्चुअल मशीन से जानकारी हटाने के बाद, वर्चुअल डिस्क का आकार छोटा नहीं हुआ है। वर्चुअल डिस्क फ़ाइल को उसका वास्तविक आकार प्राप्त करने के लिए, मैं निम्न विधि का उपयोग करता हूं:
वर्चुअल डिस्क फ़ाइल का बैकअप लें, वर्चुअल मशीन को रोकें और फिर निम्न चरणों का पालन करें:
qemu-img convert -O qcow2 /old_image /new_image
फिर आप दोनों डिस्क के आकार की तुलना कर सकते हैं:
# du -sh /new_disk
1.6G /****
# du -sh /old_disk
5.8G /****
जैसा कि आप देख सकते हैं, संपीड़ित डिस्क का आकार 1.6G है। अपनी आवश्यकता के अनुसार नई डिस्क छवि फ़ाइल का नाम बदलें और वर्चुअल मशीन प्रारंभ करें:# df -h
Filesystem Size Used Avail Use% Mounted on devtmpfs 485M 0 485M 0% /dev tmpfs 496M 0 496M 0% /dev/shm tmpfs 496M 6.6M 489M 2% /run tmpfs 496M 0 496M 0% /sys/fs/cgroup /dev/vda2 25G 1.3G 24G 6% / /dev/vda1 488M 100M 353M 23% /boot tmpfs 100M 0 100M 0% /run/user/0
यह तरीका काम करता है। हर समय मैं इसका उपयोग कर रहा हूं, मेरे पास ऐसी कोई स्थिति नहीं है जब वर्चुअल मशीन में फाइल सिस्टम विफल हो गया हो। लेकिन मैं किसी भी डेटा को खोने के क्रम में कुछ भी करने से पहले डिस्क का बैक अप लेने की दृढ़ता से अनुशंसा करता हूं।
यही सब मैं इस लेख में बताना चाहता था। यदि इस वेबसाइट पर आने वालों में से कोई भी KVM (संपीड़न नहीं) पर डिस्क के आकार को कम करने के लिए कोई अन्य सही मायने में कार्रवाई योग्य तरीके जानता है, तो उनका वर्णन यहां करें और मैं उनका परीक्षण करूंगा।