Page cover

KVM မှာ virtual disk တွေကို ဘယ်လို resize လုပ်လို့ရသလဲ

အခုနောက်ပိုင်းမှာ စာရေးသူ QEMU/KVM အကြောင်းတွေကိုပြန်လည်လေ့လာဖြစ်နေပြန်ပါတယ်။ Vagrant နဲ့ Virtualbox ကိုတွဲပြီးအသုံးပြုရတာ အဆင်ပြေပေမယ့်လည်း performance ပိုင်းမှာ QEMU/KVM ကိုမမှီတဲ့ အပိုင်းတွေအများကြီးရှိနေပြန်ပါတယ်။ QEMU/KVM တခုတည်းအသုံးပြုမယ်လို့ ဆိုရင်လည်း Virtualbox မှာလောက် မလွယ်ကူပြန်ပါ။ Vagrant နဲ့ KVM ကိုတွဲပြီးအသုံးပြုပြန်ရင်လည်း Vagrant box အများစုက Virtualbox အတွက် ပြင်ဆင်ထားတာများတာကြောင့် အဆင်မပြေပြန်ပါ။ နောက်ဆုံးတော့ LXD ကိုမျက်စိကျပြီးနောက် LXC container တွေကိုထဲထဲဝင်ဝင် အသုံးပြုနေရင်းမှ LXD မှာလည်း VM တွေကို ဖန်တီးနိုင်တယ်ဆိုတာ ထပ်မံလေ့လာရပြန်ပါတယ်။ လက်ရှိမှာတော့ LXD ဟာစာရေးသူအတွက် LXC container နဲ့ပြီးမယ့် lab environment တွေအတွက်သုံးဖြစ်ပါတယ်။ Vagrant နဲ့ Virtualbox ကိုတော့ VM နဲ့မှ စမ်းသပ်လို့ရမယ့် lab environment တွေမှာသုံးဖြစ်နေပါသေးတယ်။ တပြိုင်တည်းမှာ QEMU/KVM ကို စာရေးသူရဲ့ local machine ပေါ်မှာပဲ virt-manager နဲ့ဖြစ်ဖြစ်၊ Vagrant နဲ့ပဲဖြစ်ဖြစ်၊ LXD နဲ့ VM တွေကိုဖန်တီးဖြစ်တဲ့အခါမှာပဲဖြစ်ဖြစ်၊ Proxmox ပေါ်မှာ VM တွေအလွယ်တကူဖန်းတီးဖြစ်ရင်လည်း KVM ကိုသုံးဖြစ်နေပြီးသားမို့၊ bare-bone KVM အကြောင်းသိထားတာ စာရေးသူအတွက်အရှုံးမရှိပါ။

Proxmox မှာဆိုရင် VM ရဲ့ virtual disk ကို WebUI ကနေပဲဖြစ်ဖြစ်၊ CLI ကနေပဲဖြစ်ဖြစ် အလွယ်တကူ resize လုပ်လို့ရနိုင်ပါတယ်။ LVM ကိုသုံးရင် ကိုယ်ကြိုက်တဲ့ disk ကို expand လုပ်ပြီး သက်ဆိုင်ရာ filesystem မှာ grow လုပ်လိုက်ရုံပါပဲ။ အဲ့ဒီ process ကို bare-bone KVM မှာအဆင့်ဆင့်ဘယ်လိုမျိုး လုပ်သလဲဆိုတာကို ဒီ post မှာရှင်းလင်းလိုပါတယ်။ Demo အတွက် စာရေးသူ VM ထဲမှာ Almalinux 8 ကိုအသုံးပြုထားပါတယ်။ ဘယ် Linux distribution မှာဖြစ်ဖြစ် လုပ်ရတဲ့လုပ်ငန်းစဉ်က အတူတူပါပဲ။

21 GB ရှိတဲ့ virtual disk ကို 25 GB ဖြစ်အောင် လုပ်ပြီး လိုအပ်တဲ့ partition မှာထည့်သုံးသွားမှာဖြစ်ပါတယ်။ ဘယ်လိုလုပ်သလဲဆိုတာ ကြည့်လိုက်ရအောင်။ သတိပြုရမှာက ကိုယ်က home lab မှာစမ်းသပ်ဖို့အတွက်ဆိုရင်တော့ စိတ်ကြိုက်လုပ်နိုင်ပေမယ့်၊ production environment မှာဆိုရင် data တွေကို backup အရင်လုပ်ထားဖို့မှာချင်ပါတယ်။ စာရေးသူ အပါအဝင် နည်းပညာသမားတွေဟာ အလွယ်ဆုံး၊ အမြန်ဆုံးလမ်းကို လိုက်နေကြမို့ သတိကပ်ဖို့ ကြိုတင်အသိပေးတာဖြစ်ပါတယ်။

