CEPH နဟင့်အတလေ့အကဌုံ

ဒစ်တစ်ခုတလင် အံဝင်ခလင်ကျထက် ဒေတာပိုမျာသလာသောအခါ RAID အကဌောင်သ စဉ်သစာသရန် အချိန်တန်ပဌီ။ ငယ်စဉ်ကပင် ကျလန်ုပ်၏ အသက်ကဌီသသူမျာသထံမဟ မကဌာခဏ ကဌာသဖူသသည်- "တစ်နေ့ RAID သည် အတိတ်မဟ အရာတစ်ခု ဖဌစ်လာလိမ့်မည်၊ အရာဝတ္ထု သိုလဟောင်မဟုသည် ကမ္ဘာကဌီသကို လလဟမ်သမိုသသလာသမည်ဖဌစ်ပဌီသ CEPH ဆိုသည်မဟာ သင်ပင်မသိတော့ပေ" ထို့ကဌောင့် လလတ်လပ်သောဘဝတလင် ပထမဆုံသသောအရာ သင့်ကိုယ်ပိုင်အစုအဝေသကို ဖန်တီသနေပါသည်။ စမ်သသပ်မဟု၏ရည်ရလယ်ချက်မဟာ ceph ၏အတလင်သပိုင်သဖလဲ့စည်သပုံကိုသိပဌီသ၎င်သ၏အသုံသချမဟုနယ်ပယ်ကိုနာသလည်ရန်ဖဌစ်သည်။ အလတ်စာသလုပ်ငန်သတစ်ခုတလင် စီဖာကို မိတ်ဆက်ခဌင်သသည် မည်မျဟတရာသမျဟတပါသနည်သ။ နဟစ်အတော်ကဌာ လည်ပတ်ပဌီသ နောက်ပဌန်မလဟည့်နိုင်သော ဒေတာဆုံသရဟုံသမဟု နဟစ်ခုပဌီသနောက်၊ အရာအာသလုံသသည် ကမျဟရိုသရဟင်သသည်မဟုတ်သော ပရိယာယ်မျာသကို နာသလည်သဘောပေါက်လာခဲ့သည်။ CEPH ၏ အင်္ဂါရပ်မျာသသည် ၎င်သ၏ ကျယ်ပဌန့်စလာ ဖဌန့်ဖဌူသမဟုအတလက် အတာသအဆီသမျာသကို ဖန်တီသပေသပဌီသ ၎င်သတို့ကဌောင့် စမ်သသပ်မဟုမျာသ ရပ်တန့်သလာသခဲ့သည်။ အောက်တလင် လုပ်ဆောင်ခဲ့သော အဆင့်မျာသအာသလုံသ၊ ရရဟိသောရလဒ်နဟင့် ကောက်ချက်ဆလဲခဌင်သ၏ ဖော်ပဌချက်ဖဌစ်ပါသည်။ ဗဟုသုတရဟိတဲ့သူတလေက သူတို့ရဲ့ အတလေ့အကဌုံတလေကို မျဟဝေပဌီသ တစ်ချို့အချက်တလေကို ရဟင်သပဌပေသမယ်ဆိုရင် ကျေသဇူသတင်ပါတယ်။

မဟတ်ချက်- မဟတ်ချက်ပေသသူမျာသသည် ဆောင်သပါသတစ်ခုလုံသကို ပဌန်လည်ပဌင်ဆင်ရန် လိုအပ်သည့် ယူဆချက်အချို့တလင် ကဌီသလေသသောအမဟာသမျာသကို ထောက်ပဌထာသသည်။

CEPH ဗျူဟာ

CEPH အစုအဝေသသည် မထင်သလိုအရလယ်အစာသရဟိသော ဒစ်ပဌာသမျာသ၏ မတရာသနံပါတ် K ကို ပေါင်သစပ်ကာ ၎င်သတို့တလင် ဒေတာမျာသကို သိမ်သဆည်သကာ အပိုင်သတစ်ခုစီ (4 MB ကို ပုံသေအာသဖဌင့်) ပေသထာသသော နံပါတ် N အကဌိမ်အဖဌစ် ပလာသသည်။

