কম্পিউটার

কেভিএম:ভার্চুয়াল মেশিন ডিস্কের আকার কীভাবে প্রসারিত বা সঙ্কুচিত করবেন?

এই নিবন্ধে আমরা জনপ্রিয় ডিস্ক প্রকারের জন্য KVM ভার্চুয়াল মেশিন ডিস্কের আকার পরিবর্তন করার বিষয়ে কথা বলব। আমরা দেখাব কিভাবে সঠিকভাবে লিনাক্সে KVM হাইপারভাইজারে একটি ভার্চুয়াল মেশিন ডিস্কের আকার ডেটা হারানো ছাড়াই বাড়ানো যায় এবং ডিস্কের আকার কমানোর বিকল্পগুলি নিয়ে আলোচনা করব।

কিভাবে একটি KVM ভার্চুয়াল মেশিন ডিস্কের আকার বাড়াতে/প্রসারিত করবেন?

KVM-এ ভার্চুয়াল ডিস্ক বাড়ানো

আসুন 20GB ভার্চুয়াল ডিস্কের আকার বাড়ানোর একটি উদাহরণ বিবেচনা করি। ভার্চুয়াল ডিস্ক সেটিংস পরিবর্তন করার আগে VM বন্ধ করুন।

একটি KVM ভার্চুয়াল মেশিনের ভার্চুয়াল ডিস্ক সেটিং দেখতে, এই কমান্ডটি ব্যবহার করুন:

qemu-img info /path_to_disk

আপনি এই মত ফলাফল দেখতে পাবেন:

কেভিএম:ভার্চুয়াল মেশিন ডিস্কের আকার কীভাবে প্রসারিত বা সঙ্কুচিত করবেন?

আমরা দেখি যে দুটি ক্ষেত্র রয়েছে যা আকার দেখায়:ভার্চুয়াল_সাইজ এবং ডিস্ক_সাইজ:

  • ভার্চুয়াল_সাইজ - ডিস্ক তৈরি বা প্রসারিত করার সময় একটি ভার্চুয়াল ডিস্ক সেটের আকার (এই উদাহরণে, সর্বাধিক ডিস্কের আকার 20GB);
  • ডিস্ক_সাইজ — ডিস্ক ফাইলের বর্তমান আকার, i. e., একটি ফিজিক্যাল সার্ভারে ডিস্ক কতটা জায়গা দখল করে (শুধুমাত্র qcow ডিস্ক ফরম্যাটে প্রযোজ্য)। আমাদের উদাহরণে, ভার্চুয়াল ডিস্ক স্টোরেজে মাত্র 1.6GB নেয়।
এবং KVM ডিস্কের ধরন (ফরম্যাট) সম্পর্কে কিছু শব্দ। আমি qcow2 ব্যবহার করার পরামর্শ দিই raw এর পরিবর্তে KVM এ ভার্চুয়াল মেশিন তৈরি করার সময়। পরে আমি ব্যাখ্যা করব কেন।

পরবর্তী ধাপে, আমি ভার্চুয়াল মেশিনের আকার 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 সরঞ্জাম ব্যবহার করা হয়।

সেন্টস লিনাক্স চালানো ভার্চুয়াল মেশিনে কীভাবে একটি পার্টিশন প্রসারিত করবেন?

KVM সার্ভারের দিকে ভার্চুয়াল ডিস্কের আকার বাড়ানোর পরে, আপনার ভার্চুয়াল মেশিন চালু করুন এবং এটির সাথে সংযোগ করুন। আমরা হার্ড ডিস্ক পার্টিশন ম্যানেজমেন্ট টুল fdisk ব্যবহার করব পার্টিশন এবং ফাইল সিস্টেমের আকার প্রসারিত করতে।