ပထမဆုံးအနေနဲ့ VM ကို shutdown လုပ်ပြီး ကိုယ်လိုချင်တဲ့ size ကိုအရင်ဆုံးပြောင်းပေးရပါ့မယ်။ ဒီနေရာမှာ... စာရေးသူ 1 GB ကိုပထမဆုံးတခေါက်မှာ အရင်ပေါင်းထည့်ပြီးသားမို့ အခုတခါ 4 GB ပဲထပ်တိုးပေးလိုက်ရအောင်။ qemu-img reszie ဆိုတဲ့ command ကိုအသုံးပြုပါတယ်။ size ကိုတိုးပြီးတဲ့အခါမှာလည်း ကိုယ်လိုချင်တဲ့ size မှန်မမှန်ကိုလည်း qemu-img info ဆိုတဲ့ command နဲ့စစ်ကြည့်လို့ရပါတယ်။ အဲ့လို စစ်ကြည့်လိုက်ရင် virtual size ဆိုတဲ့ နေရာမှာ 25 GB ဆိုပြီးပြနေပါလိမ့်မယ်။ စိတ်တိုင်းကျပြီဆိုရင် VM ကိုပြန်စလို့ရပါပြီ။ Terminal ထဲမှာ ဘယ်လိုမျိုးလုပ်သလဲဆိုတာကြည့်လိုက်ရအောင်။

## shutdown the VM first before resize the virtual disk
tyla@e32:~$ virsh shutdown almalinux8 
Domain 'almalinux8' is being shutdown


## resize the .qcow2 file on host machine
tyla@e32:~$ sudo qemu-img resize /data/kvm/almalinux8.qcow2 +4G
Image resized.


## verify if the virtual size is now 25 GB
tyla@e32:~$ sudo qemu-img info /data/kvm/almalinux8.qcow2 
image: /data/kvm/almalinux8.qcow2
file format: qcow2
virtual size: 25 GiB (26843545600 bytes)
disk size: 2.63 GiB
cluster_size: 65536
Format specific information:
    compat: 1.1
    compression type: zlib
    lazy refcounts: true
    refcount bits: 16
    corrupt: false
    extended l2: false
Child node '/file':
    filename: /data/kvm/almalinux8.qcow2
    protocol type: file
    file length: 20 GiB (21478375424 bytes)
    disk size: 2.63 GiB


## start the VM 
tyla@e32:~$ virsh start almalinux8 
Domain 'almalinux8' started


## verify if the VM is running
tyla@e32:~$ virsh list 
 Id   Name         State
----------------------------
 9    almalinux8   running

VM ရဲ့ status က running လို့ပြနေရင် ssh နဲ့ပြန်ဝင်ပြီး fdisk command နဲ့ လုပ်အပ်တဲ့ အချက်အလက်တွေကို သေချာပြန်ပြီး verify လုပ်ပါ။ အောက်ဖော်ပြမြင်ရတဲ့အတိုင်းပဲ vda1 က 1 GB နဲ့ vda2 က 19 GB လို့ပြနေပါလိမ့်မယ်။

fdisk အပြင်နောက်ထပ်အသုံးဝင်တဲ့ commands က lsblk နဲ့ df ပါ။ ဘယ် mount point က ဘယ် partition ပေါ်မှာ setup လုပ်ထားသလဲဆိုတာ အောက်မှာပြထားသလိုမျိုး စစ်ဆေးကြည့်နိုင်ပါတယ်။ မြင်တွေ့ရတဲ့အတိုင်း /boot ဆိုတဲ့ mount point ကို vda1 ပေါ်မှာ 1 GB ပေးထားပြီးတော့ / နဲ့ SWAP ကို vda2 ပေါ်မှာ 17 GB နဲ့ 2 GB ဆိုပြီးပေးထားပါတယ်။ df ရဲ့ output ကိုကြည့်မယ်ဆိုရင်လည်း xfs ဆိုတဲ့ filesystem ကိုအသုံးထားတာကိုတွေ့ရမှာဖြစ်ပါတယ်။

လိုအပ်တဲ့ အခြေခံအချက်အလက်တွေကို စုဆောင်းပြီးနောက် LVM ကိုအသုံးပြုပြီး partition ရဲ့ size တွေကိုစတင် resize လုပ်လို့ရနိုင်ပါပြီ။ pvs ဆိုတဲ့ LVM command ကိုအသုံးပြုတဲ့အခါမှာ /dev/vda2 တခုတည်းကိုသာ တွေ့ရမှာဖြစ်ပါတယ်။ /dev/vda1 မှာ LVM ကိုမသုံးထားတာကို သတိပြုရမှာဖြစ်ပါတယ်။

