Linux 0.8.0 တွင် ZFS ကို ဖြန့်ချိခြင်း၊ Linux kernel အတွက် ZFS ၏ အကောင်အထည်ဖော်မှုများ

နှစ်နှစ်နီးပါး ဖွံ့ဖြိုးတိုးတက်လာပြီးနောက် တင်ဆက် လွှတ်ပေး Linux 0.8.0 တွင် ZFSLinux kernel အတွက် module တစ်ခုအနေဖြင့်ထုပ်ပိုးထားသော ZFS ဖိုင်စနစ်၏အကောင်အထည်ဖော်မှုတစ်ခု။ မော်ဂျူးကို Linux kernels 2.6.32 မှ 5.1 အထိ စမ်းသပ်ထားသည်။ အဆင်သင့်တပ်ဆင်မှု ပက်ကေ့ဂျ်များ မကြာမီလာမည် ပြင်ဆင်လိမ့်မည်။ Debian၊ Ubuntu၊ Fedora၊ RHEL/CentOS အပါအဝင် အဓိက Linux ဖြန့်ဖြူးမှုများအတွက်။ Linux ပေါ်ရှိ ZFS ကို Debian၊ Ubuntu၊ Gentoo၊ Sabayon Linux နှင့် ALT Linux ဖြန့်ဖြူးမှုများတွင် ထည့်သွင်းပြီးဖြစ်သည်။

Linux ပေါ်ရှိ ZFS ၏ တစ်စိတ်တစ်ပိုင်းအနေဖြင့်၊ ဖိုင်စနစ်၏ လည်ပတ်မှုနှင့် အသံအတိုးအကျယ် မန်နေဂျာ၏ လုပ်ဆောင်မှုနှစ်ခုလုံးနှင့် သက်ဆိုင်သည့် ZFS အစိတ်အပိုင်းများကို အကောင်အထည်ဖော်ရန် ပြင်ဆင်ပြီးဖြစ်သည်။ အထူးသဖြင့်၊ အောက်ပါ အစိတ်အပိုင်းများကို အကောင်အထည်ဖော်သည်- SPA (Storage Pool Allocator), DMU (Data Management Unit), ZVOL (ZFS Emulated Volume) နှင့် ZPL (ZFS POSIX Layer)။ ထို့အပြင်၊ ပရောဂျက်သည် Luster အစုအဝေးဖိုင်စနစ်အတွက် နောက်ကွယ်မှ ZFS ကို အသုံးပြုနိုင်စွမ်းကို ထောက်ပံ့ပေးသည်။ ပရောဂျက်၏အလုပ်သည် OpenSolaris ပရောဂျက်မှတင်သွင်းသောမူရင်း ZFS ကုဒ်ပေါ်တွင်အခြေခံပြီး Illumos အသိုင်းအဝိုင်းမှ တိုးတက်မှုများနှင့် ပြင်ဆင်မှုများဖြင့် မြှင့်တင်ထားသည်။ အဆိုပါပရောဂျက်ကို အမေရိကန်စွမ်းအင်ဌာနနှင့် စာချုပ်အရ Livermore National Laboratory မှ ဝန်ထမ်းများ၏ ပူးပေါင်းပါဝင်မှုဖြင့် ဖော်ဆောင်လျက်ရှိသည်။

GPLv2 နှင့် CDDL လိုင်စင်များအောက်တွင် ကုဒ်ကို ရောနှောခြင်းကို ခွင့်မပြုသောကြောင့် ZFS သည် Linux ပေါ်ရှိ ZFS ကို Linux kernel ၏ ပင်မဌာနခွဲသို့ ပေါင်းစည်းရန် ခွင့်မပြုသော အခမဲ့ CDDL လိုင်စင်အောက်တွင် ကုဒ်ကို ဖြန့်ဝေထားသည်။ ဤလိုင်စင်နှင့် ကိုက်ညီမှုမရှိခြင်းကို ရှောင်ရှားရန်၊ ၎င်းသည် core မှ သီးခြားပံ့ပိုးပေးသည့် သီးခြား loadable module တစ်ခုအဖြစ် CDDL လိုင်စင်အောက်တွင် ထုတ်ကုန်တစ်ခုလုံးကို ဖြန့်ဝေရန် ဆုံးဖြတ်ခဲ့သည်။ Linux codebase ရှိ ZFS ၏ တည်ငြိမ်မှုကို Linux အတွက် အခြားသော ဖိုင်စနစ်များနှင့် ယှဉ်နိုင်သည်ဟု အဆင့်သတ်မှတ်ထားသည်။