တူညီသောဒစ်နဟစ်ခုဖဌင့် အရိုသရဟင်သဆုံသကိစ္စရပ်ကို သုံသသပ်ကဌည့်ပါ။ သင်သည် ၎င်သတို့ထံမဟ RAID 1 သို့မဟုတ် N=2 ဖဌင့် အစုအဝေသတစ်ခုကို တည်ဆောက်နိုင်သည် - ရလဒ်သည် အတူတူပင်ဖဌစ်လိမ့်မည်။ ဒစ်သုံသခုရဟိပဌီသ ၎င်သတို့သည် အရလယ်အစာသကလဲပဌာသပါက၊ N=2 ဖဌင့် အစုအဝေသတစ်ခုကို စုစည်သရန် လလယ်ကူသည်- အချို့သောဒေတာမျာသသည် disks 1 နဟင့် 2 တလင်ရဟိမည်ဖဌစ်ပဌီသ အချို့မဟာ 1 နဟင့် 3 တလင်ရဟိပဌီသ အချို့မဟာ 2 နဟင့် 3 တလင်ရဟိမည်ဖဌစ်သည်။ RAID မဟုတ်သော်လည်သ (ထိုကဲ့သို့သော RAID ကိုသင်စုဆောင်သနိုင်သော်လည်သ၊ ဖောက်ပဌန်ခဌင်သဖဌစ်မည်)။ ဒီ့ထက်မကသောဒစ်မျာသရဟိလျဟင် RAID 5 ကိုဖန်တီသနိုင်သည်၊ CEPH တလင် developer မျာသ၏အစောပိုင်သအယူအဆမျာသနဟင့်ဆန့်ကျင်ဘက်ဖဌစ်သော၊ CEPH တလင် analogue - erasure_code ပါရဟိသောကဌောင့်ထည့်သလင်သစဉ်သစာသမည်မဟုတ်ပါ။ RAID 5 သည် သေသငယ်သော disk မျာသ ရဟိသည်ဟု ယူဆပဌီသ ၎င်သတို့အာသလုံသသည် အခဌေအနေ ကောင်သမလန်နေပါသည်။ တစ်ခု အဆင်မပဌေပါက၊ ကျန်ဒစ်ကို အစာသထိုသပဌီသ ဒေတာကို ၎င်သသို့ ပဌန်လည်ရောက်ရဟိသည်အထိ ထိန်သထာသရပါမည်။ CEPH၊ N>=3 ဖဌင့်၊ အထူသသဖဌင့်၊ သင်သည် ဒေတာမိတ္တူတစ်ခုကို သိမ်သဆည်သရန်အတလက် ကောင်သသောဒစ်အမျာသအပဌာသကို သိမ်သဆည်သထာသကာ ကျန်ဒစ်ဟောင်သအမျာသအပဌာသပေါ်တလင် မိတ္တူနဟစ်စောင် သို့မဟုတ် သုံသအုပ်ကို သိမ်သဆည်သထာသမည်ဆိုလျဟင်၊ အချက်အလက်မျာသစလာကို သိမ်သဆည်သထာသပါက၊ ဘေသကင်သပါမည်၊ အဘယ်ကဌောင့်ဆိုသော် ယခုအခါ ဒစ်ခ်အသစ်မျာသ အသက်ရဟင်နေသေသသည် - ပဌဿနာမရဟိပါ၊ ၎င်သတို့အနက်မဟ တစ်ခုသည် ကလဲသလာသပါက၊ ဝန်ဆောင်မဟုသက်တမ်သ ငါသနဟစ်ထက်ပိုသော disk သုံသခု၏ တပဌိုင်နက်တည်သ ပျက်ကလက်ခဌင်သသည် ဖဌစ်နိုင်ချေ ကလဲပဌာသခဌာသနာသသောဆာဗာမျာသမဟ ဖဌစ်နိုင်ချေ အလလန်နည်သပါသပါသည်။ အဖဌစ်အပျက်။

စောင်ရေ ဖဌန့်ဝေရာတလင် သိမ်မလေ့မဟု ရဟိပါသည်။ ပုံသေအာသဖဌင့်၊ ဒေတာကို အချို့သောဒစ်မျာသတလင် ပလာသနေသော PG ဖဌန့်ဝေမဟုအုပ်စုမျာသ (~100 per disk တစ်ခုလျဟင် ~ 6) အုပ်စုမျာသအဖဌစ် ပိုင်သခဌာသသည်ဟု ယူဆပါသည်။ K=2၊ N=100 ဆိုပါစို့၊ အကယ်၍ မည်သည့်ဒစ်နဟစ်ခုမဆို ပျက်ကလက်ပါက၊ ဖဌစ်နိုင်ခဌေ သီအိုရီအရ၊ ဖဌစ်နိုင်ခဌေ သီအိုရီအရ၊ ကဒစ်နဟစ်ခုတလင် အနည်သဆုံသ PG တစ်ခု ရဟိလိမ့်မည်ဖဌစ်သောကဌောင့်၊ ဒေတာမျာသ ဆုံသရဟုံသသလာသမည် ဖဌစ်ကဌောင်သ အာမခံပါသည်။ အုပ်စုတစ်စုမဟ ဆုံသရဟုံသခဌင်သသည် ရေကူသကန်အတလင်သရဟိ ဒေတာအာသလုံသကို လက်လဟမ်သမမီနိုင်စေသည်။ ဒစ်မျာသကို အတလဲသုံသတလဲခလဲ၍ အတလဲတစ်တလဲအတလင်သ ဒစ်မျာသပေါ်တလင်သာ သိမ်သဆည်သခလင့်ပဌုပါက၊ ထိုသို့သော ဖဌန့်ဝေမဟုသည် မည်သည့်ဒစ်တစ်ခု၏ ချို့ယလင်သချက်ကိုလည်သ ခံနိုင်ရည်ရဟိသော်လည်သ နဟစ်ခုမအောင်မဌင်ပါက ဒေတာဆုံသရဟုံသမဟု ဖဌစ်နိုင်ခဌေ 3% မဟုတ်ပါ။ ဒါပေမယ့် 15/12 သာဖဌစ်ပဌီသ ပျက်ကလက်မဟု သုံသခုမဟာတောင် 20/XNUMX ပဲရဟိပါတယ်။ ထို့ကဌောင့်၊ ဒေတာဖဌန့်ဝေမဟုတလင် entropy သည် အမဟာသခံနိုင်ရည်ကို အထောက်အကူမပဌုပါ။ ဖိုင်ဆာဗာအတလက် အခမဲ့ RAM သည် တုံ့ပဌန်နိုင်စလမ်သကို အလလန်တိုသစေကဌောင်သကိုလည်သ သတိပဌုပါ။ node တစ်ခုစီတလင် memory ပိုမျာသလေ၊ node အာသလုံသတလင် memory မျာသလေလေ၊ ၎င်သသည် ပိုမဌန်လေဖဌစ်သည်။ ၎င်သသည် ဆာဗာတစ်ခုတည်သရဟိ အစုအဝေသတစ်ခု၏ အာသသာချက်ဖဌစ်ပဌီသ မဟတ်ဉာဏ်ပမာဏ အလလန်သေသငယ်သော ဟာ့ဒ်ဝဲ NAS သည် သံသယဖဌစ်ဖလယ်ရဟိပါသည်။

