ประสบการณ์กับ 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 มีอะนาล็อก - Erasure_code ซึ่งขัดแย้งกับแนวคิดแรกเริ่มของนักพัฒนาดังนั้นจึงไม่ได้รับการพิจารณา RAID 5 ถือว่ามีไดรฟ์จำนวนน้อย ซึ่งทั้งหมดอยู่ในสภาพดี หากอันหนึ่งล้มเหลว ที่เหลือจะต้องรอจนกว่าดิสก์จะถูกเปลี่ยนและข้อมูลจะถูกกู้คืน CEPH ที่มี N>=3 สนับสนุนการใช้ดิสก์เก่า โดยเฉพาะอย่างยิ่ง หากคุณเก็บดิสก์ที่ดีไว้หลายแผ่นเพื่อจัดเก็บข้อมูลหนึ่งสำเนา และเก็บสำเนาสองหรือสามสำเนาที่เหลือไว้ในดิสก์เก่าจำนวนมาก จากนั้นข้อมูล จะปลอดภัยเนื่องจากตอนนี้ดิสก์ใหม่ยังมีชีวิตอยู่ - ไม่มีปัญหาและหากหนึ่งในนั้นพังความล้มเหลวพร้อมกันของดิสก์สามตัวที่มีอายุการใช้งานมากกว่าห้าปีโดยเฉพาะอย่างยิ่งจากเซิร์ฟเวอร์ที่แตกต่างกันนั้นไม่น่าเป็นไปได้อย่างยิ่ง เหตุการณ์.

มีความละเอียดอ่อนในการแจกจ่ายสำเนา ตามค่าเริ่มต้น จะถือว่าข้อมูลถูกแบ่งออกเป็นกลุ่มการแจกจ่าย PG มากกว่า (~100 ต่อดิสก์) ซึ่งแต่ละกลุ่มจะถูกทำซ้ำบนดิสก์บางแผ่น สมมติว่า K=6, N=2 ถ้าดิสก์สองตัวใดตัวหนึ่งล้มเหลว ข้อมูลจะรับประกันว่าจะสูญหาย เนื่องจากตามทฤษฎีความน่าจะเป็น จะมี PG อย่างน้อยหนึ่งตัวที่จะอยู่บนดิสก์ทั้งสองนี้ และการสูญเสียกลุ่มหนึ่งทำให้ข้อมูลทั้งหมดในพูลไม่พร้อมใช้งาน หากดิสก์ถูกแบ่งออกเป็นสามคู่และอนุญาตให้จัดเก็บข้อมูลบนดิสก์ภายในหนึ่งคู่เท่านั้น การแจกจ่ายดังกล่าวยังทนต่อความล้มเหลวของดิสก์ใดดิสก์หนึ่งก็ได้ แต่ถ้าดิสก์สองดิสก์ล้มเหลว ความน่าจะเป็นที่ข้อมูลจะสูญหายจะไม่เกิดขึ้น 100% แต่เพียง 3/15 และแม้ในกรณีที่ดิสก์สามแผ่นล้มเหลว - เพียง 12/20 ดังนั้นเอนโทรปีในการกระจายข้อมูลจึงไม่มีส่วนช่วยในการยอมรับข้อผิดพลาด โปรดทราบว่าสำหรับไฟล์เซิร์ฟเวอร์ RAM ที่ว่างจะเพิ่มความเร็วในการตอบสนองอย่างมาก ยิ่งมีหน่วยความจำในแต่ละโหนดมากขึ้น และยิ่งมีหน่วยความจำมากขึ้นในทุกโหนด ก็จะยิ่งเร็วขึ้นเท่านั้น นี่เป็นข้อได้เปรียบอย่างไม่ต้องสงสัยของคลัสเตอร์บนเซิร์ฟเวอร์เดียว และยิ่งกว่านั้นคือฮาร์ดแวร์ NAS ซึ่งมีหน่วยความจำในตัวจำนวนน้อยมาก

