जवाबों:
qemu-img resize vmdisk.img +10G
10Gb द्वारा छवि का आकार बढ़ाने के लिए चलाएँstart the VM, resize the partitions and LVM structure within it normally
यह कैसे करना है? कृपया इसे समझाएं।
बेहतर या बदतर के लिए, नीचे दिए गए आदेश तब भी चलेंगे, जब लक्ष्य वर्चुअल डिस्क माउंट हो। यह उन वातावरणों में उपयोगी हो सकता है जहां डिस्क को अनमाउंट नहीं किया जा सकता है (जैसे रूट विभाजन), वीएम पर रहना चाहिए, और सिस्टम मालिक डेटा भ्रष्टाचार के जोखिम को संभालने के लिए तैयार है । उस जोखिम को निकालने के लिए, आपको VM में लॉग इन करना होगा और सबसे पहले लक्ष्य डिस्क को अनमाउंट करना होगा, कुछ ऐसा जो हमेशा संभव नहीं है।
KVM हाइपरविजर से निम्न कार्य करें।
स्वयं डिस्क छवि फ़ाइल का आकार बढ़ाएँ (राशि बढ़ाने के लिए निर्दिष्ट करें):
qemu-img resize <my_vm>.img +10G
लिबेरविट शेल ( drive-virtio-disk0
इस उदाहरण में) के माध्यम से पुण्य उपकरण का नाम प्राप्त करें :
virsh qemu-monitor-command <my_vm> info block --hmp
drive-virtio-disk0: removable=0 io-status=ok file=/var/lib/libvirt/images/<my_vm>.img ro=0 drv=raw encrypted=0
drive-ide0-1-0: removable=1 locked=0 tray-open=0 io-status=ok [not inserted]
नए आकार का पता लगाने के लिए virtio ड्राइवर को संकेत दें (कुल नई क्षमता निर्दिष्ट करें):
virsh qemu-monitor-command <my_vm> block_resize drive-virtio-disk0 20G --hmp
फिर VM में लॉग इन करें। रनिंग dmesg
को रिपोर्ट करना चाहिए कि गुणिका डिस्क में क्षमता परिवर्तन का पता चला है। इस बिंदु पर, आगे बढ़ें और आवश्यकतानुसार अपने विभाजन और LVM संरचना का आकार बदलें।
ये सर्वरफॉल्ट प्रश्न समान हैं लेकिन अधिक विशिष्ट हैं, केवीएम ऑनलाइन डिस्क आकार? & Centos Xen, DOMU विभाजन और वॉल्यूम समूह का आकार बदल रहा है । 1 प्रश्न पूछता है कि केवीएम अतिथि को कैसे बढ़ाएं, जबकि यह ऑनलाइन है, जबकि 2 वें एक्सवीएन एलवीएम का उपयोग करके विशिष्ट है। मैं पूछ रहा हूं कि केवीएम ऑफ़लाइन होने के दौरान इसे कैसे पूरा किया जाए।
नोट: यह लिंक METHOD # 1 के लिए उपयोगी था, और दिखाता है कि KVM की डिस्क स्थान (ext3 आधारित) को बढ़ाने के लिए कैसे, HOWTO: KVM वर्चुअल मशीन छवि का आकार बदलें ।
केवीएम मेहमानों के साथ एक बात का ध्यान रखें कि उनके द्वारा उपयोग किए जा रहे विभाजन प्रभाव डाल सकते हैं कि आप अपनी डिस्क स्थान को बढ़ाने के लिए किस पद्धति का उपयोग कर सकते हैं।
विधि # 1: विभाजन ext2 / ext3 / ext4 आधारित हैं
इस विधि के नट निम्नानुसार हैं:
# 1. stop the VM
# 2. move the current image
mv mykvm.img mykvm.img.bak
# 3. create a new image
qemu-img create -f raw addon.raw 30G
# 4. concatenate the 2 images
cat mykvm.img.bak addon.raw >> mykvm.img
अब हाथ, बूट में बड़ा mykvm.img फ़ाइल के साथ gparted और नए जोड़े डिस्क स्थान में मौजूदा विभाजन का विस्तार। यह अंतिम चरण मूल रूप से ओएस विभाजन का विस्तार करता है ताकि यह अतिरिक्त स्थान का उपयोग कर सके।
विधि # 2: विभाजन LVM आधारित हैं
यहाँ वे चरण हैं जिनका मैंने मोटे तौर पर KVM अतिथि के रूप में अनुसरण किया है जो आंतरिक रूप से LVM का उपयोग करते हैं।
VM के अंदर fdisk चलाएं और LVM विभाजन हटाएं और पुनः बनाएं
% fdisk /dev/vda
...
Device Boot Start End Blocks Id System
/dev/vda1 * 1 13 104391 83 Linux
/dev/vda2 14 3263 26105625 8e Linux LVM
Command (m for help): d
Partition number (1-4): 2
Command (m for help): p
Disk /dev/vda: 48.3 GB, 48318382080 bytes
255 heads, 63 sectors/track, 5874 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/vda1 * 1 13 104391 83 Linux
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (14-5874, default 14): 14
Last cylinder or +size or +sizeM or +sizeK (14-5874, default 5874):
Using default value 5874
Command (m for help): p
Disk /dev/vda: 48.3 GB, 48318382080 bytes
255 heads, 63 sectors/track, 5874 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/vda1 * 1 13 104391 83 Linux
/dev/vda2 14 5874 47078482+ 83 Linux
Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 8e
Changed system type of partition 2 to 8e (Linux LVM)
Command (m for help): p
Disk /dev/vda: 48.3 GB, 48318382080 bytes
255 heads, 63 sectors/track, 5874 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/vda1 * 1 13 104391 83 Linux
/dev/vda2 14 5874 47078482+ 8e Linux LVM
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.
Syncing disks.
%
VM को रिबूट करें
LVM भौतिक आयतन का आकार बदलें
% pvdisplay
--- Physical volume ---
PV Name /dev/vda2
VG Name VolGroup00
PV Size 24.90 GB / not usable 21.59 MB
Allocatable yes (but full)
PE Size (KByte) 32768
Total PE 796
Free PE 0
...
% pvresize /dev/vda2
% pvdisplay
--- Physical volume ---
PV Name /dev/vda2
VG Name VolGroup00
PV Size 44.90 GB / not usable 22.89 MB
Allocatable yes
PE Size (KByte) 32768
Total PE 1436
Free PE 640
...
LVM लॉजिकल वॉल्यूम का आकार बदलें
% lvresize /dev/VolGroup00/LogVol00 -l +640
Extending logical volume LogVol00 to 43.88 GB
Logical volume LogVol00 successfully resized
फ़ाइल सिस्टम बढ़ाएँ
% resize2fs /dev/VolGroup00/LogVol00
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/VolGroup00/LogVol00 is mounted on /; on-line resizing required
Performing an on-line resize of /dev/VolGroup00/LogVol00 to 11501568 (4k) blocks.
The filesystem on /dev/VolGroup00/LogVol00 is now 11501568 blocks long.
उपरोक्त मेरा उदाहरण है, लेकिन मैंने इस वेबसाइट पर चरणों का पालन किया
virt-manager
और विधि # 1 & # 2 का बड़े पैमाने पर इस्तेमाल किया है इससे पहले कि हम अपने KVM सर्वर को KVM के नए संस्करण (CentOS 5 -> CentOS 6) में स्थानांतरित कर दें। मैं अब qemu-img resize
विधि का भी उपयोग करता हूं ।
lvextend /dev/Volgroup/lvname /dev/vda2
(सभी एक पंक्ति में, जहां / dev / vda2 आपकी भौतिक मात्रा होगी)। किसी अन्य विकल्प के बिना, यह उस वॉल्यूम समूह में अधिकतम आकार का उपयोग करेगा।
आकार और एक चरण में आंतरिक विभाजन का विस्तार करें
मेरे पास एक qbb2 अतिथि फ़ाइल छवि के साथ एक उबंटू होस्ट था और डिस्क का आकार बदलना और एक चरण में सभी उपयुक्त विभाजन का विस्तार करना चाहता था। यह आपको libvirt अतिथि फ़ाइल सिस्टम उपयोगिताओं को सेट करने के लिए आवश्यक है, लेकिन वे वैसे भी उपयोगी होते हैं।
यहाँ से प्रेरणा: http://libguestfs.org/virt-resize.1.html
यहाँ मुख्य आदेश है: virt-resize
तैयारी:
* Install libvirt file system utilities package
* sudo apt-get install libguestfs-tools
* Test to see if it works (it won't) -- you need to see "===== TEST FINISHED OK =====" at the bottom:
* sudo libguestfs-test-tool
* If you don't see "===== TEST FINISHED OK =====" at the bottom then repair it:
* sudo update-guestfs-appliance
* Run the test again and verify it works
* sudo libguestfs-test-tool
अब निम्नलिखित करें:
1) अतिथि को बंद करें:
2) वर्तमान आकार की जाँच करें और उस विभाजन नाम को देखें जिसे आप libvirt उपयोगिता का उपयोग करके विस्तारित करना चाहते हैं:
sudo virt-filesystems --long --parts --blkdevs -h -a name-of-guest-disk-file
3) नया (40G) आउटपुट डिस्क बनाएँ:
qcow: sudo qemu-img create -f qcow2 -o preallocation=metadata outdisk 40G
img: sudo truncate -s 40G outdisk
4) उपयुक्त विभाजन का विस्तार करते हुए पुराने को नए में कॉपी करें (चरण 2 से आपकी डिस्क विभाजन को संभालने / dev / sda1):
sudo virt-resize --expand /dev/sda1 indisk outdisk
5) एक बैकअप के रूप में इंडिस्क फ़ाइल का नाम बदलें, इंडिस्क के रूप में आउटस्कि का नाम बदलें (या अतिथि XML को संशोधित करें)
6) अतिथि को रिबूट करें और मूल फ़ाइल को हटाने से पहले नई डिस्क फ़ाइल का सावधानीपूर्वक परीक्षण करें
7) लाभ!
-o preallocation=metadata
एक विरल फ़ाइल बनाता है। उस विकल्प के साथ यह पूरे आकार को पूर्व-आवंटित करता है।
-o preallocation=metadata
और यदि आप नहीं करते हैं तो आपको truncate
कदम को छोड़ देना चाहिए । virt-resize
वैसे भी उपयुक्त रूप से फ़ाइल बढ़ेगा।
यदि आप VM के भीतर LVM का उपयोग कर रहे हैं, तो यह करने का सबसे सरल तरीका है कि VM में एक नई वर्चुअल डिस्क जोड़ें और उस पर वॉल्यूम समूह और लॉजिकल वॉल्यूम का विस्तार करें।
यह जाँचने के लिए कि क्या आप LVM रन का उपयोग कर रहे हैं sudo pvs; sudo vgs; sudo lvs
, आपको कुछ इस तरह मिलेगा:
PV VG Fmt Attr PSize PFree
/dev/vda1 vgWWW lvm2 a- 30.00g 0
VG #PV #LV #SN Attr VSize VFree
vgWWW 1 2 0 wz--n- 30.00g 0
LV VG Attr LSize
root vgWWW -wi-ao 28.80g
swap vgWWW -wi-ao 1.19g
अगर VM का OS LVM का उपयोग कर रहा है। उपरोक्त उदाहरण में VM के पास 30Gbyte vdisk है, LVM का उपयोग करके कॉन्फ़िगर किया गया है जिसमें एक वॉल्यूम समूह है जिसका नाम vgWWW है जिसमें दो लॉजिकल वॉल्यूम हैं, एक स्वैप के लिए और दूसरा सब कुछ के लिए।
यदि वीएम में LV का उपयोग होता है:
sudo pvcreate /dev/vdb
sudo vgextend vgWWW /dev/vdb
sudo lvextend --extents +100%FREE /dev/vgWWW/root
(या ऐसा कुछ जैसे sudo lvextend --size +8G /dev/vgWWW/root
अगर आप इसे पूरे तरीके से विकसित नहीं करना चाहते हैं, तो यह उदाहरण 8Gb को मात्रा में जोड़ देगा)resize2fs /dev/vgWWW/root
नोट: उपरोक्त मानता है कि vg / lv नाम मेरे उदाहरण के समान हैं जो कि संभावना नहीं है, उपयुक्त के रूप में बदलें, भले ही वीएम में पहले से ही एक आभासी ड्राइव था जिसे vdb
नया कहा जाता है वह कुछ और होगा ( vdc
और, इत्यादि)
नोट: resize2fs
केवल ext2, ext3 और ext4 फाइल सिस्टम पर काम करेगा। यदि आप कुछ और उपयोग कर रहे हैं तो यह त्रुटि करेगा और कुछ भी नहीं करेगा।
नोट: जैसा कि आप एक लाइव फाइल सिस्टम का आकार बदल रहे हैं , यह आपको पहले resize2fs
चलाने के लिए प्रेरित नहीं करेगा fsck
क्योंकि यह एक अनमाउंट फाइल सिस्टम के लिए होगा, यह सिर्फ आगे बढ़ेगा। आप आगे बढ़ने से पहले कोई समस्या नहीं है केवल पढ़ने के लिए एक filesystem जाँच चलाना चाहते हो सकता है।
ऑनलाइन आकार परिवर्तन करना संभव है। libvirtd मूल रूप से इसका समर्थन करता है:
ब्लॉक डिवाइस का नाम खोजें। "Vda" जैसा कुछ होना चाहिए
$ virsh domblklist <libvirtd_vm_name>
वर्चुअल डिवाइस का आकार बदलें:
$ virsh blockresize --domain <libvirtd_vm_name> --path <block_device_name> --size <new_size>
यहाँ एक उदाहरण थे मैं विस्तार है vda
से डिस्क 50GB
के 51GB
लिए undercloud
वी एम।
[root@gss-rhos-4 ~]# virsh domblklist undercloud
Target Source
------------------------------------------------
vda /home/images/undercloud.qcow2
अब .qcow2 छवि फ़ाइल के विवरण पर एक नज़र डालें:
[root@gss-rhos-4 ~]# qemu-img info /home/images/undercloud.qcow2
image: /home/images/undercloud.qcow2
file format: qcow2
virtual size: 50G (53687091200 bytes)
disk size: 38G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false
अब vda ब्लॉक डिवाइस का आकार बदलें:
[root@gss-rhos-4 ~]# virsh blockresize undercloud vda 51G
Block device 'vda' is resized
और पुष्टि करें:
[root@gss-rhos-4 ~]# qemu-img info /home/images/undercloud.qcow2
image: /home/images/undercloud.qcow2
file format: qcow2
virtual size: 51G (54760833024 bytes)
disk size: 38G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false
[root@gss-rhos-4 ~]#
तब आप ब्लॉक डिवाइस और fs का आकार बदलने के लिए कमांड दिखाने के लिए VM के अंदर इस स्क्रिप्ट का उपयोग कर सकते हैं: https://github.com/mircea-vutcovici/scripts/blob/master/vol_resize.sh ।
यदि आप गुण और ड्राइव का उपयोग कर रहे हैं तो वीएम को रिबूट किए बिना आपके वीएम की डिस्क का आकार बढ़ाने की संभावना है।
(वैकल्पिक) पाने के लिए fdisk के साथ एक प्राथमिक विभाजन बनाएँ / dev / vdb1, फिर kpartx -a / dev / vdb का उपयोग विभाजन तालिका को फिर से पढ़ने के लिए करें
यदि आपने विभाजन नहीं बनाया है तो vgextend vg_name / dev / vdb1 (या / dev / vdb का उपयोग करें)
हो गया।
इस तरह आप अपने इच्छित विभाजन का विस्तार कर सकते हैं:
# see what partitions you have?
virt-filesystems --long -h --all -a olddisk
truncate -r olddisk newdisk
truncate -s +5G newdisk
# Note "/dev/sda2" is a partition inside the "olddisk" file.
virt-resize --expand /dev/sda2 olddisk newdisk
अधिक उदाहरण यहाँ देखें ।
इसे करने का दूसरा तरीका
truncate -s +2G vm1.img
डिस्क रेस्क्यू बनाने के लिए जाएं और बाद में आप अपना एलवीएम आकार बदल सकते हैं।
यदि आपके वीएम में एलवीएम है तो यह आसान और तेज है।
sudo system-config-lvm
टर्मिनल में टाइप ) *।मैंने GUI को काफी सहज पाया, लेकिन अगर आपको समस्या है तो अगले चरणों का पालन करें।
ध्यान दें! कम से कम CentOS 6 LVM GUI डिफ़ॉल्ट रूप से स्थापित नहीं है, लेकिन आप इसे स्थापित कर सकते हैं yum install system-config-lvm
।
चित्र को पुनर्कार करें:
qemu-img resize vmdisk.img +16G
छवि का आकार 16 GB तक बढ़ाता है।
यदि आपकी छवि में GPT (GUID विभाजन तालिका) है तो GPT में प्रयुक्त ड्राइव आकार नए आकार से भिन्न होगा, आपको इसे इसके लिए ठीक करना होगा gdisk
:
MY_DRIVE=/dev/vda
gdisk $MY_DRIVE <<EOF
w
Y
Y
EOF
या साथ parted
:
parted $MY_DRIVE print Fix
किसी कारण के लिए parted
फिक्सिंग तब काम नहीं कर रही है जब कोई भी टेंट प्रस्तुत नहीं किया जाता है (उदाहरण के लिए जब वैग्रंट के साथ प्रावधान किया जाता है) तो मैं उपयोग करता हूं gdisk
।
सभी उपलब्ध स्थान को भरने के लिए विभाजन का आकार बढ़ाएँ:
MY_PARTITION_GUID=$(
gdisk $MY_DRIVE <<EOF | sed -n -e 's/^Partition unique GUID: //p'
i
EOF
)
MY_PARTITION_FIRST_SECTOR=$(
gdisk $MY_DRIVE <<EOF | sed -n -e 's/^First sector: \([0-9]\+\).*/\1/p'
i
EOF
)
gdisk $MY_DRIVE <<EOF
d
n
$MY_PARTITION_FIRST_SECTOR
x
a
2
c
$MY_PARTITION_GUID
w
Y
EOF
x a 2 <Enter>
यदि आप विरासत BIOS का उपयोग कर रहे हैं तो यह हिस्सा वैकल्पिक और आवश्यक है।
MY_PARTITION_GUID=...
और c $MY_PARTITION_GUID
भाग भी वैकल्पिक और आवश्यक हैं यदि आप विभाजन का उपयोग यूयूआईडी में /etc/fstab
या कहीं और करते हैं।
रिबूट या साथ विभाजन पुन: पढ़ने partx -u $MY_DRIVE
या partprobe
।
विभाजन बढ़ाएँ, उदाहरण के लिए ext2
, ext3
या ext4
:
MY_PARTITION="${MY_DRIVE}1"
resize2fs $MY_PARTITION
आप गार्टर्ड माउंटेड के साथ सोलस वीएम का उपयोग कर सकते हैं। एक बार gparted के साथ उपयोग करने के बाद आप आसानी से सिस्टम को बूट कर सकते हैं और अंतरिक्ष को समायोजित कर सकते हैं। सुनिश्चित करें कि आपके पास सही बूट प्राथमिकता सेट है। एक संदर्भ के रूप में कृपया नीचे दिए गए यूआरएल को देखें जो काम आ सकता है। https://greencloudvps.com/knowledgebase/11/How-to-Extend-the-Hard-drive-on-KVM-after-upgrading-VPS.html