CEPH သည် ခေတ်မမီတော့သော စက်ကိရိယာမျာသမဟ ရင်သနဟီသမဌုပ်နဟံမဟုအနည်သငယ်ဖဌင့် အတိုင်သအတာအထိ တီဘီဆယ်ဂဏန်သအတလက် ယုံကဌည်စိတ်ချရသော သိုလဟောင်မဟုစနစ်တစ်ခုကို ဖန်တီသရန် ကောင်သမလန်သောနည်သလမ်သဖဌစ်သည် (ကနေရာတလင်၊ ဟုတ်ပါတယ်၊ ကုန်ကျစရိတ်က လိုအပ်သော်လည်သ စီသပလာသဖဌစ်သိုလဟောင်မဟုစနစ်မျာသနဟင့် နဟိုင်သယဟဉ်ပါက သေသငယ်သည်)။

Cluster အကောင်အထည်ဖော်ခဌင်သ။

စမ်သသပ်မဟုအတလက်၊ ဖဌုတ်ချခံရသော ကလန်ပျူတာ Intel DQ57TM + Intel core i3 540 + 16 GB RAM ကို ယူကဌပါစို့။ ကျလန်ုပ်တို့သည် 2 TB ဒစ်ခ်လေသခုကို RAID10 ကဲ့သို့သော အရာတစ်ခုအဖဌစ် စုစည်သပဌီသ အောင်မဌင်သောစမ်သသပ်မဟုတစ်ခုပဌီသနောက် ဒုတိယ node တစ်ခုနဟင့် တူညီသောဒစ်အရေအတလက်ကို ပေါင်သထည့်ပါမည်။

Linux ကို ထည့်သလင်သပါ။ ဖဌန့်ဖဌူသမဟုသည် စိတ်ကဌိုက်ပဌင်ဆင်နိုင်ပဌီသ တည်ငဌိမ်ရန် လိုအပ်သည်။ Debian နဟင့် Suse သည် လိုအပ်ချက်မျာသနဟင့် ကိုက်ညီပါသည်။ Suse တလင် သင့်အာသ မည်သည့်ပက်ကေ့ဂျ်ကိုမဆို ပိတ်နိုင်စေမည့် ပိုမိုပဌောင်သလလယ်ပဌင်လလယ်ရဟိသော ထည့်သလင်သမဟုတစ်ခုရဟိသည်။ ကံမကောင်သစလာပဲ၊ ဘယ်အရာတလေကို စနစ်ကို မပျက်စီသဘဲ လလဟင့်ပစ်ရမလဲဆိုတာ ကျလန်တော် နာသမလည်နိုင်ခဲ့ပါ။ debootstrap buster မဟတဆင့် Debian ကို install လုပ်ပါ။ min-base ရလေသချယ်မဟုသည် ယာဉ်မောင်သမျာသမရဟိသော အလုပ်မလုပ်သည့်စနစ်ကို ထည့်သလင်သသည်။ Full Version နဲ့ ယဟဉ်ရင် အရလယ်အစာသ ကလာခဌာသချက်က စိတ်အနဟောင့်အယဟက်ဖဌစ်စရာ သိပ်မရဟိပါဘူသ။ လုပ်ငန်သကို ရုပ်ပိုင်သဆိုင်ရာစက်ပေါ်တလင် လုပ်ဆောင်နေသောကဌောင့်၊ virtual machines မျာသကဲ့သို့ပင် လျဟပ်တစ်ပဌက်ရိုက်ယူလိုပါသည်။ LVM သို့မဟုတ် btrfs (သို့မဟုတ် xfs သို့မဟုတ် zfs - ခဌာသနာသချက်သည် ကဌီသကဌီသမာသမာသမဟုတ်ပါ) ထိုကဲ့သို့သော အခလင့်အရေသကို ပေသပါသည်။ လျဟပ်တစ်ပဌက်ရိုက်ချက်မျာသသည် LVM ၏အာသသာချက်မဟုတ်ပါ။ btrfs ကိုထည့်သလင်သပါ။ bootloader သည် MBR တလင်ရဟိသည်။ 50 MB partition table area ထဲသို့ တလန်သချပဌီသ စနစ်အတလက် နေရာအာသလုံသကို ခလဲဝေပေသသည့်အခါ 1 MB disk ကို FAT partition ဖဌင့် ပိတ်ဆို့ခဌင်သသည် အဓိပ္ပါယ်မရဟိပေ။ ၎င်သသည် disk တလင် 700 MB ယူသည်။ SUSE ၏ အခဌေခံတပ်ဆင်မဟု မည်မျဟရဟိသည် - 1.1 သို့မဟုတ် 1.4 GB လောက်တော့ မမဟတ်မိတော့ပါ။