เป็นไปตามที่ CEPH เป็นวิธีที่ดีในการสร้างระบบจัดเก็บข้อมูลที่เชื่อถือได้สำหรับหลายสิบ TB พร้อมความสามารถในการปรับขนาดด้วยการลงทุนเพียงเล็กน้อยจากอุปกรณ์ที่ล้าสมัย (แน่นอนว่าในที่นี้จะต้องมีค่าใช้จ่าย แต่มีขนาดเล็กเมื่อเทียบกับระบบจัดเก็บข้อมูลเชิงพาณิชย์)

การใช้งานคลัสเตอร์

สำหรับการทดลอง ลองใช้คอมพิวเตอร์ที่เลิกใช้งานแล้ว Intel DQ57TM + Intel core i3 540 + RAM 16 GB เราจะจัดระเบียบดิสก์ขนาด 2 TB สี่ดิสก์ให้เป็น RAID10 หลังจากการทดสอบสำเร็จ เราจะเพิ่มโหนดที่สองและดิสก์จำนวนเท่ากัน

การติดตั้งลินุกซ์ การกระจายต้องอาศัยความสามารถในการปรับแต่งและมีเสถียรภาพ Debian และ Suse ตรงตามข้อกำหนด Suse มีตัวติดตั้งที่ยืดหยุ่นกว่าซึ่งช่วยให้คุณสามารถปิดการใช้งานแพ็คเกจใดก็ได้ น่าเสียดายที่ฉันไม่สามารถคิดได้ว่าอันไหนที่จะถูกโยนทิ้งไปโดยไม่ทำให้ระบบเสียหาย ติดตั้ง Debian โดยใช้ debootstrap buster ตัวเลือก min-base จะติดตั้งระบบที่เสียหายซึ่งไม่มีไดรเวอร์ ความแตกต่างด้านขนาดเมื่อเทียบกับเวอร์ชันเต็มไม่ได้ใหญ่จนน่ากังวล เนื่องจากงานนี้ดำเนินการบนเครื่องจริง ฉันจึงต้องการถ่ายภาพสแนปช็อต เช่นเดียวกับบนเครื่องเสมือน ตัวเลือกนี้มีให้โดย LVM หรือ btrfs (หรือ xfs หรือ zfs - ความแตกต่างไม่มาก) สแน็ปช็อต LVM ไม่ใช่จุดแข็ง ติดตั้ง btrfs. และ bootloader อยู่ใน MBR ไม่มีประโยชน์ที่จะทำให้ดิสก์ขนาด 50 MB ยุ่งเหยิงด้วยพาร์ติชัน FAT เมื่อคุณสามารถดันพาร์ติชันดังกล่าวลงในพื้นที่ตารางพาร์ติชันขนาด 1 MB และจัดสรรพื้นที่ทั้งหมดสำหรับระบบได้ ใช้พื้นที่บนดิสก์ถึง 700 MB ฉันจำไม่ได้ว่าการติดตั้ง SUSE พื้นฐานมีจำนวนเท่าใด ฉันคิดว่าประมาณ 1.1 หรือ 1.4 GB

ติดตั้ง CEPH เราเพิกเฉยต่อเวอร์ชัน 12 ในพื้นที่เก็บข้อมูลเดเบียนและเชื่อมต่อโดยตรงจากไซต์ 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 การติดตั้งอัตโนมัติในเวอร์ชันก่อนหน้าสร้างพาร์ติชัน xfs ขนาด 100MB สำหรับข้อมูลบริการ ฉันแปลงดิสก์เป็น MBR และจัดสรรเพียง 16MB - บริการไม่บ่น ฉันคิดว่า xfs สามารถแทนที่ด้วย ext ได้โดยไม่มีปัญหาใดๆ พาร์ติชันนี้ติดตั้งอยู่ใน /var/lib/… โดยที่บริการอ่านข้อมูลเกี่ยวกับ OSD และยังค้นหาการอ้างอิงไปยังอุปกรณ์บล็อกที่เก็บข้อมูลไบนารีไว้ ตามทฤษฎี คุณสามารถวางไฟล์เสริมใน /var/lib/… ได้ทันที และจัดสรรดิสก์ทั้งหมดสำหรับข้อมูล เมื่อสร้าง OSD ผ่าน ceph-deploy กฎจะถูกสร้างขึ้นโดยอัตโนมัติเพื่อติดตั้งพาร์ติชันใน /var/lib/… และผู้ใช้ ceph จะได้รับสิทธิ์ในการอ่านอุปกรณ์บล็อกที่ต้องการด้วย หากคุณติดตั้งด้วยตนเอง คุณต้องดำเนินการด้วยตนเอง เอกสารไม่ได้ระบุสิ่งนี้ ขอแนะนำให้ระบุพารามิเตอร์เป้าหมายหน่วยความจำ osd เพื่อให้มีหน่วยความจำกายภาพเพียงพอ

