បទពិសោធន៍ជាមួយ CEPH

នៅពេលដែលមានទិន្នន័យច្រើនជាងអាចដាក់នៅលើថាសមួយ វាដល់ពេលដែលត្រូវគិតអំពី RAID ។ កាលនៅក្មេង ខ្ញុំបានលឺជាញឹកញាប់ពីមនុស្សចាស់របស់ខ្ញុំថា "ថ្ងៃណាមួយ RAID នឹងក្លាយជារឿងអតីតកាល ការផ្ទុកវត្ថុនឹងពេញពិភពលោក ហើយអ្នកមិនដឹងថាអ្វីជា CEPH" ដូច្នេះរឿងដំបូងនៅក្នុងជីវិតឯករាជ្យរបស់ខ្ញុំ គឺដើម្បីបង្កើតចង្កោមផ្ទាល់ខ្លួនរបស់ខ្ញុំ។ គោលបំណងនៃការពិសោធន៍គឺដើម្បីស្គាល់រចនាសម្ព័ន្ធខាងក្នុងរបស់ ceph និងយល់ពីវិសាលភាពនៃកម្មវិធីរបស់វា។ តើការអនុវត្ត ceph ក្នុងអាជីវកម្មខ្នាតមធ្យម និងខ្នាតតូច មានភាពយុត្តិធម៌ប៉ុណ្ណា? បន្ទាប់ពីប្រតិបត្តិការជាច្រើនឆ្នាំ និងការបាត់បង់ទិន្នន័យដែលមិនអាចត្រឡប់វិញបានពីរបីឆ្នាំ ការយល់ដឹងអំពីភាពស្មុគ្រស្មាញបានកើតឡើង ដែលមិនមែនអ្វីៗទាំងអស់គឺសាមញ្ញនោះទេ។ ភាពប្លែកនៃ CEPH បង្កឧបសគ្គដល់ការស្មុំកូនយ៉ាងទូលំទូលាយ ហើយដោយសារតែពួកគេ ការពិសោធន៍បានឈានដល់ទីបញ្ចប់ហើយ។ ខាងក្រោមនេះគឺជាការពិពណ៌នាអំពីជំហានទាំងអស់ដែលបានធ្វើឡើង លទ្ធផលដែលទទួលបាន និងការសន្និដ្ឋានដែលបានទាញ។ បើអ្នកចេះដឹងចែករំលែកបទពិសោធន៍ និងពន្យល់ចំណុចខ្លះ ខ្ញុំនឹងដឹងគុណ។

ចំណាំ៖ អ្នកអត្ថាធិប្បាយបានកំណត់អត្តសញ្ញាណកំហុសធ្ងន់ធ្ងរនៅក្នុងការសន្មត់មួយចំនួនដែលទាមទារឱ្យមានការកែប្រែអត្ថបទទាំងមូល។

យុទ្ធសាស្ត្រ CEPH

ចង្កោម CEPH រួមបញ្ចូលគ្នានូវចំនួនបំពាន K នៃថាសដែលមានទំហំបំពាន ហើយរក្សាទុកទិន្នន័យនៅលើពួកវា ដោយស្ទួនដុំនីមួយៗ (4 MB តាមលំនាំដើម) នូវចំនួន N ដង។