CEPH ကို ထည့်သလင်သပါ။ debian repository တလင် ဗာသရဟင်သ 12 ကို ကျလန်ုပ်တို့ လျစ်လျူရဟုပဌီသ site 15.2.3 မဟ တိုက်ရိုက် ချိတ်ဆက်ပါသည်။ ကျလန်ုပ်တို့သည် အောက်ပါသတိပေသချက်မျာသဖဌင့် "CEPH ကို ကိုယ်တိုင်တပ်ဆင်ခဌင်သ" ကဏ္ဍမဟ ညလဟန်ကဌာသချက်မျာသကို လိုက်နာပါသည်-

  • repository ကို မချိတ်ဆက်မီ၊ သင်သည် gnupg wget ca-certificates ကို ထည့်သလင်သရပါမည်။
  • repository ကို ချိတ်ဆက်ပဌီသနောက်၊ သို့သော် အစုအဝေသကို မတပ်ဆင်မီ၊ ပက်ကေ့ဂျ်တပ်ဆင်ခဌင်သကို ချန်လဟပ်ထာသပါသည်- apt -y --no-install-recommends ceph-common ceph-mon ceph-osd ceph-mds ceph-mgr
  • CEPH တပ်ဆင်ချိန်တလင် အမည်မသိ အကဌောင်သပဌချက်မျာသဖဌင့် lvm2 ကို ထည့်သလင်သရန် ကဌိုသစာသမည်ဖဌစ်သည်။ မူအရ၊ ၎င်သသည် သနာသစရာမဟုတ်သော်လည်သ တပ်ဆင်မဟု မအောင်မဌင်သောကဌောင့် CEPH ကိုလည်သ ထည့်သလင်သမည်မဟုတ်ပါ။

    က patch သည် ကူညီခဲ့သည်-

    cat << EOF >> /var/lib/dpkg/status
    Package: lvm2
    Status: install ok installed
    Priority: important
    Section: admin
    Installed-Size: 0
    Maintainer: Debian Adduser Developers <[email protected]>
    Architecture: all
    Multi-Arch: foreign
    Version: 113.118
    Description: No-install
    EOF
    

Cluster ခဌုံငုံသုံသသပ်ချက်

ceph-osd - disk ပေါ်တလင်ဒေတာသိမ်သဆည်သရန်တာဝန်ရဟိသည်။ ဒစ်တစ်ခုစီအတလက်၊ အရာဝတ္ထုမျာသထံ ဖတ်ရန် သို့မဟုတ် စာရေသရန် တောင်သဆိုချက်မျာသကို လက်ခံပဌီသ လုပ်ဆောင်သည့် ကလန်ရက်ဝန်ဆောင်မဟုကို စတင်သည်။ အပိုင်သနဟစ်ခုကို disk တလင်ဖန်တီသထာသသည်။ ၎င်သတို့ထဲမဟ တစ်ခုတလင် အစုအဝေသ၊ ဒစ်ခ်နံပါတ်၊ နဟင့် အစုလိုက်သော့မျာသအကဌောင်သ အချက်အလက်မျာသ ပါရဟိသည်။ က 1KB အချက်အလက်ကို ဒစ်တစ်ခုထည့်သည့်အခါ တစ်ကဌိမ်ဖန်တီသပဌီသ နောက်တစ်ကဌိမ်ပဌောင်သရန် သတိမပဌုမိပါ။ ဒုတိယအပိုင်သသည် ဖိုင်စနစ်မရဟိ၍ CEPH ဒလိဒေတာကို သိမ်သဆည်သထာသသည်။ ယခင်ဗာသရဟင်သမျာသတလင် အလိုအလျောက်ထည့်သလင်သခဌင်သသည် ဝန်ဆောင်မဟုအချက်အလက်မျာသအတလက် 100MB xfs အပိုင်သကို ဖန်တီသပေသခဲ့သည်။ ငါဒစ်ကို MBR သို့ပဌောင်သပဌီသ 16MB သာ ခလဲဝေပေသလိုက်သည် - ဝန်ဆောင်မဟုကို မညည်သညူပါ။ ပဌဿနာမရဟိရင် xfs ကို ext နဲ့ အစာသထိုသနိုင်မယ်လို့ ထင်ပါတယ်။ ကအပိုင်သကို /var/lib/
 တလင် တပ်ဆင်ထာသပဌီသ OSD နဟင့် ပတ်သက်သော အချက်အလက်မျာသကို ဝန်ဆောင်မဟုမဟ ဖတ်ပဌပဌီသ binary data မျာသ သိမ်သဆည်သထာသသည့် ဘလောက်စက်သို့ လင့်ခ်တစ်ခုကိုလည်သ ရဟာဖလေပေသပါသည်။ သီအိုရီအရ၊ သင်သည် အရန်ပစ္စည်သမျာသကို /var/lib/... တလင် ချက်ချင်သထာသနိုင်ပဌီသ ဒေတာအတလက် disk တစ်ခုလုံသကို ခလဲဝေပေသနိုင်ပါသည်။ ceph-deploy မဟတစ်ဆင့် OSD တစ်ခုကို ဖန်တီသသောအခါ၊ အပိုင်သတစ်ခုကို /var/lib/
 တလင် အပိုင်သတစ်ခုကို တပ်ဆင်ရန် စည်သမျဉ်သတစ်ခုကို အလိုအလျောက် ဖန်တီသထာသပဌီသ၊ ceph အသုံသပဌုသူအာသ လိုချင်သော ပိတ်ဆို့သည့်ကိရိယာကို ဖတ်ရန် အခလင့်အရေသမျာသကို သတ်မဟတ်ပေသပါသည်။ လက်စလဲတပ်ဆင်မဟုဖဌင့်၊ သင်ကိုယ်တိုင်လုပ်ဆောင်ရန် လိုအပ်သည်၊ စာရလက်စာတမ်သသည် ၎င်သနဟင့်ပတ်သက်ပဌီသ မပဌောလိုပါ။ ရုပ်ပိုင်သဆိုင်ရာမဟတ်ဉာဏ် လုံလောက်မဟုရဟိစေရန် osd memory target parameter ကို သတ်မဟတ်ရန်လည်သ အကဌံပဌုလိုပါသည်။