ceph-mds ในระดับต่ำ CEPH คือที่เก็บข้อมูลอ็อบเจ็กต์ ความสามารถในการบล็อกพื้นที่เก็บข้อมูลจะลดลงเหลือเพียงการจัดเก็บแต่ละบล็อกขนาด 4MB เป็นออบเจ็กต์ การจัดเก็บไฟล์ทำงานบนหลักการเดียวกัน มีการสร้างพูลสองแห่ง: อันหนึ่งสำหรับข้อมูลเมตา และอีกอันสำหรับข้อมูล พวกมันถูกรวมเข้าเป็นระบบไฟล์ ในขณะนี้ มีการสร้างบันทึกบางประเภท ดังนั้นหากคุณลบระบบไฟล์ แต่เก็บทั้งสองพูลไว้ คุณจะไม่สามารถกู้คืนได้ มีขั้นตอนการแยกไฟล์เป็นบล็อก ฉันยังไม่ได้ทดสอบ บริการ ceph-mds มีหน้าที่รับผิดชอบในการเข้าถึงระบบไฟล์ แต่ละระบบไฟล์ต้องมีอินสแตนซ์ของบริการแยกต่างหาก มีตัวเลือก "ดัชนี" ซึ่งช่วยให้คุณสร้างรูปร่างของระบบไฟล์หลาย ๆ ระบบได้ในที่เดียว - และยังไม่ได้ทดสอบด้วย

Ceph-mon - บริการนี้จัดเก็บแผนที่ของคลัสเตอร์ ประกอบด้วยข้อมูลเกี่ยวกับ OSD ทั้งหมด อัลกอริทึมสำหรับการกระจาย PG ใน OSD และที่สำคัญที่สุดคือข้อมูลเกี่ยวกับออบเจ็กต์ทั้งหมด (รายละเอียดของกลไกนี้ไม่ชัดเจนสำหรับฉัน: มีไดเร็กทอรี /var/lib/ceph/mon/…/ store.db มันมีไฟล์ขนาดใหญ่ 26MB และในกลุ่มของวัตถุ 105K ปรากฎว่ามีขนาดมากกว่า 256 ไบต์ต่อวัตถุเล็กน้อย - ฉันคิดว่าจอภาพจะเก็บรายการของวัตถุทั้งหมดและ PG ที่ พวกเขาตั้งอยู่) ความเสียหายต่อไดเร็กทอรีนี้ส่งผลให้ข้อมูลทั้งหมดในคลัสเตอร์สูญหาย ดังนั้นจึงได้ข้อสรุปว่า CRUSH แสดงให้เห็นว่า PG อยู่ใน OSD อย่างไร และวัตถุต่างๆ อยู่บน PG อย่างไร โดยวัตถุเหล่านั้นจะถูกเก็บไว้จากส่วนกลางภายในฐานข้อมูล ไม่ว่านักพัฒนาจะหลีกเลี่ยงคำนี้มากแค่ไหนก็ตาม ประการแรกเราไม่สามารถติดตั้งระบบบนแฟลชไดรฟ์ในโหมด RO ได้เนื่องจากมีการบันทึกฐานข้อมูลอยู่ตลอดเวลาจึงจำเป็นต้องมีดิสก์เพิ่มเติมสำหรับสิ่งเหล่านี้ (แทบจะไม่เกิน 1 GB) ประการที่สองจำเป็นต้องมี คัดลอกตามเวลาจริงฐานนี้ หากมีจอภาพหลายจอ ระบบจะรับประกันความทนทานต่อข้อผิดพลาดโดยอัตโนมัติ แต่ในกรณีของเรามีเพียงจอภาพเดียว สูงสุดสองจอ มีขั้นตอนทางทฤษฎีในการกู้คืนจอภาพตามข้อมูล OSD ฉันใช้มันสามครั้งด้วยเหตุผลหลายประการและสามครั้งไม่มีข้อความแสดงข้อผิดพลาดรวมทั้งไม่มีข้อมูล น่าเสียดายที่กลไกนี้ใช้งานไม่ได้ ไม่ว่าเราจะใช้งานพาร์ติชันขนาดเล็กบน OSD และประกอบ RAID เพื่อจัดเก็บฐานข้อมูล ซึ่งจะส่งผลเสียต่อประสิทธิภาพอย่างมากอย่างแน่นอน หรือเราจะจัดสรรสื่อทางกายภาพที่เชื่อถือได้อย่างน้อยสองตัว โดยเฉพาะอย่างยิ่ง USB เพื่อไม่ให้ครอบครองพอร์ต

