উত্তর:
ডেবিয়ান ভিত্তিক ডিস্ট্রোতে আপনার virt-resizeপরিবর্তে ব্যবহার করা উচিত । এটি এখন হুডের নীচে বেশ কিছু হ্যান্ডেল করে। আসুন ধরে নেওয়া যাক আপনার চিত্রটিকে উইন 7 (কেন নয়?) বলা হয় called আপনার ভিএম বন্ধ হয়ে গেছে তা নিশ্চিত করুন:
সরঞ্জামটি ইনস্টল করুন:
# apt-get install libguestfs-tools
আপনার ভিএম ডিস্কের অবস্থান পান:
# virsh dumpxml Win7 | xpath -e /domain/devices/disk/source
Found 2 nodes in stdin:
-- NODE --
<source file="/var/lib/libvirt/images/Win7.img" />
-- NODE --
<source file="/var/lib/libvirt/images/Win7.iso" />
আপনাকে /var/lib/libvirt/images/Win7.imgনিম্নলিখিতগুলিতে মানিয়ে নিতে হবে :
# virt-filesystems --long --parts --blkdevs -h -a /var/lib/libvirt/images/Win7.img
Name Type MBR Size Parent
/dev/sda1 partition 07 100M /dev/sda
/dev/sda2 partition 07 32G /dev/sda
/dev/sda device - 32G -
আপনার 64 জি ডিস্ক তৈরি করুন:
# truncate -s 64G /var/lib/libvirt/images/outdisk
আপনাকে / dev / sda2 প্রসারিত করতে হবে (বুট বিভাজন নয়):
# virt-resize --expand /dev/sda2 /var/lib/libvirt/images/Win7.img /var/lib/libvirt/images/outdisk
Examining /var/lib/libvirt/images/Win7.img ...
100% [progress bar] --:--
**********
Summary of changes:
/dev/sda1: This partition will be left alone.
/dev/sda2: This partition will be resized from 32G to 64G. The
filesystem ntfs on /dev/sda2 will be expanded using the
'ntfsresize' method.
**********
Setting up initial partition table on outdisk ...
Copying /dev/sda1 ...
Copying /dev/sda2 ...
100% [progress bar] 00:00
100% [progress bar] 00:00
Expanding /dev/sda2 using the 'ntfsresize' method ...
Resize operation completed with no errors. Before deleting the old
disk, carefully check that the resized disk boots and works correctly.
mvসেক্ষেত্রে ব্যাকআপ করুন (বা আপনি ব্যাকআপটি না চাইলে ব্যবহার করুন ):
# cp /var/lib/libvirt/images/Win7.img /var/lib/libvirt/images/Win7.img.old
# mv /var/lib/libvirt/images/outdisk /var/lib/libvirt/images/Win7.img
এখন বুট!
আরও তথ্যের জন্য: man virt-resize
rawটাইপ হবে। উদাহরণস্বরূপ যদি আপনি বজায় রাখতে চান তবে আপনার qcow2মত রূপান্তরটি প্রয়োগ করা উচিত:qemu-img convert -O qcow2 /var/lib/libvirt/images/outdisk /var/lib/libvirt/images/outdisk.qcow2
আমি এর যে কোনও কাজ করার আগে আপনাকে পরামর্শ দিচ্ছি আপনি ডিস্ক চিত্রের সম্পূর্ণ অনুলিপিটি সেভাবেই রাখুন, তারপরে এটি যখন সমস্ত বিরতি হয় তখন আপনি এটি আবার শুরু করতে অনুলিপি করতে পারেন।
আপনার তিনটি জিনিস করতে হবে:
1) ডিস্ক চিত্রটি আরও বড় করুন। আপনার হোস্টে:
qemu-img resize foo.qcow2 +32G
এখন আপনার অতিথি একটি বড় ডিস্ক দেখতে পাচ্ছেন, তবে তারপরেও পুরানো পার্টিশন এবং ফাইল সিস্টেম রয়েছে।
2) ডিস্ক চিত্রের ভিতরে পার্টিশনটি আরও বড় করুন। এটির জন্য আপনাকে আপনার অতিথির একটি লাইভসিডি বুট করতে হবে, কারণ আপনি মাউন্ট করা পার্টিশনের সাথে গোলযোগ করতে পারবেন না। এটি বেশ জড়িত এবং সম্ভবত সবচেয়ে বিপজ্জনক অংশ। এটি এখানে অনুলিপি করা যথেষ্ট, তাই আমি এখন জন্য পরিবর্তে লিঙ্ক করব। আপনি এরকম কিছু করতে চান:
http://www.howtoforge.com/linux_resizing_ext3_partitions_p2
বা 2 বি) একটি নতুন পার্টিশন তৈরি করা সহজ (যদি আপনি আরও বেশি স্টোরেজ স্পেস চান) সহজ হবে fer Fdisk বা cfdisk ব্যবহার করুন বা যা কিছুতেই আপনি স্বাচ্ছন্দ্য বোধ করেন - আপনার অতিথি ডিস্কে এখন অবিরত স্থানের পুরো গুচ্ছটি দেখতে পাওয়া উচিত।
3) অবশেষে, আপনি যদি আপনার বিদ্যমান পার্টিশনটি পুনরায় আকার দিয়েছেন, নতুন বড় পার্টিশনের অভ্যন্তরে ফাইল সিস্টেমটি আরও বড় করুন (এটি আসলে যে কোনওভাবে উপরে লিঙ্কযুক্ত গাইডে রয়েছে)। আপনার অতিথির ভিতরে:
resize2fs /dev/sda1
আমি সিজিয়ামের উত্তরটি ঠিক আছে বলে মনে করি, একই জিনিসটি অর্জনের জন্য আমি কিছু অন্যান্য আদেশ লিখতে চাই।
ধরুন আপনার কাছে disk.imgডিস্ক ইমেজযুক্ত একটি ফাইল রয়েছে, যেমন এটির একটি বিভাজন সারণী এবং এক বা একাধিক পার্টিশন রয়েছে এবং বলুন আপনি শেষ বিভাজনটি আরও বড় করতে চান make আপনার যা করতে হবে তা হ'ল
1) পুরো ফাইলটি বড় করুন, 4 জিআইবি বলুন। এটি করার একটি দ্রুত উপায় হ'ল ব্যবহার করাdd
dd if=/dev/zero of=disk.img bs=1c seek=4G count=0
2) fdisk ব্যবহার করে পার্টিশনটি আরও বড় করুন (আমি আশা করি আমি পার্টড বা কোনও ভাল সরঞ্জামে এটি করতে পারতাম ... যে কেউ?)
fdisk disk.img
pপার্টিটন টেবিলটি মুদ্রণের জন্য টাইপ করুন এবং আপনার পার্টিশনের প্রারম্ভিক সেক্টর সন্ধান করুন, উদাহরণস্বরূপ পার্টিশন 2 সেক্টর 106496 থেকে শুরু হয়।
আপনি যা করবেন তা পার্টিশন টেবিল থেকে সেই পার্টিশনটি মুছে ফেলা এবং একটি নতুন পার্টিশন তৈরি করা যা ঠিক একই সেক্টর থেকে শুরু হয় তবে শেষের দিকে শেষ হয়। তারপরে পার্টিশনটিতে একটি বৈধ ফাইল সিস্টেম থাকবে।
dমুছে ফেলার জন্য পার্টিশন নম্বরটি টাইপ করুন এবং দিন। (Gulp!)
টাইপ করুন nএবং পছন্দসই পার্টিশন নম্বর দিন, এবং তারপরে শুরু সেক্টর। আপনি আগের মতো একই শুরুর ক্ষেত্রটি ব্যবহার করা উচিত। শেষ অবধি শেষ সেক্টর দিন বা কেবল fdisk আপনার ব্যবহার করতে পারেন সর্বোচ্চ সেক্টর চয়ন করুন।
wডিস্ক ইমেজ ফাইলে পরিবর্তনগুলি লিখতে টাইপ করুন এবং এফডিস্ক থেকে প্রস্থান করুন।
3) এখন আপনার ফাইল সিস্টেমটি আকার পরিবর্তন করতে হবে। এর জন্য আপনার ডিস্ক চিত্রের অভ্যন্তরে ফাইল সিস্টেমের (= অবস্থানের) অফসেটের প্রয়োজন। আপনি যদি সেক্টরের আকার জানেন (যা সাধারণত 512 হয়) বা আপনি ব্যবহার করতে পারেন তবে আপনি সেক্টর নম্বর থেকে এটি গণনা করতে পারেনparted
parted disk.img u b p
( partedকমান্ড লাইন আর্গুমেন্ট হিসাবে কমান্ড নিতে পারে, সুতরাং এর অর্থ 'ইউনিট বাইটস' এবং 'মুদ্রণ', সুতরাং এটি পার্টিশন টেবিলটি প্রিন্ট করে এবং আকার বেল্ট হিসাবে বাইট ব্যবহার করে))
এটি পার্টিশনটি শুরু এবং শেষ করে প্রিন্ট করে। বলুন যে আপনার পার্টিশনটি 54525952 এ শুরু হয়, তারপরে আপনি একটি লুপব্যাক ব্লক ডিভাইস তৈরি করেন losetup।
losetup -f --show -o 54525952 disk.img
losetupউদাহরণস্বরূপ, এটি কোনটি বেছে নিয়েছে তা আপনাকে জানায় /dev/loop0। এখন আপনি ব্যবহার করতে পারেন resize2fs:
resize2fs /dev/loop0
এবং অবশেষে লুপ ডিভাইসটি সরান
losetup -d /dev/loop0
সন্ধানের সেরা সমাধানটি এখানে:
http://www.linux-kvm.com/content/how-resize-your-kvm-virtual-disk
আমি মনে করি @ ক্যাসিয়াম যা বলেছিল তা উপরের অফিসিয়াল লিঙ্ক থেকে দেওয়া হয়েছে
আমি আশা করি এটি সাহায্য করবে
3 পদক্ষেপ:
1.qemu-img resize windows.qcow2 +5GB
2.GParted live cd to resize
3.reboot and use os tools to resize
#include <stdio.h>
static unsigned long auxfilesize(FILE* fp) {
unsigned long len=0;
int c=0;
while ( (c = fgetc(fp)) != -1 ) {
len++;
}
return len;
}
static unsigned long aux_copyNBytesFromTo(FILE* from, FILE* to,
unsigned long fromSize,
unsigned long bytes) {
unsigned long iter = 0;
while ( iter++ < fromSize ) {
int c = fgetc(from);
fputc(c, to);
}
iter-=1;
if ( fromSize < bytes ) {
while ( iter++ < bytes ) {
fputc(0, to);
}
}
return iter;
}
int main(int argc, char **argv) {
FILE *from = fopen(argv[1], "rb");
FILE *to = fopen(argv[2], "wb" );
unsigned long l = auxfilesize(from);
rewind(from);
aux_copyNBytesFromTo(from, to, l, (l + l/2)) ;
fclose(from);
fclose(to);
}
এই সাধারণ প্রোগ্রামটি ভার্চুয়াল চিত্রের শেষে এন বাইট যুক্ত করে। আমি নতুন নির্মিত চিত্রগুলি মার্জ করার জন্য উইন্ডোজ এক্সপি-র জন্য প্যারাগন পার্টিশন চিত্রটি ব্যবহার করেছি। এখানে ঠিক আছে।
ddবা truncate...
virsh edit virt_nameএবং ডিস্কের উত্সের পথটি নতুনটিতে পরিবর্তন করতে পারেন। তারপরে যদি এটি কাজ না করে তবে এটি আবার পরিবর্তন করুন এবং আবার চেষ্টা করুন। আপনি যখন 2 দিয়ে এটি করতে পারতেন তখন 3 টি চিত্র থাকার খুব বেশি দরকার নেই