ចូរយើងពិចារណាករណីសាមញ្ញបំផុតដែលមានថាសដូចគ្នាពីរ។ ពីពួកវាអ្នកអាចប្រមូលផ្តុំ RAID 1 ឬចង្កោមជាមួយ N = 2 - លទ្ធផលនឹងដូចគ្នា។ ប្រសិនបើមានថាសចំនួនបី ហើយពួកវាមានទំហំខុសៗគ្នា នោះវាងាយស្រួលក្នុងការប្រមូលផ្តុំចង្កោមជាមួយ N=2៖ ទិន្នន័យមួយចំនួននឹងមាននៅលើថាសទី 1 និងទី 2 ខ្លះនឹងស្ថិតនៅលើថាសទី 1 និងទី 3 ហើយមួយចំនួនទៀតនឹងជា នៅថ្ងៃទី 2 និងទី 3 ខណៈពេលដែល RAID នឹងមិន (អ្នកអាចប្រមូលផ្តុំ RAID បែបនេះ ប៉ុន្តែវានឹងជាការបង្វែរ)។ ប្រសិនបើមានឌីសកាន់តែច្រើននោះ វាអាចបង្កើត RAID 5; CEPH មាន analogue - erasure_code ដែលផ្ទុយនឹងគំនិតដំបូងរបស់អ្នកអភិវឌ្ឍន៍ ហើយដូច្នេះវាមិនត្រូវបានពិចារណាទេ។ RAID 5 សន្មត់ថាមានមួយចំនួនតូចនៃដ្រាយទាំងអស់ដែលស្ថិតក្នុងស្ថានភាពល្អ។ ប្រសិនបើមួយបរាជ័យ អ្នកផ្សេងទៀតត្រូវតែរង់ចាំរហូតដល់ថាសត្រូវបានជំនួស ហើយទិន្នន័យត្រូវបានស្ដារឡើងវិញ។ CEPH ជាមួយ N>=3 លើកទឹកចិត្តឱ្យប្រើថាសចាស់ ជាពិសេសប្រសិនបើអ្នករក្សាទុកថាសល្អជាច្រើនដើម្បីរក្សាទុកច្បាប់ចម្លងទិន្នន័យមួយ ហើយរក្សាទុកច្បាប់ចម្លងពីរឬបីដែលនៅសល់នៅលើថាសចាស់មួយចំនួនធំ នោះព័ត៌មាន។ នឹងមានសុវត្ថិភាព ចាប់តាំងពីពេលនេះថាសថ្មីនៅរស់ - មិនមានបញ្ហាអ្វីទេ ហើយប្រសិនបើមួយក្នុងចំណោមពួកវាដាច់ នោះការបរាជ័យក្នុងពេលដំណាលគ្នានៃថាសចំនួនបីដែលមានអាយុកាលសេវាកម្មលើសពីប្រាំឆ្នាំ និយមពីម៉ាស៊ីនមេផ្សេងៗគឺទំនងជាមិនទំនងទាល់តែសោះ។ ព្រឹត្តិការណ៍។

មានភាពស្រពិចស្រពិលក្នុងការចែកចាយច្បាប់ចម្លង។ តាមលំនាំដើម វាត្រូវបានសន្មត់ថាទិន្នន័យត្រូវបានបែងចែកទៅជាក្រុមចែកចាយ PG ច្រើនជាង (~100 ក្នុងមួយឌីស) ដែលនីមួយៗត្រូវបានចម្លងនៅលើថាសមួយចំនួន។ ឧបមាថា K=6, N=2 បន្ទាប់មកប្រសិនបើថាសពីរណាមួយបរាជ័យ ទិន្នន័យត្រូវបានធានាថានឹងបាត់បង់ ដោយសារយោងទៅតាមទ្រឹស្តីប្រូបាប៊ីលីតេ នឹងមានយ៉ាងហោចណាស់ PG មួយដែលនឹងមានទីតាំងនៅលើថាសទាំងពីរនេះ។ ហើយការបាត់បង់ក្រុមមួយធ្វើឱ្យទិន្នន័យទាំងអស់នៅក្នុងអាងមិនអាចប្រើបាន។ ប្រសិនបើថាសត្រូវបានបែងចែកជាបីគូ ហើយទិន្នន័យត្រូវបានអនុញ្ញាតឱ្យរក្សាទុកតែលើថាសក្នុងគូមួយ នោះការចែកចាយបែបនេះក៏ធន់នឹងការបរាជ័យនៃថាសមួយដែរ ប៉ុន្តែប្រសិនបើថាសពីរបរាជ័យ ប្រូបាប៊ីលីតេនៃការបាត់បង់ទិន្នន័យគឺមិនមែនទេ។ 100% ប៉ុន្តែមានតែ 3/15 ហើយសូម្បីតែក្នុងករណីមានការបរាជ័យបីឌីស - មានតែ 12/20 ប៉ុណ្ណោះ។ ដូច្នេះ entropy ក្នុងការចែកចាយទិន្នន័យមិនរួមចំណែកដល់ការអត់ឱនចំពោះកំហុសទេ។ សូមចំណាំផងដែរថាសម្រាប់ម៉ាស៊ីនមេឯកសារ RAM ឥតគិតថ្លៃបង្កើនល្បឿនឆ្លើយតបយ៉ាងខ្លាំង។ អង្គចងចាំកាន់តែច្រើននៅក្នុង node នីមួយៗ និងអង្គចងចាំកាន់តែច្រើននៅក្នុង node ទាំងអស់ វានឹងកាន់តែលឿន។ នេះពិតជាអត្ថប្រយោជន៍នៃចង្កោមលើម៉ាស៊ីនមេតែមួយ ហើយលើសពីនេះទៅទៀតគឺ Hardware NAS ដែលមានទំហំតូចនៃអង្គចងចាំត្រូវបានបង្កើតឡើង។