fdisk ကိုပဲအသုံးပြုပြီး /dev/vda disk ရဲ့ /dev/vda1 partition ကိုအရင်ဆုံး resize လုပ်ဖို့လိုပါလိမ့်မယ်။ ကိုယ်ပြင်ချင်တဲ့ partition ကိုပထမဆုံး ဖျက်ပစ်ပြီး ကိုယ်လိုချင်တဲ့ size ကိုပြောင်းလဲယူရမှာဖြစ်ပါတယ်။ ဒီအဆင့်မှာ သတိပြုရမှာက ဖျက်ပစ်တယ်လို့ဆိုပေမယ့် partition table ထဲက entry ကိုပဲဖျက်တာဖြစ်ပြီး၊ အဲ့ဒီ partition ထဲက data တွေကို ဖျက်ပစ်မှာမဟုတ်ပါဘူး။ သို့သော်... backup အရင်လုပ်ထားနိုင်တယ်ဆိုရင်တော့ အကောင်းဆုံးပါ။ နောက်တချက်က LVM type ကို ပြန်လည် setup လုပ်တဲ့အခါမှာ Do you want to remove the signature? [Y]es/[N]o: လို့မေးတဲ့နေရာရောက်ရင် N သို့မဟုတ် No လို့ဖြေပေးရပါ့မယ်။ ဒီနေရာမှာ သတိထားပြီးတော့ တဆင့်ပြီးတဆင့် လုပ်သင့်ပါတယ်။

lsblk နဲ့ နောက်တခါထပ်စစ်ကြည့်လိုက်ပါ။ မြင်တွေ့ရတဲ့အတိုင်း vda2 partition ဟာ 24 GB ဖြစ်နေတာကိုတွေ့ရမှာပါ။ ဒီဆိုရင်တော့ LVM ရဲ့ physical volume ကို pvresize command နဲ့စတင်ပြောင်းလဲနိုင်ပါပြီ။ Resize လုပ်ပြီးနောက် pvs နဲ့ သေချာအောင် verify လုပ်လုပ်လိုက်ပါ။

Physical volume ကို resize လုပ်ပြီးနောက် LVM ရဲ့ volume group မှာဘယ်လောက်ထပ်တိုးလာသလဲဆိုတာကို vgs ဆိုတဲ့ command နဲ့ စစ်ကြည့်နိုင်ပါတယ်။ အောက်မှာမြင်တွေ့ရတဲ့အတိုင်း 5 GB ထပ်တိုးလာတာကိုတွေ့မြင်နိုင်ပါတယ်။ ဒါဆိုရင်တော့ ထပ်တိုးလာတဲ့ 5 GB အကုန်လုံးကို LVM ရဲ့ logical volume ထဲမှာတိုးပေးဖို့အတွက် lvextend -l +100%FREE /dev/almalinux/root ဆိုတဲ့ command ကိုသုံးရပါ့မယ်။ ဒီလိုတိုးပြီးရင် lvs ဆိုတဲ့ command နဲ့ logical volume size ကို verify လုပ်ကြည့်နိုင်ပါတယ်။

နောက်တခါ lsblk နဲ့ / mount point ကိုစစ်ကြည့်တဲ့အခါမှာ 22 GB ဖြစ်နေတာကိုတွေ့ရမှာပါ။ အရှေ့မှာ စစ်ကြည့်ထားလို့ xfs ဆိုတဲ့ filesystem ကိုအသုံးပြုထားတာသိရှိပြီးတဲ့အတွက် xfs_growfs ဆိုတဲ့ command နဲ့ / mount point ရဲ့ filesystem ကို grow လုပ်ပေးရပါလိမ့်မယ်။ နောက်ဆုံးအနေနဲ့ df command ကိုအသုံးပြုပြီး / mount point ကိုစစ်ကြည့်လိုက်ရင် ကိုယ်လိုချင်တဲ့ size ကိုတိုးပြီးမြင်နိုင်မှာဖြစ်ပါတယ်။

အထက်မှာရှင်းပြသွားတဲ့အတိုင်း အရမ်းကြည့်တော့မခက်ခဲ့တဲ့ process တခုဖြစ်ပေမယ့်လည်း တခါမှာမလုပ်ဘူးရင် KVM မှာ virtual disk တွေကို non-destructive နည်းနဲ့ ဘယ်လိုလုပ်ရသလဲဆိုတာ အလွယ်တကူ ရှာကြည့်ပြီး စမ်းသပ်ဖို့အနည်းငယ်လက်ဝင်ပါလိမ့်မယ်။ ကိုယ်တိုင်မလုပ်ဘူးရင် သေချာရှင်းရှင်းလင်းလင်း နားလည်ဖို့အတွက် ခက်ခဲ့နိုင်တာကြောင့် lab environment မှာအနည်းဆုံး တစ်ခေါက်လောက်တော့ အစအဆုံး စမ်းသပ်ဖို့တိုက်တွန်းလိုပါတယ်။

Last updated

Was this helpful?