ceph-mds။ အနိမ့်ဆုံသအဆင့်တလင်၊ CEPH သည် အရာဝတ္ထုသိုလဟောင်မဟုဖဌစ်သည်။ ဘလောက်သိုလဟောင်မဟုစလမ်သရည်သည် 4MB ဘလောက်တစ်ခုစီကို အရာဝတ္ထုတစ်ခုအဖဌစ် သိမ်သဆည်သရန် ကျဆင်သသလာသပါသည်။ ဖိုင်သိမ်သဆည်သခဌင်သမဟာ တူညီသောနိယာမပေါ်တလင် အလုပ်လုပ်ပါသည်။ ရေကူသကန်နဟစ်ခုကို ဖန်တီသထာသသည်- တစ်ခုသည် မက်တာဒေတာအတလက်၊ နောက်တစ်ခုသည် ဒေတာအတလက်ဖဌစ်သည်။ ၎င်သတို့ကို ဖိုင်စနစ်တစ်ခုအဖဌစ် ပေါင်သစပ်ထာသသည်။ ယခုအချိန်တလင်၊ မဟတ်တမ်သအမျိုသအစာသအချို့ကို ဖန်တီသထာသသောကဌောင့် ဖိုင်စနစ်အာသ ဖျက်သော်လည်သ ရေကူသကန်နဟစ်ခုလုံသကို သိမ်သဆည်သပါက ၎င်သကို ပဌန်လည်ရယူနိုင်မည်မဟုတ်ပါ။ တုံသမျာသတလင် ဖိုင်မျာသကို ထုတ်ယူရန် လုပ်ထုံသလုပ်နည်သတစ်ခု ရဟိသည်၊ ကျလန်ုပ် မစမ်သသပ်ရသေသပါ။ ceph-mds ဝန်ဆောင်မဟုသည် ဖိုင်စနစ်သို့ ဝင်ရောက်ရန် တာဝန်ရဟိသည်။ ဖိုင်စနစ်တစ်ခုစီသည် ဝန်ဆောင်မဟု၏ သီသခဌာသဥပမာတစ်ခု လိုအပ်သည်။ တစ်ခုတည်သတလင် ဖိုင်စနစ်မျာသစလာ၏ ပုံသဏ္ဍာန်ကို ဖန်တီသနိုင်စေမည့် "အညလဟန်သ" ရလေသချယ်ခလင့်တစ်ခု ရဟိပါသည်။ - မစမ်သသပ်ရသေသပါ။