វាធ្វើតាមថា CEPH គឺជាមធ្យោបាយដ៏ល្អមួយក្នុងការបង្កើតប្រព័ន្ធផ្ទុកទិន្នន័យដែលអាចទុកចិត្តបានសម្រាប់ជំងឺរបេងរាប់សិបជាមួយនឹងសមត្ថភាពក្នុងការធ្វើមាត្រដ្ឋានជាមួយនឹងការវិនិយោគតិចតួចពីឧបករណ៍ដែលហួសសម័យ (ជាការពិតណាស់ នៅទីនេះ ការចំណាយនឹងត្រូវបានទាមទារ ប៉ុន្តែតិចតួចបើប្រៀបធៀបទៅនឹងប្រព័ន្ធផ្ទុកពាណិជ្ជកម្ម)។

ការអនុវត្តចង្កោម

សម្រាប់ការពិសោធន៍ យើងយកកុំព្យូទ័រ Intel DQ57TM + Intel core i3 540 + 16 GB នៃ RAM ដែលត្រូវបញ្ឈប់។ យើងនឹងរៀបចំថាស 2 TB ចំនួនបួនចូលទៅក្នុងអ្វីមួយដូចជា RAID10 បន្ទាប់ពីការធ្វើតេស្តជោគជ័យ យើងនឹងបន្ថែមថ្នាំងទីពីរ និងចំនួនថាសដូចគ្នា។

ការដំឡើងលីនុច។ ការចែកចាយទាមទារសមត្ថភាពក្នុងការប្ដូរតាមបំណង និងមានស្ថេរភាព។ Debian និង Suse បំពេញតាមតម្រូវការ។ Suse មានកម្មវិធីដំឡើងដែលអាចបត់បែនបានដែលអនុញ្ញាតឱ្យអ្នកបិទកញ្ចប់ណាមួយ។ ជាអកុសល ខ្ញុំមិនអាចគិតថាតើមួយណាអាចត្រូវបានគេបោះចោលដោយមិនធ្វើឱ្យខូចប្រព័ន្ធនោះទេ។ ដំឡើង Debian ដោយប្រើ debootstrap buster ។ ជម្រើស min-base ដំឡើងប្រព័ន្ធខូចដែលខ្វះអ្នកបើកបរ។ ភាពខុសគ្នានៃទំហំបើប្រៀបធៀបទៅនឹងកំណែពេញលេញគឺមិនធំពេកដែលគួរឱ្យរំខាន។ ដោយសារការងារត្រូវបានអនុវត្តនៅលើម៉ាស៊ីនរូបវន្ត ខ្ញុំចង់ថតរូបដូចជានៅលើម៉ាស៊ីននិម្មិត។ ជម្រើសនេះត្រូវបានផ្តល់ដោយ LVM ឬ btrfs (ឬ xfs ឬ zfs - ភាពខុសគ្នាគឺមិនធំទេ) ។ រូបថត LVM មិនមែនជាចំណុចខ្លាំងទេ។ ដំឡើង btrfs ។ ហើយកម្មវិធីចាប់ផ្ដើមប្រព័ន្ធគឺនៅក្នុង MBR ។ វាគ្មានចំណុចអ្វីទេក្នុងការពង្រាយថាសទំហំ 50 MB ជាមួយនឹងភាគថាស FAT នៅពេលដែលអ្នកអាចរុញវាចូលទៅក្នុងផ្ទៃតារាងភាគថាស 1 MB និងបែងចែកកន្លែងទាំងអស់សម្រាប់ប្រព័ន្ធ។ យក 700 MB នៅលើថាស។ ខ្ញុំមិនចាំថាតើការដំឡើង SUSE មូលដ្ឋានមានប៉ុន្មានទេ ខ្ញុំគិតថាវាប្រហែល 1.1 ឬ 1.4 GB។

