Calm Hill My Random Thoughts

Increasing the EBS Volume

Amazon EBS မှာဖြစ်လေ့ရှိတာက Instance တစ်ခု Create လုပ်ကတည်းက များများယူထားရင်ရပေမယ့် အသုံးမလိုသေးရင် EBS ဖိုးပိုကုန်တဲ့အတွက် နည်းနည်းယူရာကနေ ယူထားတဲ့ EBS Volume သုံးနေရင်းနဲ့ မလောက်တာ တခါတရံ ဖြစ်လေ့ရှိတယ်။ တကယ်တော့ Phyiscal Server တွေဆိုရင်တော့ Space မလောက်တော့ရင် Hardrive တွေထပ်ထည့်နဲ့ အချိန်အတော်ကြာမယ့်အလုပ် ဒါပေမယ့် Cloud Service တွေအနေနဲ့ကတော့ လွယ်ပါတယ် အချိန်ကလည်း သိပ်မကြာပါဘူး ဒါပေမယ့် လူအလိုနတ်မလိုက်နိုင်တဲ့ အချိန်ကိုရောက်လာတယ် Instance တစ်ခုကို Click နှစ်ခါသုံးခါနှိပ်နဲ့ရတာ Volume ကိုလည်း နံပါတ်လေးပြောင်းပေးရင် မရဘူးလားဆိုပြီး ဖြစ်ချင်တဲ့ခေတ်ကို ရောက်လာတယ် ဒါပေမယ့်အဲဒီ အခြေအနေလောက်အထိ မရသေးတာတော့အမှန်ပဲ Manual လုပ်ပေးဖို့လိုသလို ကြံဖန်ကြည့်သလောက်ကတော့ Realtime အလုပ်လုပ်နေတဲ့ Data တွေထားတဲ့ EBS သာဖြစ်မယ်ဆိုရင် Multiple Server တွေနဲ့ Load balance လုပ်နေတဲ့ Environment မဟုတ်ရင်တော့ Zero Downtime ရဖို့အတော်ခက်ပါတယ်။ Downtime လက်ခံနိုင်ရင်တော့ EBS Volume ကို Increase လုပ်တာက လွယ်ပါတယ်။

  1. EBS Volume ကို Snapshot လုပ်ဖို့အတွက် Instance ကို Stop လုပ်ရပါမယ်။ Snapshot လုပ်ချိန်ဟာဟာ Volume Size အပေါ်မူတည်ပြီးတော့ အချိန်ကြာပါတယ်။ ဒီနေရာမှာ ၂ မျိုးဖြစ်နိုင်ပါတယ် EBS Volume ဟာ Web Server လို File Server လိုဖြစ်လို့ Snapshot လုပ်နေတဲ့အချိန်အတွင်းမှာ Data အရေးအဖတ် မရှိဘူးဆိုရင်တော့ Instance ကို Stop မလုပ်ပဲ Snapshot လုပ်လို့ရပါတယ် ဒါဆိုရင်တော့ Downtime လျော့ပါလိမ့်မယ်။ အဲဒီလိုမဟုတ်ပဲ Data အရေးအဖတ် ရှိနေနိုင်ရင်တော့ Stop လုပ်လိုက်တာ အလွယ်ဆုံးဖြစ်ပါလိမ်မယ် မဟုတ်ရင်တော့ Snapshot စတဲ့အချိန်ကနေ ပြီးတဲ့အချိန်ကြားက Data တွေကို Manual ပြန်ရွှေ့ရပါလိမ့်မယ်။
  2. Snapshot ပြီးပြီဆိုရင် ရလာတဲ့ Snapshot ကို EBS Volume တစ်ခုအဖြစ် Create လုပ်ရမယ် Create လုပ်တဲ့အချိန်မှာ EBS Volume Size ကို ကိုယ်လိုချင်တဲ့ အရွယ်အစားကို တိုးပေးလို့ရပါတယ်။ တစ်ခုသတိထားရမှာက အခုပြောနေတဲ့နည်းလမ်းဟာ Size ကိုလျှော့ဖို့အတွက်သုံးလို့မရပါဘူး လျှော့လိုက်ရင် အလုပ်လုပ်ချင်မှ လုပ်ပါလိမ့်မယ်။
  3. EBS Volume အသစ်ရပြီဆိုရင်တော့ Instance ကို Stop မလုပ်ရသေးရင် Stop လုပ်ရပါမယ် ပြီးရင်တော့ Volume အဟောင်းကို Detach လုပ်ပြီးတော့ Volume အသစ်ကို Attach ပြန်လုပ်ရမယ် သတိထားရမှာက Volume အဟောင်းကို အရင်တပ်ထားတဲ့ Device Interface မှာပဲပြန်တပ်ပါ ပြီးသွားရင်တော့ Instance ကို Start ပြန်လုပ် Elastic IP တွေကိုပြန်ပြီးတော့ Assign ပြန်လုပ်ပါ။ Instance ဟာအရင်အတိုင်း အလုပ်လုပ်ပါလိမ့်မယ်။
  4. Volume အသစ်ကိုတပ်ထားပေမယ့် Instance ထဲမှာတော့ Volume အဟောင်းရဲ့ Size အတိုင်းပဲသိနေသေးတယ် အဲဒါအတွက်က Filesystem ကို Resize ပြန်လုပ်ရပါတယ် ext3 ဆိုရင်တော့ အောက်မှာပြထားတဲ့ Command ကိုသုံးရင်ရပါတယ်။ တစ်ခြား Filesystem ဆိုရင်တော့ သက်ဆိုင်ရာ Filesystem အလိုက် Resize ကိုဘယ်လိုလုပ်သလဲ ကွဲပြားပါလိမ့်မယ်။ အဲဒါတွေပြီးရင်တော့ Volume အသစ်ကို Resize လုပ်ထားတာ အပြည့်သုံးလို့ရပါပြီ။
sudo resize2fs /dev/sda1 (Note: some distro use sda to xvda)

အပေါ်မှာပြောထားတာက Resize လုပ်ဖို့အတွက် အလွယ်ဆုံးနည်းကို ရေးထားတာပါ Downtime ကိုနည်းနိုင်သမျှနည်းအောင် လုပ်ဖို့အတွက်ကတော့ ကိုယ်အပင်ပန်းခံနိုင်သလောက် Scenario တွေအများကြီးဖြစ်နိုင်ပါတယ်။