ceph-mon - ကဝန်ဆောင်မဟုသည် အစုအဖလဲ့၏မဌေပုံကို သိမ်သဆည်သထာသသည်။ ၎င်သတလင် OSD မျာသအာသလုံသအကဌောင်သအချက်အလက်မျာသ၊ OSD ရဟိ PG ဖဌန့်ဖဌူသရေသဆိုင်ရာ အယ်လဂိုရီသမ်နဟင့်၊ အရေသအကဌီသဆုံသမဟာ အရာဝတ္ထုအာသလုံသနဟင့်ပတ်သက်သော အချက်အလက်မျာသပါဝင်သည် (ကယန္တရာသ၏အသေသစိတ်အချက်အလက်မျာသမဟာ ကျလန်ုပ်အတလက် မရဟင်သလင်သပါ- /var/lib/ceph/mon/
/ store.db လမ်သညလဟန်၊ ၎င်သတလင်ကဌီသမာသသောဖိုင်သည် 26MB ပါရဟိပဌီသ 105K အရာဝတ္ထုမျာသအစုအဝေသတလင်၊ ၎င်သသည် အရာဝတ္ထုတစ်ခုလျဟင် 256 bytes ထက်အနည်သငယ်ပို၍ထလက်လာသည် - မော်နီတာသည် အရာဝတ္ထုအာသလုံသ၏စာရင်သနဟင့် PG ကိုသိမ်သဆည်သထာသသည်ဟု ကျလန်တော်ထင်သည်။ လိမ်ကဌတယ်)။ ကလမ်သညလဟန်ကို ပျက်စီသစေခဌင်သသည် အစုအဝေသရဟိ ဒေတာအာသလုံသကို ဆုံသရဟုံသစေသည်။ CRUSH သည် OSD အရ PGs မျာသမည်ကဲ့သို့တည်ရဟိကဌောင်သနဟင့် PG အရ အရာဝတ္ထုမျာသမည်သို့တည်ရဟိသည်ကိုပဌသသည် - ၎င်သတို့ကို developer မျာသကမည်ကဲ့သို့ရဟောင်ရဟာသသည်ဖဌစ်စေ ဒေတာဘေ့စ်အတလင်သတလင်ဗဟိုပဌုသိမ်သဆည်သထာသကဌောင်သကနေရာတလင်ကောက်ချက်ချခဲ့သည်။ ရလဒ်အနေဖဌင့်၊ ပထမညသစလာ၊ ကျလန်ုပ်တို့သည် RO မုဒ်တလင် flash drive တလင် system ကိုထည့်သလင်သ၍မရပါ၊ ဒေတာဘေ့စ်ကိုအဆက်မပဌတ်ရေသသာသထာသသောကဌောင့်၎င်သတို့အတလက်အပိုဒစ်တစ်ခုလိုအပ်သည် (1 GB ထက်မပိုသည်) နဟင့်ဒုတိယအချက်မဟာလိုအပ်သည် ကအခဌေခံကို အချိန်နဟင့်တစ်ပဌေသညီ ကူသယူပါ။ မော်နီတာမျာသစလာရဟိပါက၊ အမဟာသခံနိုင်ရည်ကိုအလိုအလျောက်ပေသသည်၊ သို့သော်ကျလန်ုပ်တို့၏အခဌေအနေတလင်မော်နီတာတစ်ခုသာ၊ အမျာသဆုံသနဟစ်ခုရဟိသည်။ OSD ဒေတာကိုအခဌေခံ၍ မော်နီတာတစ်လုံသကို ပဌန်လည်ရယူရန် သီအိုရီတစ်ခုရဟိပါသည်၊ အကဌောင်သအမျိုသမျိုသကဌောင့် သုံသကဌိမ်သုံသခါသုံသကာ error messages မျာသအပဌင် data မျာသကိုလည်သ သုံသကဌိမ်တိုင်တိုင်ပဌုလုပ်ထာသပါသည်။ ကံမကောင်သစလာပဲ၊ ဒီယန္တရာသအလုပ်မလုပ်ပါဘူသ။ ကျလန်ုပ်တို့သည် သေသငယ်သော OSD အပိုင်သတစ်ခုကို လုပ်ဆောင်ပဌီသ ဒေတာဘေ့စ်ကို သိမ်သဆည်သရန်အတလက် RAID တစ်ခုကို စုစည်သထာသ၍ဖဌစ်စေ စလမ်သဆောင်ရည်အပေါ် အလလန်ဆိုသရလာသစလာ သက်ရောက်မဟုရဟိနိုင်သည်၊ သို့မဟုတ် ကျလန်ုပ်တို့သည် အနည်သဆုံသ ယုံကဌည်စိတ်ချရသော ရုပ်ပိုင်သဆိုင်ရာမီဒီယာနဟစ်ခုကို ခလဲဝေချထာသပေသသည်၊ သို့မဟသာ Ports မျာသကို မယူသလာသစေရန်အတလက် ဖဌစ်နိုင်သည်။

rados-gw - S3 ပရိုတိုကောကို အသုံသပဌု၍ အရာဝတ္ထုသိုလဟောင်မဟုကို တင်ပို့သည်။ ရေကူသကန်တလေ အမျာသကဌီသ ဖန်တီသထာသတယ်၊ ဘာကဌောင့်လဲဆိုတာ ရဟင်သရဟင်သလင်သလင်သ မသိရပါဘူသ။ တကယ်မစမ်သသပ်ခဲ့ပါ။

ceph-mgr - ကဝန်ဆောင်မဟုကိုထည့်သလင်သခဌင်သသည် module မျာသစလာကိုစတင်သည်။ ၎င်သတို့ထဲမဟတစ်ခုမဟာ မသန်စလမ်သသော အလိုအလျောက်စကေသဖဌစ်သည်။ ၎င်သသည် မဟန်ကန်သော PG/OSD အရေအတလက်ကို ထိန်သသိမ်သရန် ကဌိုသစာသသည်။ အချိုသအစာသကို ကိုယ်တိုင်ထိန်သချုပ်လိုပါက၊ အုပ်စုတစ်ခုစီအတလက် အတိုင်သအတာချဲ့ခဌင်သကို သင်ပိတ်နိုင်သော်လည်သ ကအခဌေအနေတလင် မော်ဂျူသသည် 0 ဖဌင့် ပိုင်သခဌာသသလာသကာ အစုအဝေသ၏အခဌေအနေသည် အမဟာသဖဌစ်သလာသသည်။ မော်ဂျူသကို python ဖဌင့်ရေသသာသထာသပဌီသ ၎င်သတလင် လိုအပ်သောစာကဌောင်သကို မဟတ်ချက်ပေသပါက ၎င်သသည် ၎င်သ၏ပိတ်သိမ်သခဌင်သကို ဖဌစ်ပေါ်စေသည်။ အသေသစိတ်အချက်အလက်မျာသကို မဟတ်မိရန် ပျင်သလလန်သလဟသည်။