ដំឡើង CEPH ។ យើងមិនអើពើកំណែ 12 នៅក្នុងឃ្លាំង debian ហើយភ្ជាប់ដោយផ្ទាល់ពីគេហទំព័រ 15.2.3។ យើងធ្វើតាមការណែនាំពីផ្នែក "ដំឡើង CEPH ដោយដៃ" ដោយមានការព្រមានដូចខាងក្រោមៈ

  • មុនពេលភ្ជាប់ឃ្លាំង អ្នកត្រូវតែដំឡើង gnupg wget ca-certificates
  • បន្ទាប់ពីភ្ជាប់ឃ្លាំង ប៉ុន្តែមុនពេលដំឡើងចង្កោម ការដំឡើងកញ្ចប់ត្រូវបានលុបចោល៖ apt -y --no-install-recommends install ceph-common ceph-mon ceph-osd ceph-mds ceph-mgr
  • នៅពេលដំឡើង CEPH ដោយមិនដឹងមូលហេតុ វានឹងព្យាយាមដំឡើង lvm2។ ជាគោលការណ៍ វាមិនមែនជាការអាណិតទេ ប៉ុន្តែការដំឡើងបរាជ័យ ដូច្នេះ CEPH ក៏នឹងមិនដំឡើងដែរ។

    បំណះនេះបានជួយ៖

    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
    

ទិដ្ឋភាពទូទៅនៃក្រុម

ceph-osd - ទទួលខុសត្រូវក្នុងការរក្សាទុកទិន្នន័យនៅលើថាស។ សម្រាប់ថាសនីមួយៗ សេវាបណ្តាញមួយត្រូវបានបើកដំណើរការដែលទទួលយក និងប្រតិបត្តិសំណើដើម្បីអាន ឬសរសេរទៅកាន់វត្ថុ។ ភាគថាសពីរត្រូវបានបង្កើតនៅលើឌីស។ មួយក្នុងចំណោមពួកវាមានព័ត៌មានអំពីចង្កោម លេខឌីស និងសោទៅកាន់ចង្កោម។ ព័ត៌មាន 1KB នេះ​ត្រូវ​បាន​បង្កើត​ម្តង​នៅ​ពេល​បន្ថែម​ថាស ហើយ​មិន​ដែល​ត្រូវ​បាន​គេ​កត់​សម្គាល់​ថា​នឹង​ផ្លាស់​ប្តូរ​ឡើយ។ ភាគថាសទីពីរមិនមានប្រព័ន្ធឯកសារ និងរក្សាទុកទិន្នន័យគោលពីរ CEPH ។ ការដំឡើងដោយស្វ័យប្រវត្តិនៅក្នុងកំណែមុនបានបង្កើតភាគថាស 100MB xfs សម្រាប់ព័ត៌មានសេវាកម្ម។ ខ្ញុំបានបំប្លែងថាសទៅជា MBR ហើយបែងចែកត្រឹមតែ 16MB - សេវាកម្មមិនត្អូញត្អែរទេ។ ខ្ញុំគិតថា xfs អាចត្រូវបានជំនួសដោយ ext ដោយគ្មានបញ្ហា។ ភាគថាសនេះត្រូវបានម៉ោននៅក្នុង /var/lib/… ដែលសេវាកម្មអានព័ត៌មានអំពី OSD និងស្វែងរកឯកសារយោងទៅកាន់ឧបករណ៍ប្លុកដែលទិន្នន័យគោលពីរត្រូវបានរក្សាទុក។ តាមទ្រឹស្តី អ្នកអាចដាក់ឯកសារជំនួយភ្លាមៗនៅក្នុង /var/lib/… ហើយបែងចែកថាសទាំងមូលសម្រាប់ទិន្នន័យ។ នៅពេលបង្កើត OSD តាមរយៈ ceph-deploy ច្បាប់មួយត្រូវបានបង្កើតដោយស្វ័យប្រវត្តិដើម្បីម៉ោនភាគថាសនៅក្នុង /var/lib/… ហើយអ្នកប្រើប្រាស់ ceph ក៏ត្រូវបានផ្តល់សិទ្ធិក្នុងការអានឧបករណ៍ប្លុកដែលចង់បានផងដែរ។ ប្រសិនបើអ្នកដំឡើងដោយដៃ អ្នកត្រូវតែធ្វើវាដោយខ្លួនឯង ឯកសារមិននិយាយនេះទេ។ វាត្រូវបានណែនាំឱ្យបញ្ជាក់ប៉ារ៉ាម៉ែត្រគោលដៅអង្គចងចាំ osd ផងដែរដើម្បីឱ្យមានអង្គចងចាំរាងកាយគ្រប់គ្រាន់។