SSH-এর মাধ্যমে VM গেস্ট ওএস-এর সাথে সংযোগ করুন এবং নিশ্চিত করুন যে অতিরিক্ত 5 গিগাবাইট ডিস্ক স্পেস দেখা যাচ্ছে।

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 - আমরা একটি নতুন পার্টিশন তৈরি করেছি এবং এন্টার বা p টিপুন , তারপর আবার এন্টার টিপুন, যেহেতু আমরা যে পার্টিশনটি তৈরি করার চেষ্টা করছি তা ডিফল্টরূপে 2 হবে;
  • প্রথম এবং শেষ সেক্টরটি নির্দিষ্ট করার সময় আপনি যদি পার্টিশনটিকে সর্বোচ্চ পর্যন্ত প্রসারিত করতে চান তবে আমরা শুধু এন্টার টিপুন। আপনি যদি নির্দিষ্ট আকার সেট করতে চান, মেনু +size{K,M,G};
  • তে দেখানো শেষ সেক্টরে ডিস্কের আকার লিখুন
  • /w — নতুন সেটিংস প্রয়োগ করতে।

VM পুনরায় চালু হওয়ার পরে, এই কমান্ডটি ব্যবহার করে ডিস্কটি পরীক্ষা করুন:

xfs_growfs /dev/vda2

কিছু উত্স নিম্নলিখিত কমান্ড ব্যবহার করার পরামর্শ দেয়:

resize2fs /dev/vda2

কিন্তু এটি XFS ফাইল সিস্টেমের জন্য কাজ করবে না!

এইভাবে, আপনি CentOS 7 চালিত ভার্চুয়াল মেশিনে ডিস্কের আকার প্রসারিত করেছেন।

কিভাবে গেস্ট উইন্ডোজ সার্ভারে ডিস্কের আকার বাড়াবেন?

RDP বা VNC ব্যবহার করে Windows সার্ভার ভার্চুয়াল মেশিনের সাথে সংযোগ করুন এবং ডিস্ক প্রসারিত করুন।

  1. ওপেন সার্ভার ম্যানেজার -> টুলস -> কম্পিউটার ম্যানেজমেন্ট;
  2. স্টোরেজ নির্বাচন করুন -> ডিস্ক ব্যবস্থাপনা বাম ফলকে। আপনার সমস্ত ডিস্ক পার্টিশন এবং যোগ না করা স্থান উপস্থিত হবে; কেভিএম:ভার্চুয়াল মেশিন ডিস্কের আকার কীভাবে প্রসারিত বা সঙ্কুচিত করবেন?
  3. আপনি যে পার্টিশনটি বাড়াতে চান সেটি নির্বাচন করুন এবং ভলিউম প্রসারিত করুন ক্লিক করুন; কেভিএম:ভার্চুয়াল মেশিন ডিস্কের আকার কীভাবে প্রসারিত বা সঙ্কুচিত করবেন?
  4. ডিফল্টরূপে সমস্ত উপলব্ধ স্থান ডিস্কের আকার বাড়ানোর জন্য দেওয়া হবে; কেভিএম:ভার্চুয়াল মেশিন ডিস্কের আকার কীভাবে প্রসারিত বা সঙ্কুচিত করবেন?
  5. এক্সটেনশন শেষ করতে পরবর্তীতে ক্লিক করুন। এর পরে, আপনার পার্টিশনের আকার বাড়ানো হবে। কেভিএম:ভার্চুয়াল মেশিন ডিস্কের আকার কীভাবে প্রসারিত বা সঙ্কুচিত করবেন?

আমি নোট করতে চাই যে আপনার ভার্চুয়াল মেশিন ডিস্ক এক্সটেনশনের আগে আমি ভার্চুয়াল ডিস্ক ব্যাক আপ করার পরামর্শ দিই। ভার্চুয়াল মেশিন বন্ধ করুন এবং কিছু খালি জায়গা থাকা ব্যাকআপ ডিরেক্টরিতে ডিস্ক চিত্রটি অনুলিপি করুন। যদি এক্সটেনশন প্রক্রিয়া চলাকালীন কিছু ভুল হয়ে যায়, আপনি সর্বদা ব্যাকআপ থেকে ভার্চুয়াল ডিস্ক চিত্রটি পুনরুদ্ধার করতে সক্ষম হবেন৷

কেভিএম ভার্চুয়াল মেশিনের ডিস্কের আকার কীভাবে কমানো যায়?

আমার কাজের মধ্যে আমি প্রায়ই এই সমস্যাটি দেখতে পাই, কিন্তু দুর্ভাগ্যবশত, আপনি নিরাপদে KVM এ ভার্চুয়াল মেশিনের ডিস্কের আকার কমাতে পারবেন না। ভৌত স্টোরেজে ভার্চুয়াল ডিস্কের আকার হ্রাস করার একমাত্র গ্রহণযোগ্য উপায় হল ডিস্ককে রূপান্তর করা।