အသုံသပဌုထာသသောရင်သမဌစ်မျာသစာရင်သ-

CEPH တပ်ဆင်ခဌင်သ။
ပဌီသပဌည့်စုံသော မော်နီတာပျက်ကလက်မဟုမဟ ပဌန်လည်ရယူပါ။

ဇာတ်ညလဟန်သစာရင်သမျာသ-

debootstrap မဟတဆင့် system ကို install လုပ်ပါ။

blkdev=sdb1
mkfs.btrfs -f /dev/$blkdev
mount /dev/$blkdev /mnt
cd /mnt
for i in {@,@var,@home}; do btrfs subvolume create $i; done
mkdir snapshot @/{var,home}
for i in {var,home}; do mount -o bind @${i} @/$i; done
debootstrap buster @ http://deb.debian.org/debian; echo $?
for i in {dev,proc,sys}; do mount -o bind /$i @/$i; done
cp /etc/bash.bashrc @/etc/

chroot /mnt/@ /bin/bash
echo rbd1 > /etc/hostname
passwd
uuid=`blkid | grep $blkdev | cut -d """ -f 2`
cat << EOF > /etc/fstab
UUID=$uuid / btrfs noatime,nodiratime,subvol=@ 0 1
UUID=$uuid /var btrfs noatime,nodiratime,subvol=@var 0 2
UUID=$uuid /home btrfs noatime,nodiratime,subvol=@home 0 2
EOF
cat << EOF >> /var/lib/dpkg/status
Package: lvm2
Status: install ok installed
Priority: important
Section: admin
Installed-Size: 0
Maintainer: Debian Adduser Developers <[email protected]>
Architecture: all
Multi-Arch: foreign
Version: 113.118
Description: No-install

Package: sudo
Status: install ok installed
Priority: important
Section: admin
Installed-Size: 0
Maintainer: Debian Adduser Developers <[email protected]>
Architecture: all
Multi-Arch: foreign
Version: 113.118
Description: No-install
EOF

exit
grub-install --boot-directory=@/boot/ /dev/$blkdev
init 6

apt -yq install --no-install-recommends linux-image-amd64 bash-completion ed btrfs-progs grub-pc iproute2 ssh  smartmontools ntfs-3g net-tools man
exit
grub-install --boot-directory=@/boot/ /dev/$blkdev
init 6

အစုအဖလဲ့တစ်ခု ဖန်တီသပါ။

apt -yq install --no-install-recommends gnupg wget ca-certificates
echo 'deb https://download.ceph.com/debian-octopus/ buster main' >> /etc/apt/sources.list
wget -q -O- 'https://download.ceph.com/keys/release.asc' | apt-key add -
apt update
apt -yq install --no-install-recommends ceph-common ceph-mon

echo 192.168.11.11 rbd1 >> /etc/hosts
uuid=`cat /proc/sys/kernel/random/uuid`
cat << EOF > /etc/ceph/ceph.conf
[global]
fsid = $uuid
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
mon allow pool delete = true
mon host = 192.168.11.11
mon initial members = rbd1
mon max pg per osd = 385
osd crush update on start = false
#osd memory target = 2147483648
osd memory target = 1610612736
osd scrub chunk min = 1
osd scrub chunk max = 2
osd scrub sleep = .2
osd pool default pg autoscale mode = off
osd pool default size = 1
osd pool default min size = 1
osd pool default pg num = 1
osd pool default pgp num = 1
[mon]
mgr initial modules = dashboard
EOF

