bcache บน md หรือ md บน bcache


11

bcache ช่วยให้หนึ่งหรือดิสก์ไดรฟ์ได้อย่างรวดเร็วมากขึ้นเช่นแฟลชไดรฟ์ตามสถานะของแข็ง (SSDs) เพื่อทำหน้าที่เป็นแคชสำหรับหนึ่งหรือดิสก์ไดรฟ์มากขึ้นช้าลงอย่างหนัก

ถ้าฉันเข้าใจถูกต้อง

  • SSD *อาจจะกำหนดให้แคช HDDs สนับสนุนหลายแล้วอุปกรณ์ที่เก็บไว้ชั่วคราวที่เกิดขึ้นอาจจะมีการบุกเข้าไปในกับ mdadm
    หรือ
  • HDD หลายตัวอาจถูกโจมตีเข้าไปในอุปกรณ์สำรอง md เดียวและ SSD ที่กำหนดให้กับแคชนั้น

ฉันสงสัยว่าวิธีการของ saner คืออะไร มันเกิดขึ้นกับฉันว่าการเพิ่ม RAID5 / 6 นั้นอาจจะง่ายกว่าด้วยเทคนิคอย่างใดอย่างหนึ่ง แต่ฉันไม่แน่ใจว่าอันไหน!

มีเหตุผลที่ดี (เช่นการเพิ่มที่เก็บข้อมูลสำรองหรือสิ่งอื่นใด) เพื่อเลือกวิธีหนึ่งเหนืออีกระบบหนึ่ง (สำหรับระบบไฟล์ที่ไม่ใช่รูทขนาดใหญ่ที่มีไฟล์สำรอง VM)


* โดย "an SSD" ฉันหมายถึงอุปกรณ์ SSD ที่ซ้ำซ้อนบางชนิดเช่น RAID1 ของฟิสิคัล SSD สองตัว


ไม่ว่าในกรณีใด ๆ ดิสก์ทั้งหมดที่อยู่bcacheด้านหลังจะต้องฟอร์แมตด้วยbcacheดังนั้นคุณจะต้องสร้างmdอาร์เรย์จัดรูปแบบดิสก์ผลลัพธ์เดียวเป็นbcacheพาร์ติชั่นที่ได้รับการสนับสนุนเชื่อมโยงไปยังแคชไดรฟ์แล้วไปจากที่นั่นหรือฟอร์แมตมากมายbcacheเชื่อมโยงดิสก์กับไดรฟ์แคชแล้วจัดรูปแบบดิสก์จำนวนมากเป็นหนึ่งอาร์เรย์ ไม่ว่าในกรณีใดมีหลายจุดของความล้มเหลวที่เป็นไปได้ทั้งหมดขึ้นอยู่กับความสามารถในการทำงานร่วมกันระหว่างระบบไฟล์ทั้งสอง - ไม่ต้องพูดถึง fs สุดท้าย ดูที่นี่ : เลื่อนลง
mikeserv

ขอบคุณgithub.com/g2p/blocksคุณสามารถแปลงเป็นแบบเดิมแม้ว่าจะมีข้อ จำกัด บางประการ
Adam Ryczkowski

@mikeserv ฉันเข้าใจทุกอย่างว่านี่เป็นจุดประสงค์ในการสร้างเซิร์ฟเวอร์เพื่อให้ดี คุณหมายถึงอะไร "ระบบแฟ้มสองระบบ" bcache ไม่ใช่ระบบไฟล์ - ระบบไฟล์เดียวที่ฉันจะมีคือ XFS บนอุปกรณ์ bcache หรือ mdadm สุดท้าย (ขึ้นอยู่กับตัวเลือกที่ฉันเลือก)

ขอบคุณ @Adam การแปลงแบบแทนที่ไม่มีปัญหาสำหรับฉัน

@mikeserv ไม่มันไม่ใช่ ระบบไฟล์ (เช่น btrfs, xfs, extN และอื่น ๆ ) จะอยู่ด้านบนของอุปกรณ์บล็อก mdadm และ bcache ทำงานที่ระดับอุปกรณ์บล็อกไม่ได้อยู่ในระดับระบบไฟล์ (btrfs สร้างความสับสนให้กับปัญหาเรื่องการละเมิดเลเยอร์ แต่เป็นบทสนทนาที่แยกจากกันอย่างสมบูรณ์)

คำตอบ:


4

ฉันคิดว่าการแคชอุปกรณ์ md ทั้งหมดเหมาะสมที่สุด

การใส่ bcache เพื่อแคชอุปกรณ์ md ทั้งหมดจะเสียสละความคิดทั้งหมดของการจู่โจมเพราะจะแนะนำจุดล้มเหลวอีกจุดเดียว

  • ความล้มเหลวของ OTH ของดิสก์ SSD ค่อนข้างหายากและสามารถใส่ bcache ในโหมดwritethrough/ writearound(ตรงกันข้ามกับwritebackโหมด) ซึ่งไม่มีข้อมูลที่เก็บไว้ในอุปกรณ์แคชเท่านั้นและความล้มเหลวของแคชไม่ได้ฆ่าข้อมูลใน การโจมตีทำให้มันเป็นตัวเลือกที่ค่อนข้างปลอดภัย

  • ข้อเท็จจริงอื่น ๆ คือมีค่าใช้จ่ายในการคำนวณที่สำคัญของ soft RAID-5; เมื่อแคชสมาชิกการจู่โจมแต่ละอันแยกกันคอมพิวเตอร์ยังคงต้องคำนวณความเท่าเทียมกันทั้งหมดอีกครั้งแม้จะเป็นแคชฮิต

  • เห็นได้ชัดว่าคุณจะต้องเสียสละพื้นที่ SSD ราคาแพงถ้าคุณแคชไดรฟ์หมุนแต่ละตัวแยกกัน - ยกเว้นว่าคุณวางแผนที่จะใช้แคช ssd ที่ถูกบุกรุก

  • ตัวเลือกทั้งสองค่อนข้างจะไม่ส่งผลกระทบต่อเวลาของกระบวนการที่เพิ่มขึ้น - แม้ว่าตัวเลือกที่มีไดรฟ์แบบหมุนได้จะถูกแคชแยกต่างหากมีแนวโน้มที่จะช้าลงเนื่องจากปริมาณการใช้งานบัสมากขึ้น