একটি KVM ভার্চুয়াল মেশিনে কীভাবে ডিস্কের স্থান কমাতে হয় তা জানাতে ওয়েবে অনেক গাইড রয়েছে, কিন্তু এটি কাজ করে না৷

আমি কিছু উদাহরণ দেব যা আমি দেখেছি এবং পরীক্ষা করেছি৷

Qemu ব্যবহার করে KVM ডিস্কের আকার হ্রাস করা

কিছু রিসোর্স বর্ণনা করে যে আপনি কিউমু টুল দিয়ে করতে পারেন। তারা এই কমান্ডটি ব্যবহার করে একটি ভার্চুয়াল মেশিন ডিস্কের স্থান হ্রাস করার প্রস্তাব দেয়:

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 ব্যবহার করে সিস্টেমে ডিস্কের আকার হ্রাস করার চেষ্টা করেছি, কিন্তু আপনি শারীরিক সার্ভারে আপনার ডিস্ক সঙ্কুচিত করা এড়িয়ে গেলেও সিস্টেমটি বুট হবে না। এবং এটা বেশ যৌক্তিক। আমরা যে পার্টিশনটি কমানোর চেষ্টা করছি সেটি হল একটি সিস্টেম, এবং OS বুট হবে না কারণ এর আকার কমানোর চেষ্টা করার সময় এটির তথ্য স্পষ্টতই মুছে যায়৷

চিত্র প্রতিস্থাপন ব্যবহার করে একটি ভার্চুয়াল ডিস্কের আকার হ্রাস করা

এই গাইডগুলির কম জনপ্রিয় বৈকল্পিক হল ডিস্ক প্রতিস্থাপন ব্যবহার করে ডিস্কের স্থান হ্রাস করা। এর মানে হল যে আপনি আপনার প্রয়োজনীয় ডিস্কের আকার সহ একটি নতুন ভার্চুয়াল মেশিন তৈরি করুন। তারপরে আপনি পুরানোটির সাথে নতুন ডিস্ক চিত্রটি প্রতিস্থাপন করুন এবং এটি বিভিন্ন উত্সের বর্ণনার উপর ভিত্তি করে কাজ করে। আমি এই পদ্ধতিটি পরীক্ষা করেছি, এবং ফাইল সিস্টেমটি আগের বৈকল্পিকটির মতো অকার্যকর হয়ে উঠেছে। এখানে কমান্ডের একটি উদাহরণ:

virt-resize /old_disk_image /new_disk_image

এমন কিছু পদ্ধতিও ছিল যা কাঁচা থেকে qcow2 ফরম্যাটে ডিস্ক রূপান্তর ব্যবহার করত, কিন্তু আমি প্রাথমিকভাবে এই বিন্যাসে মেশিন তৈরি করছি এবং কেন আমি তা করি তা এখানে ব্যাখ্যা করা হয়েছে।

KVM ডিস্ক ফরম্যাট এবং QCOW2 ডিস্ক কম্প্রেশন

নিবন্ধের শুরুতে আমি এই দুটি ডিস্ক বিন্যাস উল্লেখ করেছি:raw এবং 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 *****

# du -sh /image_path

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-এ ডিস্কের আকার (কোন কমপ্রেশন নয়) কমানোর জন্য অন্য কোন সত্যিকারের কার্যকরী পদ্ধতি জানেন, সেগুলি এখানে বর্ণনা করুন এবং আমি সেগুলি পরীক্ষা করব৷


  1. হাইপার-ভি 2019 এ কীভাবে একটি ভার্চুয়াল ডিস্ক যুক্ত করবেন

  2. কিভাবে উইন্ডোজ 10 এ একটি ভার্চুয়াল মেশিন তৈরি করবেন

  3. কিভাবে vSphere হাইপারভাইজার ESXi 6.7 এ একটি ভার্চুয়াল মেশিন তৈরি করবেন

  4. কিভাবে ফিজিক্যাল মেশিনকে ভার্চুয়ালবক্স মেশিনে রূপান্তর করা যায়।