ceph-mds ។ នៅកម្រិតទាប CEPH គឺជាកន្លែងផ្ទុកវត្ថុ។ សមត្ថភាព​ទប់ស្កាត់​ការ​ផ្ទុក​ចុះ​មក​ក្នុង​ការ​រក្សាទុក​ប្លុក 4MB នីមួយៗ​ជា​វត្ថុ។ ការផ្ទុកឯកសារដំណើរការលើគោលការណ៍ដូចគ្នា។ អាងពីរត្រូវបានបង្កើតឡើង៖ មួយសម្រាប់ទិន្នន័យមេតា មួយទៀតសម្រាប់ទិន្នន័យ។ ពួកវាត្រូវបានបញ្ចូលគ្នាទៅក្នុងប្រព័ន្ធឯកសារ។ នៅពេលនេះ ប្រភេទនៃការកត់ត្រាមួយចំនួនត្រូវបានបង្កើត ដូច្នេះប្រសិនបើអ្នកលុបប្រព័ន្ធឯកសារ ប៉ុន្តែរក្សាទុកអាងទាំងពីរ អ្នកនឹងមិនអាចស្ដារវាឡើងវិញបានទេ។ មាន​នីតិវិធី​សម្រាប់​ស្រង់​ឯកសារ​ដោយ​ប្លុក ខ្ញុំ​មិន​បាន​សាកល្បង​វា​ទេ។ សេវា ceph-mds ទទួលខុសត្រូវចំពោះការចូលទៅកាន់ប្រព័ន្ធឯកសារ។ ប្រព័ន្ធឯកសារនីមួយៗត្រូវការឧទាហរណ៍ដាច់ដោយឡែកនៃសេវាកម្ម។ មានជម្រើស "លិបិក្រម" ដែលអនុញ្ញាតឱ្យអ្នកបង្កើតភាពស្រដៀងគ្នានៃប្រព័ន្ធឯកសារជាច្រើនក្នុងមួយ - ក៏មិនត្រូវបានសាកល្បងដែរ។

