Storage အကြောင်းတစေ့တစောင်း – အပိုင်း(၅)
Last updated
Last updated
Linux ရဲ့ Logical Volume Manager (LVM) ကို နားလည်ရင် Logical Unit Number (LUN)ဆိုတာဘာလည်းသိပါပြီ။ ဆိုကြပါတော့… LVM မှာဆိုရင် ရိုးရိုး hard disks ပဲဖြစ်ဖြစ်၊ Hardware/Software RAID ပဲဖြစ်ဖြစ် ကိုယ့်ရဲ့ Linux server ထဲမှာထည့်ထားပြီး၊ configure လုပ်ထားကြတယ်ဆိုရင်၊ physical disks အဆင့်မှာ အဆင့်သင့်ဖြစ်ပါပြီ။ အဲ့ဒီ disks တွေပေါ်မှာ file system တစ်ခုတည်ဆောက်ဖို့အတွက် ကိုယ်ကြိုက်နှစ်သက်သလောက် partition ချ၊ ပြီးနောက် volume ရဲ့ အရွယ်အစားကို ကိုယ်လိုသလို သတ်မှတ်ပြီးတော့ format ပေးလိုက်ရင်ဖြင့် ကိုယ်အသုံးပြုနိုင်တဲ့ storage တစ်ခုကို mount point တစ်ခုရပါပြီ။ သို့သော် အချိန်တန်လို့ storage ကိုထပ်လိုလို့ ပေါင်းထည့်ရမယ်ဆိုရင်ဖြင့် ထို mount ကိုပြန်ပြီးဖြုတ်ရတာနဲ့ RAID ကို reconfigure ပြန်လုပ်ရတာ downtime တွေရှိနိုင်သလိုပဲ၊ ရှုပ်ထွေးပြီး reconfigure လုပ်ရခက်တဲ့ အနေအထားတွေနဲ့ ကြုံရင် ခေါင်းခဲရပါပြီ။
ဒီတော့… ဘယ်လိုမျိုး အဲ့ဒီပြဿနာကို ဖြေရှင်းမလဲဆိုတော့ကာ၊ Linux မှာ LVM ကိုအသုံးပြုနိုင်ပါတယ်။ LVM ရဲ့ အားသာချက်က disk space တွေကို ကိုယ်လိုသလို on the fly အတိုးအလျှော့ လုပ်လို့ရနိုင်သလို၊ end users တွေအတွက်လည်း လုံးဝ downtime မရှိတဲ့အတွက် Linux server တစ်ခုမှာမရှိမဖြစ်လိုအပ်တဲ့ tool တစ်ခုပါ။ ဒီလိုပဲ LUN ဟာလည်း block-level storage တွေ ဖြစ်တဲ့ SAN မှာ SCSI targets တွေကို အသုံးပြုပြီး logical block storage unit တွေကို လိုတိုးပိုလျှော့လုပ်နိုင်အောင် implement လုပ်ထားတာပဲဖြစ်ပါတယ်။ Network storage protocol မှာ ထို block-level storage တွေနဲ့ တွဲပြီးတော့ အသုံးပြုနိုင်တဲ့ Fibre Channel နဲ့ iSCSI ဆိုပြီး အသုံးများတဲ့ protocol နှစ်ခုရှိပါတယ်။ Fibre Channel လိုမျိုး protocol ကို အသုံးပြုဖို့အတွက်တော့ သူ့အတွက်သီးသန့် SAN infrastructure ကောင်းကောင်း တစ်ခုရှိမှရပါတယ်။ Fibre Channel Protocol (FCP) ဟာ Ethernet IP-based protocol တစ်ခုမဟုတ်တဲ့အတွက် သူ့အတွက်သီးသန့် switched fabric လိုပါတယ်။ iSCSI က IP-based ဖြစ်တဲ့အတွက် Ethernet frame ကိုပဲအသုံးပြုပြီး LUN နဲ့ တွဲပြီး အလုပ်လုပ်တယ်။ Performance နဲ့ scalability မှာ FCP ဟာ LUN အတွက် အသင့်တော်ဆုံးဖြစ်ပြီးတော့၊ data centre တွေနဲ့ cloud native တွေရဲ့ back-end storage တွေအနေနဲ့ အသုံးပြုလေ့ရှိပါတယ်။ ဒီနေရာမှာLUN နဲ့ သက်ဆိုင်တာတွေကို အသေးစိတ်မသွားတော့ပါဘူး။ လိုရင်းဖြစ်တဲ့ object storage အကြောင်း ကိုပဲဦးတည်ပြီး သွားလိုက်ရအောင်။
Object storage ကို Object-based Storage လို့လည်းခေါ်ကြသလို၊ cloud storage ဆိုပြီးလည်း အလွယ်ခေါ်တတ်ကြတယ်။ အခုနောက်ပိုင်းမှာတော့ object storage လို့ဆိုလိုက်ရင် AWS ရဲ့ S3 cloud storage သို့မဟုတ် Backblaze ရဲ့ B2 cloud storage တို့ကို အလွယ်တကူမြင်နိုင်သလို၊ enterprise offering တွေရဲ့ storage solution တွေမှာနာမည်ကြီးတဲ့ Dell EMC မှာ Elastic Cloud Storage၊ big blue ဆိုပြီး နာမည်ကြီးတဲ့ IBM မှာ Spectrum Scale သို့မဟုတ် General Parallel File System (GPFS) အပြင်၊ open-source software storage platform မှာ Ceph၊ GlusterFS နဲ့ OpenStack ရဲ့ Swift တို့ဆိုပြီးတော့ ရှိပါတယ်။ ကိုယ်သုံးမယ့် scenario နဲ့ ကိုက်မယ့် product နဲ့ object storage ကိုလိုအပ်သလို အသုံးပြုနိုင်ပါတယ်။ အခြားသော object storage solution တွေလည်း အများကြီးကျန်ပါသေးတယ်။ အကုန်လုံး ထည့်ပြောရင်မပြီးနိုင်မှာမို့ object storage ရဲ့ အဓိက concept ဆိုင်ရင်အကြောင်းတွေကိုပဲဆက်သွားလိုက်ရအောင်။
Object storage မှာအခြားသော storage တွေနဲ့မတူတဲ့ အချက်က data တွေအားလုံးကို object တွေအနေနဲ့ သတ်မှတ်ပြီး၊ unstructured data တွေကို အရှိအတိုင်း flat data အနေနဲ့ သိမ်းဆည်းပါတယ်။ Object တိုင်းမှာလည်း သူ့မှာသိမ်းထားတဲ့ data အပြင်၊ metadata နဲ့ globally unique identifier တွေပါဝင်တယ်။ သို့သော်လည်း back-end မှာ traditional storage infrastructure နဲ့ database တွေကိုအသုံးပြုပြီး data တွေကို သိမ်းတယ်။ အရှေ့မှာ file storage နဲ့ block storage တွေအကြောင်း အနည်းငယ်ရှင်းပြပြီးသားဖြစ်တဲ့ အတွက် တစ်ခုချင်းစီရဲ့ အားသာချက် အားနည်းချက်တွေကို လေ့လာပြီးတဲ့နောက်၊ object storage ကိုဘယ်လိုနေရာမျိုးမှာ အသုံးပြုသင့်တယ်၊ အသုံးပြုကြတယ်ဆိုတာကို ကြည့်လိုက်ရအောင်။
Scalability နဲ့ Availability
Scalability ဆိုတာက အလွယ်တကူလိုသလောက် ပိုတိုးပြီး ချဲ့ကားနိုင်စွမ်း နဲ့ availability ဆိုတာကအလွယ်တကူ ယူပြီးအသုံးပြုနိုင်အောင်လို့ APIs တွေအသုံးပြုပြီး ကိုယ်ကြိုက်သလို အဆင်ပြေသလိုအသုံးပြုနိုင်တဲ့အပြင်၊ data container (object) တွေအသုံးပြုထားတဲ့အတွက် တနည်းမဟုတ်တနည်း data တွေကို access လုပ်လို့ရအောင်ပြုလုပ်ပေးထားနိုင်စွမ်းကို ရည်ညွန်းခြင်းပါ။ ဥပမာ ပြောရရင် file storage နဲ့ block storage မှာ disk space တွေကိုပိုပြီး တိုးချဲ့ ထည့်သွင်းချင်ရင်ဖြစ်ဖြစ်၊ disk failure တွေ၊ RAID failure တွေဖြစ်ရင်ဖြစ်ဖြစ် လုပ်ဆောင်ရတဲ့ လုပ်ငန်းဆောင်တာက ကိုယ်ရဲ့ setup ပေါ်မှာမူတည်ပြီး implication အနည်းနဲ့ အများတော့ ရှိနိုင်ပါတယ်။ object storage မှာ ထိုထိုသော back-end မှာအရှုပ်အရှင်းတွေကို ခေါင်းမစားရအောင်လို့ abstraction layer တစ်ခုနဲ့ အုပ်လိုက်ပြီး data တွေကို read နဲ့ write လုပ်တဲ့ အခါမှာ RESTful APIs တွေကို အသုံးပြုလိုက်ခြင်းပဲ ဖြစ်ပါတယ်။
Cost-effective Elastic On-demand Storage
နည်းပညာဆိုင်ရာ ပစ္စည်းတွေကို လုပ်ငန်းခွင်အတွက် ဝယ်ယူတဲ့အခါမှာ ROI (Return On Investment) လို့ခေါ်တဲ့ ဝယ်ယူပစ္စည်းစျေးရဲ့ ရေရှည်မှာ အကျိုးအမြတ် ဘယ်လောက်ထွက်နိုင်သလဲလို့ တွက်ချက်ယူကြတဲ့ နည်းတွေရှိပါတယ်။ အကြမ်းအားဖြင့် ဆိုရရင် company တစ်ခုဟာ server တွေနဲ့ storage ဆိုင်ရာ ပစ္စည်းကိရိယာတွေကို စျေးတစ်ခုနဲ့ ဝယ်ယူလိုက်တယ်ဆိုကြပါတော့။ ၁၀နှစ် ကနေ ၁၅နှစ် လောက်ကြာပြီးအခါမှာ ဒီဟာတွေကို အသုံးပြုပြီး company အနေနဲ့ဘယ်လောက်တောင် အကျိုးအမြတ်ရှိနိုင်သလဲဆိုတာကို တွက်ချက်ကြည့်လိုက်ပါတယ်။ တွက်ချက်နည်းက နှစ်မျိုး သုံးမျိုးလောက်ရှိတဲ့ အတွက် ကိုယ်နဲ့ အဆင်ပြေနိုင်မယ် နည်းကိုကြည့်ပြီး တွက်ချက် လို့ရပါတယ်။ အချို့သော company တွေဟာ depreciation လို့ ခေါ်တဲ့ အချိန်နဲ့ အမျှတန်းဖိုးကျလာတဲ့ အချိုးကို tax အတွက်ကြောင့်ဖြစ်ဖြစ်၊ အခြားသော အကြောင်းတစ်ခုခုကြောင့် ထည့်သွင်း စဉ်းစား တွက်ချက်တာရှိသလို၊ မထည့်ပဲနဲ့ ဒီတိုင်းတွက်တာလည်းဖြစ်နိုင်ပါတယ်။
ဒီတော့ ROI နဲ့ကြည့်လိုက်ရင် ရေရှည်အတွက် ထည့်သွင်း ရင်းနှီးမြှုပ်နှံ ရတဲ့ ငွေကြေးပမာဏဟာ startup တွေနဲ့ small business လေးတွေအတွက် အမြတ်မထွက်ခင်မှာ အကြွေးအရင်တင်မယ့် ကိန်းဆိုက်လို့ နေပြန်ပါတယ်။ ကိုယ်မှာက ရင်းနှီးမြှုပ်နှံ နိုင်တဲ့ ငွေးကြေးပမာဏ capital နည်းနည်းရှိတယ်၊ ရေရှည်အတွက် စီမံကိန်း ခမ်းခမ်းနားနား ရှိတယ်၊ အခြေအနေမကောင်းလို့ နည်းနည်းရှုံးရင်တော့လည်း တောင့်ခံနိုင်စွမ်း ရှိရင်ဖြင့် Data Centre တွေမှာ co-location တစ်ခုရယူပြီး ကိုယ့်ရဲ့ IT platform ကိုတည်ဆောက်နိုင်ပါတယ်။ Company အကြီးစားတွေကလွဲလို့ တော်ရုံ company တွေက အခုနောက်ပိုင်း ခေတ်စားနေတဲ့ elastic compute တို့၊ elastic storage တို့ တွေနဲ့ ပိုပြီး တွက်ခြေကိုက်ပါတယ်။ Netflix လို platform မှာတောင် compute နဲ့ storage ကို elastic ဖြစ်အောင် AWS ပေါ်မှာ အခြားသော စမ်းကျယ်လှတဲ့ containerisation နည်းပညာနဲ့ Kubernetes (K8s) လို orchestration tool တွေကို အသုံးပြုထားတယ်လို့ လည်းသိရပါတယ်။ ဒီ့အတွက် အသုံးပြုလောက် storage နဲ့ compute ဖိုးကိုပဲ Netflix က AWS ကိုပေးရပါတယ်။ အကယ်လို့များ region တစ်ခုမှာ အကြောင်းအမျိုးမျိုး ကြောင့် Netflix ကြည့်တဲ့ လူနည်းပြီး idle ဖြစ်တဲ့ resource တွေအတွက် Netflix အနေနဲ့ပေးစရာ မလိုပါဘူး။ လိုသလောက်ပဲသုံး၊ သုံးသလောက်ပဲ ပေးဆိုတဲ့ပုံစံမျိုးပါ။ ဒါကိုကြည့်ခြင်းအားဖြင့် elastic ဟာဘယ်လောက်တောင် cost-effective ဖြစ်သလဲဆိုတာသိနိုင်ပါတယ်။
Programmatic and Analytic Data Management
အထက်မှာပြောခဲ့သလို object storage ဟာ RESTful API ကိုအသုံးတဲ့အတွက် CREATE, READ, UPDATE, DELETE (အတိုကောက် CRUD) ဆိုတဲ့ functions တွေကို အခြေခံလုပ်ငန်းစဉ်အဆင့်မှာ implement လုပ်ထားပါတယ်။ ဒီ့အတွက် API ကို support လုပ်တဲ့ ဘယ်လိုမျိုး programming language နဲ့ မဆိုတွဲပြီး သုံးလို့ရလို့ data science သမားတွေအဆင်ပြေနိုင်သလို၊ အခြားသော data set အကြီးစားတွေနဲ့ အလုပ်လုပ်ရတဲ့ profession တွေအတွက်လည်း ကောက်ကာငင်ကာ programmatic interface တစ်ခုအဖြစ်ယူသုံးနိုင်တယ်။ အချို့သော object storage implementation တွေမှာ ပိုပြီးကောင်းတဲ့ object versioning၊ object replication၊ life-cycle management နဲ့ objects တွေကို မတူတဲ့ tier တွေ နဲ့ type တွေတစ်ခုနဲ့ တစ်ခုကြားမှာ ရွေ့ပြောင်းအသုံးပြုနိုင်တဲ့ feature တွေပါဝင်နိုင်ပါတယ်။
မှတ်ချက် – API အကြောင်းကိုအသေးစိတ် သိချင်လေ့လာချင်ရင် ဆရာအိမောင်ရဲ့ “API – လို – တို – ရှင်း” စာအုပ်ကိုလည်း ဒီ link မှာသွားရောက်ဝယ်ယူ ဖတ်ရှုနိုင်ပါတယ်။ လေ့လာချင် လေ့လာလို့ကောင်းတဲ့ စာအုပ်မို့ ပြန်လည်မျှဝေလိုသော ဆန္ဒသာရှိပြီးတော့ ဆရာအိမောင်နဲ့ စာရေးသူ တိုက်ရိုက်စပ်ဆက်မှုမရှိပါ။ နောက်ပြီး သူ့မှာလည်း စေတနာကောင်း ဖြင့်ရေးသားထားတဲ့ စာအုပ်ကောင်းဖြစ်တဲ့အတွက် သူ့ရဲ့ ebook/book တွေကို အားပေးစေလိုပါတယ်။
Object storage ဆိုတဲ့ အကြောင်းအရာဟာ ဆွေးနွေးစရာတွေ အများကြီးရှိနေသေးပါတယ်။ နည်းပညာပိုင်းမှာလည်း object-oriented ဆိုတဲ့ concept ကို ကိစ္စတော်တော်များများမှာ ထည့်သွင်းပြီးအသစ်အသစ်တွေတည်ဆောက်ယူ နေကြတာမို့ စိတ်ဝင်စားဖို့ကောင်းတယ်။ စာရေးသူ အနေနဲ့လည်း object storage ကို ကိုယ်တွေ့အသုံးပြုတဲ့ နေရာမှာ Blackblaze ရဲ့ B2 bucket မှာ ကိုယ့်ရဲ့ offsite backup လုပ်ဖို့အတွက် Duplicati နဲ့တွဲပြီး ထည့်သွင်းသုံးတာမျိုးလောက်ပဲ ရှိပါတယ်။ End user အတွက် object storage ဟာဘာမှထွေထွေထူးထူး မရှိပါဘူး။ ကိုယ်သုံးတဲ့ scenario မှာမူတည်ပြီး အသုံးဝင်နိုင်တဲ့ use case တွေက တော်တော်လေးကို များပါတယ်။ ဒီ post မှာ object storage ကို စာရေးသူ သိသလောက် အနည်းငယ်နဲ့ပဲ ဒီမှာရပ်လိုက်ပါတော့မယ်။