အဓိကပြောင်းလဲမှုများ-

  • ဖိုင်စနစ်နှင့် အခန်းကန့်များအဆင့်တွင် သိမ်းဆည်းထားသည့် အချက်အလက်များကို ကုဒ်ဝှက်ခြင်းအတွက် built-in ပံ့ပိုးမှု ထည့်သွင်းထားသည်။ မူလကုဒ်ဝှက်ခြင်းဆိုင်ရာ အယ်လဂိုရီသမ်မှာ aes-256-ccm ဖြစ်သည်။ "zfs load-key" အမိန့်ကို ကုဒ်ဝှက်ခြင်းသော့များ တင်ရန် အဆိုပြုထားသည်။
  • 'zfs send' နှင့် 'zfs receive' ညွှန်ကြားချက်များကို လုပ်ဆောင်သောအခါတွင် ကုဒ်ဝှက်ထားသော ဒေတာကို လွှဲပြောင်းနိုင်သည့် စွမ်းရည်ကို အကောင်အထည်ဖော်ခဲ့သည်။ “-w” ရွေးချယ်မှုကို သတ်မှတ်သောအခါ၊ အလယ်အလတ်စာဝှက်စနစ်ဖြင့် ကုဒ်ဝှက်ခြင်းမပြုဘဲ ရေကူးကန်တွင် ကုဒ်ဝှက်ထားပြီးသော ဒေတာများကို အခြားရေကူးကန်သို့ လွှဲပြောင်းပေးပါသည်။ ယင်းကဲ့သို့ ကူးယူခြင်းဖြင့်၊ ဒေတာကို ပေးပို့သူ၏သော့ဖြင့် ကာကွယ်ထားဆဲဖြစ်ပြီး၊ ဤမုဒ်ကို အသုံးပြု၍ ယုံကြည်စိတ်ချရသော စနစ်များသို့ အရန်ကူးယူရန် ခွင့်ပြုထားပါသည် (လက်ခံသူသည် အပေးအယူခံရပါက တိုက်ခိုက်သူသည် သော့မပါဘဲ ဒေတာကို ဝင်ရောက်ကြည့်ရှုနိုင်မည်မဟုတ်ပါ)။
  • တစ်ဦးချင်းစီနှင့် မှန်တစ်ချပ်၏ အစိတ်အပိုင်းတစ်ခုအဖြစ် ချိတ်ဆက်ထားသည့် သိုလှောင်မှုရေကန်မှ အဓိကဒရိုက်ဗ်များကို ဖယ်ရှားရန်အတွက် ပံ့ပိုးမှု ထပ်လောင်းထည့်ထားသည်။ ဖယ်ရှားခြင်းကို "zpool remove" အမိန့်ဖြင့် လုပ်ဆောင်သည်။ ဖျက်ခြင်းလုပ်ငန်းစဉ်သည် ဖယ်ထုတ်ထားသော drive မှ ဒေတာများကို ရေကူးကန်အတွင်းရှိ ကျန်ရှိသော ပင်မဒရိုက်များသို့ ကူးယူပါသည်။
  • အချိန်မီ သိမ်းဆည်းထားသော အမှတ်သို့ နောက်ထပ်ပြောင်းလဲမှုများကို ပြန်လည်လုပ်ဆောင်နိုင်သဖြင့် ရေကူးကန်၏ လက်ရှိအခြေအနေအား သိမ်းဆည်းရန်အတွက် "zpool checkpoint" ညွှန်ကြားချက်ကို ထည့်သွင်းခဲ့သည် (ရေကူးကန်တစ်ခုလုံး၏ လျှပ်တစ်ပြက်ဓာတ်ပုံကို ဖန်တီးထားသည်)။ ဤအင်္ဂါရပ်သည် ဖြစ်နိုင်ချေရှိသော အန္တရာယ်များသော ရှုပ်ထွေးသော အုပ်ချုပ်ရေးလုပ်ငန်းကို လုပ်ဆောင်သည့်လုပ်ငန်းစဉ်တွင် အသုံးဝင်နိုင်သည်၊ ၎င်းသည် ပုံမှန်အခြေအနေများအောက်တွင် နောက်ပြန်မဆုတ်နိုင်သော အပြောင်းအလဲများကို ဖြစ်စေသည် (ဥပမာ၊ ZFS လုပ်ဆောင်ချက်အသစ်အတွက် အလံများကို အသက်သွင်းခြင်း သို့မဟုတ် ဒေတာရှင်းလင်းခြင်း)၊
  • အသုံးမပြုတော့သောကဏ္ဍများအကြောင်း pool တွင်အသုံးပြုထားသော drives များကို အသိပေးရန်အတွက် "zpool trim" command ကို ထည့်သွင်းထားပါသည်။ TRIM လုပ်ဆောင်ချက်ကို အသုံးပြုခြင်းသည် SSDs များ၏ စွမ်းဆောင်ရည်ကို တိုးမြင့်စေပြီး ၎င်းတို့၏ စွမ်းဆောင်ရည် ကျဆင်းခြင်းကို ကာကွယ်နိုင်စေသည်။ TRIM အမိန့်များကို ထုတ်လွှင့်ခြင်း၏ စဉ်ဆက်မပြတ် နောက်ခံလုပ်ငန်းစဉ်ကို ဖွင့်ရန်အတွက် "autotrim" ပိုင်ဆိုင်မှုအသစ်ကို အဆိုပြုထားပါသည်။
  • ပထမဝင်ရောက်ခွင့်တွင် စွမ်းဆောင်ရည်ကျဆင်းခြင်းမရှိဘဲ ၎င်းကို အသုံးပြုရန် ချက်ချင်းအဆင်သင့်ဖြစ်စေရန် ခွင့်ပြုထားသည့် "zpool initialize" command ကို ထည့်သွင်းထားသည် (ဥပမာ၊ VMware VMDK ကဲ့သို့သော virtualized storages များကို hosting လုပ်သည့်အခါ)၊
  • ယခင်က ရရှိနိုင်သော အသုံးပြုသူနှင့် အုပ်စုအဆင့်ခွဲတမ်းများအပြင် စာရင်းကိုင်နှင့် ပရောဂျက်အဆင့်ခွဲတမ်းများအတွက် ပံ့ပိုးမှု ထပ်လောင်းထည့်ထားသည်။ အနှစ်သာရအားဖြင့်၊ ပရောဂျက်များသည် သီးခြားသတ်မှတ်မှုစနစ် (ပရောဂျက် ID) နှင့် ဆက်စပ်နေသော သီးခြားနေရာတစ်ခုဖြစ်သည်။ စည်းနှောင်ခြင်းကို 'chattr -p' လုပ်ဆောင်ချက်မှတစ်ဆင့် သို့မဟုတ် attribute အမွေဆက်ခံမှုမှတစ်ဆင့် သတ်မှတ်သည်။ ပရောဂျက်စီမံခန့်ခွဲမှုအတွက်၊ "zfs ပရောဂျက်" နှင့် "zfs ပရောဂျက်အာကာသ" ညွှန်ကြားချက်များကို တင်ပြထားပြီး၊ ၎င်းသည် ပရောဂျက်များဖန်တီးခြင်းကို စီမံခန့်ခွဲနိုင်ပြီး ၎င်းတို့အတွက် disk space ကန့်သတ်ချက်များကို သတ်မှတ်နိုင်စေပါသည်။
  • ZFS နှင့် အမျိုးမျိုးသောအလုပ်များကို အလိုအလျောက်လုပ်ဆောင်ရန် Lua scripts များဖန်တီးနိုင်မှုကို ထည့်သွင်းထားသည်။ "zpool ပရိုဂရမ်" အမိန့်ကို အသုံးပြု၍ အထူးသီးသန့်ပတ်ဝန်းကျင်တွင် Script များကို လုပ်ဆောင်သည်။
  • စာကြည့်တိုက်အသစ် အကောင်အထည်ဖော်ခဲ့သည်။ pyzfsPython အပလီကေးရှင်းများမှ ZFS ကို စီမံခန့်ခွဲရန်အတွက် တည်ငြိမ်သော API ကို ပံ့ပိုးပေးသည်။ စာကြည့်တိုက်သည် libzfs_core ပတ်ပတ်လည်တွင် ခြုံငုံပြီး ထပ်တူထပ်မျှ လုပ်ဆောင်ချက်များကို ပံ့ပိုးပေးသော်လည်း ပိုမိုနီးစပ်သော Python အမျိုးအစားများကို အသုံးပြုသည်။
  • arcstat၊ arcsummary နှင့် dbufstat utilities များကို Python 3 နှင့် သဟဇာတဖြစ်အောင် ပြုလုပ်ထားပါသည်။ arcstat.py, arc_summary.py နှင့် dbufstat.py utilities များကို ".py" extension မပါဘဲ ဗားရှင်းများသို့ အမည်ပြောင်းထားပါသည်။
  • ဒေတာကို buffering နှင့် cache ကိုကျော်လွှားခြင်းမရှိဘဲဒေတာကိုဝင်ရောက်ခွင့်ပြုသည့် Linux Direct IO (O_DIRECT) kernel အင်တာဖေ့စ်အတွက် ပံ့ပိုးမှုထပ်ထည့်ထားသည်။
  • စွမ်းဆောင်ရည် ပိုကောင်းအောင် မိတ်ဆက်ခဲ့သည်-
    • အဆင့်နှစ်ဆင့်ခွဲထားခြင်းကြောင့် “scrub” နှင့် “resilver” command များ၏လုပ်ငန်းကို အရှိန်မြှင့်လိုက်ပါပြီ ( metadata ကိုစကင်န်ဖတ်ရန်နှင့် disk ပေါ်ရှိ ဒေတာပါသော ပိတ်ဆို့ထားသောတည်နေရာကို သတ်မှတ်ခြင်းအတွက် သီးခြားအဆင့်တစ်ခုကို ခွဲဝေပေးလိုက်သည်၊၊ ဆက်တိုက်ဒေတာကိုအသုံးပြု၍ ထပ်မံအတည်ပြုနိုင်သည် စာဖတ်ခြင်း);
    • ခွဲဝေပေးသည့် အတန်းများအတွက် ပံ့ပိုးကူညီမှု ထပ်လောင်းပေးခြင်း၊
      သေးငယ်သော SSD များကို ပေါင်းစည်းရန် ခွင့်ပြုထားပြီး မက်တာဒေတာ၊ DDT ဒေတာနှင့် ဖိုင်ဘလောက်ငယ်များကဲ့သို့သော အသုံးများသော ဘလောက်အချို့ကိုသာ သိမ်းဆည်းရန် အသုံးပြုသည်။

    • ကဲ့သို့သော admin command များ၏စွမ်းဆောင်ရည်ကိုမြှင့်တင်ထားသည်။
      ၎င်းတို့၏ လုပ်ဆောင်ချက်အတွက် လိုအပ်သော မက်တာဒေတာကို သိမ်းဆည်းခြင်းဖြင့် "zfs စာရင်း" နှင့် "zfs get"၊

    • metaslab အုပ်စုတစ်ခုစီအတွက် သီးခြားခွဲဝေပေးသည့် လုပ်ငန်းစဉ်များကို လုပ်ဆောင်ခြင်းဖြင့် ပိတ်ဆို့ခွဲဝေမှုလုပ်ဆောင်မှုများကို ပြိုင်တူပြုလုပ်ရန် ပံ့ပိုးမှု ထပ်လောင်းထည့်သွင်းထားသည်။ သမားရိုးကျစနစ်များတွင်၊ စွမ်းဆောင်ရည် 5-10% တိုးလာသော်လည်း ကြီးမားသော (8 128 GB SSD၊ 24 core NUMA၊ 256 GB RAM) သည် ပိတ်ဆို့ခွဲဝေမှုလုပ်ဆောင်မှုများတွင် တိုးလာမှုသည် 25% အထိရှိလာနိုင်သည်။
    • "resilver" command ကို နှောင့်နှေးစေသော လုပ်ဆောင်နိုင်ခြေကို ပေါင်းထည့်ခဲ့သည် ( drives ၏ configuration တွင် ပြောင်းလဲမှုများကို ထည့်သွင်းစဉ်းစားပြီး ဒေတာဖြန့်ဖြူးမှုကို ပြန်လည်တည်ဆောက်ခြင်း) - ယခင်လုပ်ဆောင်မှုအသစ်တစ်ခုစတင်သည့်အခါ ယခင်တစ်ခုက မပြီးသေးပါက၊ ကိုင်တွယ်သူအသစ်သည် ပြီးမှသာ စတင်လုပ်ဆောင်မည်ဖြစ်သည်။ ယခင်တစ်ခုပြီးသွားပြီ။
    • သိုလှောင်မှုဖြင့် လုပ်ဆောင်ဆဲ လုပ်ကွက်များရှေ့တွင် လုပ်ကွက်များ ဖန်တီးခြင်းနှင့် လုပ်ဆောင်ခြင်းများကို ခွင့်ပြုရန် ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ခြင်းများကို ZIL (ZFS Intent Log) တွင် ထည့်သွင်းထားပါသည်။
    • စနစ်ရှိ အခန်းကန့်များ (zvol) အတွက် မှတ်ပုံတင်ချိန်ကို လျှော့ချထားသည်။ pool တစ်ခုတွင် partitions အများအပြားပါရှိသောအခါ၊ "zpool import" ကိုလုပ်ပြီးနောက် ၎င်းတို့သည် ချက်ချင်းရနိုင်ပါပြီ။
    • Intel QAT (Quick Assist Technology) ချစ်ပ်များကို အသုံးပြု၍ SHA256 hashs နှင့် AES-GSM ကုဒ်ဝှက်ခြင်းလုပ်ဆောင်မှုများကို ဟာ့ဒ်ဝဲ အရှိန်မြှင့်တွက်ချက်မှုအတွက် ပံ့ပိုးမှု ထပ်လောင်းထည့်သွင်းထားသည်။ Intel C62x ချစ်ပ်ဆက်နှင့် CPU Atom C3000 ၏ ဟာ့ဒ်ဝဲလ်အရှိန်မြှင့်မှုအတွက် ပံ့ပိုးမှု ထပ်လောင်းထည့်ထားသည်။

source: opennet.ru

မှတ်ချက် Add