Ceph-mon - សេវាកម្មនេះរក្សាទុកផែនទីនៃចង្កោម។ វារួមបញ្ចូលព័ត៌មានអំពី OSDs ទាំងអស់ ក្បួនដោះស្រាយសម្រាប់ការចែកចាយ PGs នៅក្នុង OSDs និងសំខាន់បំផុតគឺព័ត៌មានអំពីវត្ថុទាំងអស់ (ព័ត៌មានលម្អិតនៃយន្តការនេះមិនច្បាស់សម្រាប់ខ្ញុំទេ៖ មានថត /var/lib/ceph/mon/…/ store.db វាមានឯកសារធំមួយគឺ 26MB ហើយនៅក្នុងចង្កោមនៃវត្ថុ 105K វាប្រែទៅជាលើសពី 256 បៃក្នុងមួយវត្ថុ - ខ្ញុំគិតថាម៉ូនីទ័រផ្ទុកបញ្ជីវត្ថុទាំងអស់ និង PGs ដែលក្នុងនោះ ពួកគេមានទីតាំងនៅ) ។ ការខូចខាតចំពោះថតនេះនាំឱ្យបាត់បង់ទិន្នន័យទាំងអស់នៅក្នុងចង្កោម។ ដូច្នេះការសន្និដ្ឋានត្រូវបានទាញថា CRUSH បង្ហាញពីរបៀបដែល PGs មានទីតាំងនៅលើ OSD និងរបៀបដែលវត្ថុមានទីតាំងនៅលើ PGs - ពួកវាត្រូវបានរក្សាទុកនៅកណ្តាលក្នុងមូលដ្ឋានទិន្នន័យ មិនថាអ្នកអភិវឌ្ឍន៍ជៀសវាងពាក្យនេះប៉ុន្មានទេ។ ជាលទ្ធផល ទីមួយ យើងមិនអាចដំឡើងប្រព័ន្ធនៅលើ flash drive ក្នុងរបៀប RO បានទេ ដោយសារមូលដ្ឋានទិន្នន័យកំពុងត្រូវបានកត់ត្រាជានិច្ច ត្រូវការឌីសបន្ថែមសម្រាប់ទាំងនេះ (ស្ទើរតែលើសពី 1 GB) ទីពីរ ចាំបាច់ត្រូវមាន ចម្លងតាមពេលវេលាជាក់ស្តែងមូលដ្ឋាននេះ។ ប្រសិនបើមានម៉ូនីទ័រជាច្រើន នោះការអត់ឱនកំហុសត្រូវបានធានាដោយស្វ័យប្រវត្តិ ប៉ុន្តែក្នុងករណីរបស់យើងមានម៉ូនីទ័រតែមួយ អតិបរមាពីរ។ មាននីតិវិធីទ្រឹស្តីសម្រាប់ការស្ដារម៉ូនីទ័រដោយផ្អែកលើទិន្នន័យ OSD ខ្ញុំបានប្រើវាបីដងដោយហេតុផលផ្សេងៗ ហើយបីដងមិនមានសារកំហុស ក៏ដូចជាគ្មានទិន្នន័យ។ ជាអកុសលយន្តការនេះមិនដំណើរការទេ។ ទាំងយើងដំណើរការភាគថាសខ្នាតតូចនៅលើ OSD និងប្រមូលផ្តុំ RAID ដើម្បីរក្សាទុកមូលដ្ឋានទិន្នន័យ ដែលពិតជានឹងមានផលប៉ះពាល់យ៉ាងខ្លាំងដល់ដំណើរការ ឬយើងបែងចែកយ៉ាងហោចណាស់មេឌៀដែលអាចទុកចិត្តបានពីរ និយម USB ដើម្បីកុំឱ្យកាន់កាប់ច្រក។

rados-gw - នាំចេញការផ្ទុកវត្ថុតាមរយៈពិធីការ S3 និងស្រដៀងគ្នា។ បង្កើត​អាង​ទឹក​ជា​ច្រើន វា​មិន​ច្បាស់​ពី​មូលហេតុ​ទេ។ ខ្ញុំមិនបានពិសោធន៍ច្រើនទេ។

ceph-mgr - នៅពេលដំឡើងសេវាកម្មនេះ ម៉ូឌុលជាច្រើនត្រូវបានបើកដំណើរការ។ មួយក្នុងចំណោមពួកគេគឺ autoscale ដែលមិនអាចត្រូវបានបិទ។ វាព្យាយាមរក្សាបរិមាណត្រឹមត្រូវនៃ PG/OSD ។ ប្រសិនបើអ្នកចង់គ្រប់គ្រងសមាមាត្រដោយដៃ អ្នកអាចបិទការធ្វើមាត្រដ្ឋានសម្រាប់ក្រុមនីមួយៗ ប៉ុន្តែក្នុងករណីនេះ ម៉ូឌុលគាំងជាមួយនឹងការបែងចែកដោយ 0 ហើយស្ថានភាពចង្កោមនឹងក្លាយទៅជាកំហុស។ ម៉ូឌុលនេះត្រូវបានសរសេរនៅក្នុង Python ហើយប្រសិនបើអ្នកបញ្ចេញមតិលើបន្ទាត់ចាំបាច់នៅក្នុងវា វានឹងនាំទៅដល់ការបិទរបស់វា។ ខ្ជិលក្នុងការចងចាំព័ត៌មានលម្អិត។