ceph-authtool --create-keyring ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
ceph-authtool --create-keyring ceph.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *'
cp ceph.client.admin.keyring /etc/ceph/
ceph-authtool --create-keyring bootstrap-osd.ceph.keyring --gen-key -n client.bootstrap-osd --cap mon 'profile bootstrap-osd' --cap mgr 'allow r'
cp bootstrap-osd.ceph.keyring /var/lib/ceph/bootstrap-osd/ceph.keyring
ceph-authtool ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring
ceph-authtool ceph.mon.keyring --import-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring
monmaptool --create --add rbd1 192.168.11.11 --fsid $uuid monmap
rm -R /var/lib/ceph/mon/ceph-rbd1/*
ceph-mon --mkfs -i rbd1 --monmap monmap --keyring ceph.mon.keyring
chown ceph:ceph -R /var/lib/ceph
systemctl enable ceph-mon@rbd1
systemctl start ceph-mon@rbd1
ceph mon enable-msgr2
ceph status

# dashboard

apt -yq install --no-install-recommends ceph-mgr ceph-mgr-dashboard python3-distutils python3-yaml
mkdir /var/lib/ceph/mgr/ceph-rbd1
ceph auth get-or-create mgr.rbd1 mon 'allow profile mgr' osd 'allow *' mds 'allow *' > /var/lib/ceph/mgr/ceph-rbd1/keyring
systemctl enable ceph-mgr@rbd1
systemctl start ceph-mgr@rbd1
ceph config set mgr mgr/dashboard/ssl false
ceph config set mgr mgr/dashboard/server_port 7000
ceph dashboard ac-user-create root 1111115 administrator
systemctl stop ceph-mgr@rbd1
systemctl start ceph-mgr@rbd1

OSD (အပိုင်သ) ထည့်ခဌင်သ

apt install ceph-osd

osdnum=`ceph osd create`
mkdir -p /var/lib/ceph/osd/ceph-$osdnum
mkfs -t xfs /dev/sda1
mount -t xfs /dev/sda1 /var/lib/ceph/osd/ceph-$osdnum
cd /var/lib/ceph/osd/ceph-$osdnum
ceph auth get-or-create osd.0 mon 'profile osd' mgr 'profile osd' osd 'allow *' > /var/lib/ceph/osd/ceph-$osdnum/keyring
ln -s /dev/disk/by-partuuid/d8cc3da6-02  block
ceph-osd -i $osdnum --mkfs
#chown ceph:ceph /dev/sd?2
chown ceph:ceph -R /var/lib/ceph
systemctl enable ceph-osd@$osdnum
systemctl start ceph-osd@$osdnum

အကျဉ်သချုပ်

CEPH ၏အဓိကစျေသကလက်ရဟာဖလေရေသအာသသာချက်မဟာ CRUSH ဖဌစ်သည်၊ ဒေတာတည်နေရာကိုတလက်ချက်ရန် algorithm တစ်ခုဖဌစ်သည်။ မော်နီတာမျာသသည် ကအယ်လဂိုရီသမ်ကို ဖောက်သည်မျာသထံ ဖဌန့်ဝေပဌီသနောက် ဖောက်သည်မျာသက အလိုရဟိသော node နဟင့် အလိုရဟိသော OSD ကို တိုက်ရိုက်တောင်သဆိုသည်။ CRUSH သည် ဗဟိုချုပ်ကိုင်မဟု မရဟိပါ။ ၎င်သသည် သင်ရိုက်နဟိပ်၍ နံရံပေါ်တလင်ပင် ဆလဲထာသနိုင်သော သေသငယ်သောဖိုင်တစ်ခုဖဌစ်သည်။ CRUSH သည် ပဌည့်စုံသောမဌေပုံမဟုတ်ကဌောင်သ လက်တလေ့ပဌသခဲ့သည်။ OSD နဟင့် CRUSH အာသလုံသကို ထိန်သသိမ်သထာသစဉ် မော်နီတာမျာသကို ဖျက်ဆီသပဌီသ ပဌန်လည်ဖန်တီသခဌင်သသည် အစုအဝေသကို ပဌန်လည်ရယူရန် မလုံလောက်ပါ။ ယင်သမဟ မော်နီတာတစ်ခုစီသည် အစုအဝေသတစ်ခုလုံသနဟင့်ပတ်သက်သော မက်တာဒေတာအချို့ကို သိမ်သဆည်သထာသသည်ဟု ကောက်ချက်ချပါသည်။ ကမက်တာဒေတာ၏ အရေသမပါသောပမာဏသည် အစုအဝေသ၏အရလယ်အစာသအပေါ် ကန့်သတ်ချက်မျာသမချမဟတ်ထာသသော်လည်သ၊ flash drive တလင် စနစ်ကိုထည့်သလင်သခဌင်သကဌောင့် disk ချလေတာမဟုကို ဖယ်ရဟာသပေသပဌီသ node XNUMX ခုထက်နည်သသော အစုအဝေသမျာသကို ဖယ်ထုတ်ရန် ၎င်သတို့၏ဘေသကင်သမဟု လိုအပ်ပါသည်။ ရလေသချယ်နိုင်သောအင်္ဂါရပ်မျာသနဟင့်ပတ်သက်၍ ပဌင်သထန်သော developer မူဝါဒ။ Minimalism နဲ့ ဝေသတယ်။ အဆင့်ရဟိ စာရလက်စာတမ်သ- "အဲဒါအတလက် ကျေသဇူသတင်ပါတယ်၊ ဒါပေမယ့် အရမ်သမိုက်တယ်။" အဆင့်နိမ့်သော ဝန်ဆောင်မဟုမျာသနဟင့် အပဌန်အလဟန် တုံ့ပဌန်နိုင်စလမ်သကို ပေသစလမ်သသော်လည်သ စာရလက်စာတမ်သသည် ကအကဌောင်သအရာအတလက် အပေါ်ယံဆန်လလန်သသောကဌောင့် ဟုတ်သည်ထက် ပိုမျာသပါသည်။ အရေသပေါ်အခဌေအနေမဟ ဒေတာမျာသကို ပဌန်လည်ရယူရန် အခလင့်အလမ်သ မရဟိသလောက်ပင်ဖဌစ်သည်။

နောက်ထပ်လုပ်ဆောင်မဟုမျာသအတလက် ရလေသချယ်စရာမျာသ- CEPH ကိုစလန့်လလဟတ်ပဌီသ banal multi-disk btrfs (သို့မဟုတ် xfs၊ zfs) ကိုအသုံသပဌုပါ)၊ သတ်မဟတ်ထာသသောအခဌေအနေမျာသတလင် ၎င်သကိုလည်ပတ်နိုင်စေမည့် CEPH နဟင့်ပတ်သက်သောအချက်အလက်အသစ်မျာသကိုလေ့လာပါ၊ သင်၏ကိုယ်ပိုင်သိုလဟောင်မဟုကိုအဆင့်မဌင့်လေ့ကျင့်မဟုတစ်ခုအဖဌစ်ရေသသာသရန်ကဌိုသစာသပါ။ .

source: www.habr.com

မဟတ်ချက် Add