မင်္ဂလာပါ၊ ကျွန်ုပ်သည် မကြာသေးမီက စိတ်ဝင်စားစရာကောင်းသည့် ပြဿနာတစ်ခုကို ကြုံတွေ့ခဲ့ရသည်- ဘလောက်ကိရိယာအများအပြားကို အရန်သိမ်းရန်အတွက် သိုလှောင်မှုစနစ်ထည့်သွင်းခြင်း။
ကျွန်ုပ်တို့သည် ကျွန်ုပ်တို့၏ cloud ရှိ virtual machines အားလုံးကို အပတ်တိုင်း မိတ္တူကူးထားသောကြောင့် ကျွန်ုပ်တို့သည် အရန်ထောင်ပေါင်းများစွာကို ထိန်းသိမ်းထားနိုင်ပြီး ၎င်းကို တတ်နိုင်သမျှ မြန်မြန်နှင့် ထိရောက်စွာ လုပ်ဆောင်ရန် လိုအပ်ပါသည်။
ကံမကောင်းစွာပဲ၊ စံသတ်မှတ်ချက်များ RAID ၁, RAID ၁ ဤကိစ္စတွင်၊ ကျွန်ုပ်တို့ကဲ့သို့ ကြီးမားသော disk များပေါ်တွင် ပြန်လည်ရယူခြင်းလုပ်ငန်းစဉ်သည် နာကျင်စွာကြာမြင့်မည်ဖြစ်ပြီး မည်သည့်အခါမျှ ပြီးဆုံးမည်မဟုတ်သောကြောင့် ဤကိစ္စတွင် ကျွန်ုပ်တို့သည် ထိုသို့လုပ်ဆောင်ရန် ခွင့်မပြုပါ။
ဘယ်လိုရွေးချယ်စရာတွေရှိလဲဆိုတာ ကြည့်ကြရအောင်။
ဆာဗာ ရရှိနိုင်ပါသည်။ Fujitsu Primergy RX300 S7 processor နဲ့ Intel Xeon CPU E5-2650L 0 @ 1.80GHzရမ်ကိုးချောင်း၊ Samsung DDR3-1333 8Gb PC3L-10600R ECC မှတ်ပုံတင်ထားသည် (M393B1K70DH0-YH9)ဒစ်စင်၊ Supermicro SuperChassis 847E26-RJBOD1မှတဆင့်ချိတ်ဆက်ထားသည်။ Dual LSI SAS2X36 Expander နှင့် 45 discs Seagage ST6000NM0115-1YZ110 အပေါ် 6TB လူတိုင်း။
ဘာကိုမှ မဆုံးဖြတ်ခင်မှာ အရာအားလုံးကို သေသေချာချာ စမ်းသပ်ဖို့ လိုပါတယ်။
ဒီလိုလုပ်ဖို့၊ အမျိုးမျိုးသော configurations ကိုပြင်ဆင်ပြီး စမ်းသပ်ခဲ့တယ်။ ဒါကိုလုပ်ဖို့၊ S3 နောက်ခံအဖြစ်လုပ်ဆောင်တဲ့ minio ကိုအသုံးပြုပြီး ကွဲပြားတဲ့ပစ်မှတ်အရေအတွက်တွေနဲ့ မတူညီတဲ့မုဒ်တွေမှာဖွင့်ပါတယ်။
အခြေခံအားဖြင့်၊ minio case ကို တူညီသော disks အရေအတွက်နှင့် parity of disks များဖြင့် erasure coding vs software raid တွင် စမ်းသပ်ခဲ့ပြီး ၎င်းတို့မှာ RAID6၊ RAIDZ2 နှင့် DRAID2 ဖြစ်သည်။
အကိုးအကားအတွက်- ပစ်မှတ်တစ်ခုတည်းဖြင့် minio ကို သင်စတင်သောအခါ၊ minio သည် S3 gateway မုဒ်တွင်အလုပ်လုပ်သည်၊ သင်၏ဒေသခံဖိုင်စနစ်ကို S3 သိုလှောင်မှုပုံစံဖြင့်ပေးပို့သည်။ ပစ်မှတ်အများအပြားကို သတ်မှတ်ခြင်းအသေးစားကို သင်ဖွင့်ပါက၊ အမှားခံနိုင်ရည်ကို ပံ့ပိုးပေးနေစဉ် သင့်ပစ်မှတ်များအကြား ဒေတာကို ပျံ့နှံ့စေမည့် Erasure Coding မုဒ်သည် အလိုအလျောက်ပွင့်သွားမည်ဖြစ်သည်။
မူရင်းအားဖြင့်၊ minio သည် ပစ်မှတ်များကို အုပ်စုတစ်ခုလျှင် 16 parities ဖြင့် disk 2 ခုတွင် အုပ်စုများခွဲထားသည်။ အဲဒါတွေ။ ဒေတာမဆုံးရှုံးဘဲ ဒစ်နှစ်ခုသည် တစ်ချိန်တည်းတွင် ပျက်နိုင်သည်။
စွမ်းဆောင်ရည်ကို စမ်းသပ်ရန်အတွက် 16TB ဒစ်တစ်ခုစီကို 6 ခုအသုံးပြုပြီး ၎င်းတို့တွင် 1MB အရွယ်အစားရှိသော အရာဝတ္ထုအသေးစားများကို ရေးခဲ့ပြီး၊ ခေတ်မီသော အရန်ကိရိယာများအားလုံးသည် အချက်အလက်များကို မီဂါဘိုက်များစွာဖြင့် ပိုင်းခြားပြီး ဤနည်းဖြင့် ရေးနိုင်သောကြောင့် ကျွန်ုပ်တို့၏အနာဂတ်ဝန်ကို အတိကျဆုံးဖော်ပြခဲ့သည်။
စံနှုန်းကိုလုပ်ဆောင်ရန်၊ ကျွန်ုပ်တို့သည် အဝေးထိန်းဆာဗာတစ်ခုပေါ်တွင် စတင်ခဲ့ပြီး s3bench utility ကိုအသုံးပြုပြီး သောင်းနှင့်ချီသော အရာဝတ္ထုများကို minio သို့ စာတွဲရာပေါင်းများစွာဖြင့် ပေးပို့ခဲ့ပါသည်။ အဲဒီနောက်မှာ ကျွန်တော်လည်း ဒီအတိုင်းပဲ ပြန်တောင်းဆိုဖို့ ကြိုးစားခဲ့ပါတယ်။
စံနှုန်းရလဒ်များကို အောက်ပါဇယားတွင် ပြသထားသည်။
ကျွန်ုပ်တို့မြင်နိုင်သည်အတိုင်း၊ ၎င်း၏ကိုယ်ပိုင်ဖျက်ပစ်သောကုဒ်မုဒ်တွင် minio သည် တူညီသောဖွဲ့စည်းမှုတွင်ဆော့ဖ်ဝဲ RAID6၊ RAIDZ2 နှင့် DRAID2 ၏ထိပ်တွင်အလုပ်လုပ်သော minio ထက်စာရေးခြင်းတွင်သိသိသာသာလုပ်ဆောင်သည်။
ငါ့ကို သတ်သတ်
စမ်းသပ်မှု ပထမအသုတ်တွင် Mdadm သည် ZFS ထက် သာလွန်ကြောင်း ပြသခဲ့သော်လည်း နောက်ပိုင်းတွင် ဖြစ်သည်။
xattr=sa atime=off recordsize=1M
ထို့နောက် ZFS နှင့် စမ်းသပ်မှုများသည် ပိုမို ကောင်းမွန်လာသည်။
DRAID သည် RAIDZ ထက် စွမ်းဆောင်ရည်များစွာ ရရှိခြင်းမရှိကြောင်း သတိပြုနိုင်သော်လည်း သီအိုရီအရ ၎င်းသည် ပိုမိုလုံခြုံသင့်သည်။
နောက်ဆုံးစမ်းသပ်မှုနှစ်ခုတွင်၊ ကျွန်ုပ်သည် SSD မှ mirror သို့ metadata (အထူး) နှင့် ZIL (မှတ်တမ်း) ကို လွှဲပြောင်းရန် ကြိုးစားခဲ့သည်။ သို့သော် မက်တာဒေတာကို ဖယ်ရှားခြင်းသည် မှတ်တမ်းတင်ခြင်းအမြန်နှုန်းတွင် များစွာအကျိုးမဖြစ်ထွန်းဘဲ ZIL ကို ဖယ်ရှားသည့်အခါ ကျွန်ုပ်၏
အဆုံးတွင်၊ DRAID ကိုသုံးရန် ဆုံးဖြတ်ခဲ့ပြီး ၎င်း၏ beta အဆင့်ရှိသော်လည်း၊ ၎င်းသည် ကျွန်ုပ်တို့၏ကိစ္စတွင် အမြန်ဆန်ဆုံးနှင့် အထိရောက်ဆုံး သိုလှောင်မှုဖြေရှင်းချက်ဖြစ်သည်။
အုပ်စုသုံးစုနှင့် ဖြန့်ဝေထားသော အပိုပစ္စည်း နှစ်ခုပါသော ရိုးရှင်းသော DRAID2 ကို ဖန်တီးထားပါသည်။
# zpool status data
pool: data
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
data ONLINE 0 0 0
draid2:3g:2s-0 ONLINE 0 0 0
sdy ONLINE 0 0 0
sdam ONLINE 0 0 0
sdf ONLINE 0 0 0
sdau ONLINE 0 0 0
sdab ONLINE 0 0 0
sdo ONLINE 0 0 0
sdw ONLINE 0 0 0
sdak ONLINE 0 0 0
sdd ONLINE 0 0 0
sdas ONLINE 0 0 0
sdm ONLINE 0 0 0
sdu ONLINE 0 0 0
sdai ONLINE 0 0 0
sdaq ONLINE 0 0 0
sdk ONLINE 0 0 0
sds ONLINE 0 0 0
sdag ONLINE 0 0 0
sdi ONLINE 0 0 0
sdq ONLINE 0 0 0
sdae ONLINE 0 0 0
sdz ONLINE 0 0 0
sdan ONLINE 0 0 0
sdg ONLINE 0 0 0
sdac ONLINE 0 0 0
sdx ONLINE 0 0 0
sdal ONLINE 0 0 0
sde ONLINE 0 0 0
sdat ONLINE 0 0 0
sdaa ONLINE 0 0 0
sdn ONLINE 0 0 0
sdv ONLINE 0 0 0
sdaj ONLINE 0 0 0
sdc ONLINE 0 0 0
sdar ONLINE 0 0 0
sdl ONLINE 0 0 0
sdt ONLINE 0 0 0
sdah ONLINE 0 0 0
sdap ONLINE 0 0 0
sdj ONLINE 0 0 0
sdr ONLINE 0 0 0
sdaf ONLINE 0 0 0
sdao ONLINE 0 0 0
sdh ONLINE 0 0 0
sdp ONLINE 0 0 0
sdad ONLINE 0 0 0
spares
s0-draid2:3g:2s-0 AVAIL
s1-draid2:3g:2s-0 AVAIL
errors: No known data errors
ကောင်းပြီ၊ ကျွန်ုပ်တို့သည် သိုလှောင်ခန်းကို ခွဲထုတ်လိုက်ပါပြီ၊ ယခု ကျွန်ုပ်တို့ အရန်သိမ်းမည့်အရာအကြောင်း ဆွေးနွေးကြပါစို့။ ဤနေရာတွင် ကျွန်ုပ်ကြိုးစားနိုင်ခဲ့သော ဖြေရှင်းချက်သုံးမျိုးအကြောင်း ချက်ချင်းပြောပြလိုသည်၊ ၎င်းတို့မှာ-
--special
အနည်းအကျဉ်းများထဲမှ တစ်ခု- အရန်သိမ်းခြင်းကို ဖန်တီးသောအခါ၊ သိုလှောင်မှုအား လုံးလုံးလျားလျား ပိတ်ဆို့ထားသောကြောင့် virtual machine တစ်ခုစီအတွက် သီးခြား repository တစ်ခုကို ဖန်တီးရန် အကြံပြုထားပြီး၊ မူအရ၊ ဤအရာသည် ပြဿနာမဟုတ်ပါ၊ ကံကောင်းထောက်မစွာဖြင့် ၎င်းတို့ကို အလွန်လွယ်ကူစွာ ဖန်တီးထားသည်။
-
ပထမဦးစွာ၊ ကျွန်ုပ်သည် ၎င်းကို virtual machine အားလုံး (Benji ကဲ့သို့) အတွက် ယေဘူယျ သိုလှောင်မုဒ်တွင် အသုံးပြုရန် ကြိုးစားခဲ့ပြီး ၎င်းသည် အတော်လေး အလုပ်လုပ်သော်လည်း ပြန်လည်ရယူသည့် လုပ်ဆောင်ချက်များသည် အချိန်ကြာမြင့်သောကြောင့် ... ပြန်လည်ရယူခြင်းမပြုမီတိုင်း၊ အရန်သိမ်းဆည်းမှုအားလုံး၏ မက်တာဒေတာကို Restic က ဖတ်ရန် ကြိုးစားသည်။ virtual machine တစ်ခုစီအတွက် သီးခြား repository တစ်ခုကို ဖန်တီးခြင်းဖြင့် borg ကဲ့သို့ပင် ဤပြဿနာကို အလွယ်တကူ ဖြေရှင်းနိုင်ခဲ့ပါသည်။ ဤနည်းလမ်းသည် အရန်ကူးခြင်းကို စီမံခန့်ခွဲရာတွင်လည်း အလွန်ထိရောက်ကြောင်း သက်သေပြခဲ့သည်။ သီးခြားသိုလှောင်ရုံများတွင် ဒေတာဝင်ရောက်ရန်အတွက် သီးခြားစကားဝှက်တစ်ခုရှိနိုင်ပြီး ကမ္ဘာလုံးဆိုင်ရာ repo သည် တစ်နည်းနည်းနှင့် ပျက်သွားနိုင်သည်ကို ကျွန်ုပ်တို့လည်း စိုးရိမ်နေစရာမလိုပါ။ borg မိတ္တူတွင်ကဲ့သို့ အလွယ်တကူ သိုလှောင်မှုအသစ်များကို မွေးမြူနိုင်သည်။
မည်သို့ပင်ဆိုစေကာမူ၊ အရန်ကူးယူခြင်းကို ယခင်ဗားရှင်းနှင့်သာ သက်ဆိုင်သည်၊ ယခင်အရန်ကူးယူမှုကို သတ်မှတ်ထားသော အရန်ကူးယူရန်အတွက် လမ်းကြောင်းဖြင့် ဆုံးဖြတ်သည်၊ ထို့ကြောင့် သင်သည် မတူညီသော အရာဝတ္ထုများကို stdin မှ ဘုံ repository တစ်ခုသို့ ကူးယူထားပါက၊ သတ်မှတ်ရန် မမေ့ပါနှင့်။ ရွေးချယ်မှု
--stdin-filename
သို့မဟုတ် အကြိမ်တိုင်း ရွေးချယ်စရာကို အတိအလင်း သတ်မှတ်ပါ။--parent
.
-
ဒုတိယအနေနှင့်၊ ၎င်း၏အပြိုင်သဘောသဘာဝကြောင့် ဖိုင်စနစ်သို့ ပြန်လည်ရယူခြင်းသည် stdout သို့ ပြန်လည်ရယူခြင်းထက် များစွာပိုကြာပါသည်။ အနာဂတ်တွင်၊ ကျွန်ုပ်တို့သည် ပိတ်ဆို့ထားသောစက်ပစ္စည်းများအတွက် အရန်ကူးယူမှုများကို ပိုမိုနီးကပ်စွာ ပံ့ပိုးကူညီရန် စီစဉ်ထားပါသည်။
-
တတိယ၊ လောလောဆယ်အသုံးပြုရန်အကြံပြုထားသည်။
မာစတာထံမှဗားရှင်း , ဘာဖြစ်လို့လဲဆိုတော့ ဗားရှင်း 0.9.6 တွင် ကြီးမားသောဖိုင်များကို ကြာမြင့်စွာ ပြန်လည်ရယူသည့် ချို့ယွင်းချက်တစ်ခုရှိသည်။
အရန်သိမ်းခြင်း၏ ထိရောက်မှုနှင့် အရန်သိမ်းဆည်းမှုမှ ရေးသားခြင်း/ပြန်လည်ရယူခြင်း၏ မြန်နှုန်းတို့ကို စမ်းသပ်ရန် သီးခြားသိုလှောင်ခန်းတစ်ခုကို ဖန်တီးခဲ့ပြီး virtual machine ငယ်တစ်ခု (21 GB) ကို အရန်ကူးရန် ကြိုးစားခဲ့သည်။ ကူးယူထားသောဒေတာကို မည်မျှမြန်/နှေး ကူးယူထားသည်ကို စစ်ဆေးရန် ဖော်ပြထားသော ဖြေရှင်းချက်တစ်ခုစီကို အသုံးပြု၍ အရန်ကူးခြင်းနှစ်ခုကို မူရင်းကို မပြောင်းလဲဘဲ လုပ်ဆောင်ခဲ့သည်။
ကျွန်ုပ်တို့မြင်နိုင်သည်အတိုင်း၊ Borg Backup တွင် အကောင်းဆုံးကနဦးအရန်ကူးယူမှုအချိုးအစားရှိသော်လည်း စာရေးခြင်းနှင့် ပြန်လည်ရယူခြင်းအမြန်နှုန်း နှစ်ခုစလုံးတွင် ယုတ်ညံ့ပါသည်။
Restic သည် Benji Backup ထက် ပိုမြန်သော်လည်း stdout သို့ ပြန်လည်ရယူရန် အချိန်ပိုကြာပြီး ကံမကောင်းစွာဖြင့်၊ ၎င်းသည် block device တစ်ခုသို့ တိုက်ရိုက်ရေးနည်းကို မသိသေးပါ။
ကောင်းကျိုးဆိုးကျိုးတွေအားလုံးကို ချိန်ဆပြီးရင် ပြေလည်ဖို့ ဆုံးဖြတ်လိုက်တယ်။ အငြိမ် с အနားယူ-ဆာဗာ အဆင်ပြေဆုံးနှင့် အလားအလာအကောင်းဆုံး အရန်သိမ်းဖြေရှင်းချက်အဖြစ်။
ဤစခရင်ကာစ်တွင် 10-gigabit ချန်နယ်တစ်ခုအား အရန်သိမ်းဆည်းခြင်းဆိုင်ရာ လုပ်ဆောင်ချက်များစွာကို တစ်ပြိုင်နက်လုပ်ဆောင်နေချိန်တွင် သင်သည် 30-gigabit ချန်နယ်ကို မည်ကဲ့သို့ အပြည့်အဝအသုံးပြုသည်ကို သင်တွေ့မြင်နိုင်ပါသည်။ disk ပြန်လည်အသုံးပြုခြင်းသည် XNUMX% ထက်မတက်ကြောင်း သတိပြုသင့်သည်။
ကျွန်တော်ရရှိခဲ့တဲ့ အဖြေကို ကျွန်တော် ကျေနပ်မိသည် ။
source: www.habr.com