បញ្ជីប្រភពដែលបានប្រើ៖

ការដំឡើង CEPH
ការងើបឡើងវិញពីការបរាជ័យនៃម៉ូនីទ័រពេញលេញ

បញ្ជីស្គ្រីប៖

ការដំឡើងប្រព័ន្ធតាមរយៈ Debootstrap

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 - ក្បួនដោះស្រាយសម្រាប់គណនាទីតាំងទិន្នន័យ។ ម៉ូនីទ័រចែកចាយក្បួនដោះស្រាយនេះដល់អតិថិជន បន្ទាប់ពីនោះអតិថិជនស្នើសុំដោយផ្ទាល់នូវថ្នាំងដែលចង់បាន និង OSD ដែលចង់បាន។ CRUSH ធានា​ថា​គ្មាន​ការ​ធ្វើ​មជ្ឈការ។ វា​ជា​ឯកសារ​តូច​មួយ​ដែល​អ្នក​អាច​បោះពុម្ព​ចេញ​ហើយ​ព្យួរ​លើ​ជញ្ជាំង។ ការអនុវត្តបានបង្ហាញថា CRUSH មិនមែនជាផែនទីពេញលេញទេ។ ប្រសិនបើអ្នកបំផ្លាញ និងបង្កើតម៉ូនីទ័រឡើងវិញ ដោយរក្សា OSD និង CRUSH ទាំងអស់ នោះវាមិនគ្រប់គ្រាន់ដើម្បីស្ដារចង្កោមនោះទេ។ ពីនេះវាត្រូវបានសន្និដ្ឋានថាម៉ូនីទ័រនីមួយៗរក្សាទុកទិន្នន័យមេតាមួយចំនួនអំពីចង្កោមទាំងមូល។ ចំនួនតូចមួយនៃទិន្នន័យមេតានេះមិនដាក់កម្រិតលើទំហំនៃចង្កោមនោះទេ ប៉ុន្តែទាមទារឱ្យមានការធានាសុវត្ថិភាពរបស់ពួកគេ ដែលលុបបំបាត់ការសន្សំថាសដោយការដំឡើងប្រព័ន្ធនៅលើ flash drive និងមិនរាប់បញ្ចូលចង្កោមដែលមានថ្នាំងតិចជាងបី។ គោលការណ៍ឈ្លានពានរបស់អ្នកអភិវឌ្ឍន៍ទាក់ទងនឹងលក្ខណៈពិសេសស្រេចចិត្ត។ ឆ្ងាយពីតិចតួចបំផុត។ ឯកសារគឺនៅកម្រិតនៃ "អរគុណចំពោះអ្វីដែលយើងមាន ប៉ុន្តែវាតូចណាស់" ។ សមត្ថភាពក្នុងការធ្វើអន្តរកម្មជាមួយសេវាកម្មក្នុងកម្រិតទាបត្រូវបានផ្តល់ជូន ប៉ុន្តែឯកសារប៉ះពាល់ដល់ប្រធានបទនេះហួសហេតុពេក ដូច្នេះវាទំនងជាមិនមានច្រើនជាងបាទ។ ជាក់ស្តែងគ្មានឱកាសក្នុងការសង្គ្រោះទិន្នន័យពីស្ថានភាពអាសន្នទេ។

ជម្រើសសម្រាប់សកម្មភាពបន្ថែម៖ បោះបង់ CEPH ហើយប្រើ banal multi-disk btrfs (ឬ xfs, zfs) ស្វែងរកព័ត៌មានថ្មីអំពី CEPH ដែលនឹងអនុញ្ញាតឱ្យអ្នកដំណើរការវាក្រោមលក្ខខណ្ឌដែលបានបញ្ជាក់ ព្យាយាមសរសេរការផ្ទុកផ្ទាល់ខ្លួនរបស់អ្នកជាកម្រិតខ្ពស់។ ការបណ្តុះបណ្តាល។

ប្រភព: www.habr.com

បន្ថែមមតិយោបល់