เป็นกระบวนการที่รวดเร็วและค่อนข้างง่ายในการกำหนดค่า bcache เพื่อลบไดรฟ์ ssd เมื่อคุณต้องการแทนที่ ต้องขอบคุณบล็อกที่สามารถโยกย้ายการตั้งค่าการโจมตีได้ทั้งสองทาง

นอกจากนี้คุณควรจำไว้ว่าในขณะนี้มากที่สุด (ทั้งหมดหรือไม่) การกระจายสด-CD ไม่สนับสนุนbcacheเพื่อให้คุณไม่สามารถเพียงแค่การเข้าถึงข้อมูลของคุณด้วยเครื่องมือดังกล่าวโดยไม่คำนึงถึงbcache- mdraidเลือกรูปแบบที่คุณเลือก


1
ฉันได้อัปเดตคำถามเพื่อให้ชัดเจนฉันไม่ได้วางแผนที่จะมีแคช SSD ที่ไม่ซ้ำซ้อน สัญลักษณ์แสดงหัวข้อย่อยที่สองของคุณเป็นจุดที่ยอดเยี่ยมขอบคุณสำหรับสิ่งนั้น สัญลักษณ์แสดงหัวข้อย่อยที่สามของคุณเกี่ยวกับพื้นที่: คุณหมายถึงเพราะคุณกำลังจัดเก็บพาริตีบน SSD หรือไม่ เป็นพาราล่าสุดของคุณฉันใช้ F20 แต่ในที่สุดจะใช้ RHEL / CentOS7 หรือ Debian Jessie (หาก bcache-tools ทำการตัด)

@JackDouglas Ad bullet ที่ 3: ใช่แล้ว แต่เนื่องจากคุณวางแผนที่จะใช้ไดรฟ์ ssd ที่ตรวจค้นแล้วซึ่งไม่ได้มีผลกับคุณ
Adam Ryczkowski

1
มันยังคงเป็นเช่นนั้นเพราะมันจะไม่ถูกทำมิเรอร์เท่านั้น แต่จะต้องเก็บ RAID parity สำหรับไดรฟ์สำรอง นี่ไม่ใช่กรณีที่ RAID ทำใต้ bcache ซึ่งฉันคิดว่าเป็นประเด็นของคุณ

ฉันเชื่อว่าคุณหมายถึงสิ่งที่ตรงกันข้าม: เมทริกซ์ ssd ไม่จำเป็นต้องเก็บพาริตี้ดิสก์หมุนถ้ามันถูกเลี้ยงทั้งไดรฟ์ mdraid
Adam Ryczkowski

1
ใช่นั่นคือสิ่งที่ฉันหมายถึง!

1

ฉันคิดว่าวิธีที่มีสติคือการแคชอุปกรณ์ MD ที่ได้มา

bcache ถูกออกแบบมาเพื่ออ่านและเขียนตามลำดับผ่านราง

หากคุณ bcache แต่ละอุปกรณ์แยกกันตามหลักเหตุผลอุปกรณ์จำนวนมากที่ตัดเข้าไปใน MD ที่ถูกบุกรุกหรือถูกปล้นจะต้องเขียนบล็อกสุ่มตลอดเวลา

ในขณะที่ปริมาณ bcached MD จะมีลักษณะเป็นปกติเขียนไฟล์ไปยังไดรฟ์ข้อมูลแล้วบล็อกแบบสุ่มไปยังอุปกรณ์หลาย ๆ

จุดทั้งหมดของการจู่โจมและฮาร์ดไดรฟ์คือการทำแถบข้อมูลในแบ็กเอนด์เพื่อให้ระบบไฟล์ที่ได้ดูเหมือนเป็นโวลุ่มปกติ

สิ่งนี้อาจไม่ถูกต้อง (เนื่องจาก bcache devs อาจเป็นคนฉลาดและรับผิดชอบสถานการณ์ประเภทนั้น) แต่สิ่งที่เหมาะสมที่สุดที่ต้องทำในเชิงตรรกะคือการแคชปริมาณแทนที่จะปิดกั้นอุปกรณ์


ยังเป็นจุดที่ดีมาก

การเขียนตามลำดับขนาดใหญ่ไปยัง RAID5 / 6 จะสร้างการเขียนตามลำดับไปยังอุปกรณ์ส่วนประกอบทั้งหมด อุปกรณ์แต่ละชิ้นจะได้รับบล็อคข้อมูล N-1 ทุกอัน (หรือพาริตี้) แต่ข้อมูลที่ได้รับจะเรียงตามลำดับ แต่คุณพูดถูกที่จะบิดเบือนสิ่งต่าง ๆ หากมีชิ้นส่วนบางส่วนที่เห็นการเขียนแถบบางส่วนบ่อยครั้งทำให้เกิดการอ่าน - แก้ไข - เขียนของ (ส่วนหนึ่งของ) แถบความเท่าเทียมกันซึ่งอาจถูกแคชโดย bcache การแคชมันสูงขึ้นก่อนที่การเขียนแบบแถบบางส่วนที่เคยกระทบกับอุปกรณ์ MD จะดียิ่งขึ้นกว่าเดิม
Peter Cordes
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.