rados-gw - ส่งออกที่เก็บข้อมูลออบเจ็กต์ผ่านโปรโตคอล S3 และที่คล้ายกัน สร้างพูลจำนวนมาก ไม่ทราบสาเหตุ ฉันไม่ได้ทดลองอะไรมาก

ceph-mgr - เมื่อติดตั้งบริการนี้ จะมีการเปิดใช้งานหลายโมดูล หนึ่งในนั้นคือการปรับขนาดอัตโนมัติที่ไม่สามารถปิดใช้งานได้ พยายามรักษาปริมาณ 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 ทั้งหมด การกู้คืนคลัสเตอร์ยังไม่เพียงพอ จากนี้สรุปได้ว่าแต่ละมอนิเตอร์จะจัดเก็บข้อมูลเมตาบางส่วนเกี่ยวกับคลัสเตอร์ทั้งหมด ข้อมูลเมตาจำนวนเล็กน้อยนี้ไม่ได้กำหนดข้อจำกัดเกี่ยวกับขนาดของคลัสเตอร์ แต่ต้องมั่นใจในความปลอดภัย ซึ่งช่วยลดการประหยัดดิสก์โดยการติดตั้งระบบบนแฟลชไดรฟ์ และไม่รวมคลัสเตอร์ที่มีโหนดน้อยกว่าสามโหนด นโยบายเชิงรุกของผู้พัฒนาเกี่ยวกับคุณสมบัติเสริม ห่างไกลจากความเรียบง่าย เอกสารอยู่ในระดับ "ขอบคุณสำหรับสิ่งที่เรามี แต่มันน้อยมาก" มีความสามารถในการโต้ตอบกับบริการในระดับต่ำ แต่เอกสารประกอบกล่าวถึงหัวข้อนี้อย่างผิวเผินเกินไป ดังนั้นจึงมีแนวโน้มว่าจะไม่มากกว่าใช่ แทบไม่มีโอกาสกู้คืนข้อมูลจากสถานการณ์ฉุกเฉินเลย

ตัวเลือกสำหรับการดำเนินการเพิ่มเติม: ละทิ้ง CEPH และใช้ btrfs หลายดิสก์ซ้ำ ๆ (หรือ xfs, zfs) ค้นหาข้อมูลใหม่เกี่ยวกับ CEPH ซึ่งจะช่วยให้คุณดำเนินการภายใต้เงื่อนไขที่ระบุลองเขียนที่เก็บข้อมูลของคุณเองเป็นขั้นสูง การฝึกอบรม.

ที่มา: will.com

เพิ่มความคิดเห็น