dm-แคช
เป็นแคช "เคลื่อนที่ช้า": ต้องมีการอ่าน/เขียนพลาดหลายครั้งเพื่อเลื่อนระดับบล็อก โดยเฉพาะอย่างยิ่งเมื่อเลื่อนระดับบล็อกใหม่ ลดระดับ อันที่แคชไว้แล้ว
ลักษณะการบล็อกคงที่ของ dm-แคช
ประกอบกับไม่มีพื้นที่เขียนอย่างเดียวที่สงวนไว้ หมายความว่าจำเป็นต้องมีการเขียนจำนวนมากไปยังบล็อกที่ไม่ได้แคชเดียวกันเพื่อทริกเกอร์การเลื่อนระดับ/การแทนที่บล็อกอย่างไรก็ตาม นี่ยังบอกเป็นนัยว่าเคอร์เนลเพจแคชไม่ได้ "ดูดซับ" การเขียนที่ขาดหายไปหลายรายการเหล่านี้ โดยรวมไว้ในการเขียนครั้งเดียวไปยังอุปกรณ์บล็อกพื้นฐาน
กล่าวอีกนัยหนึ่ง คุณอาจเห็นผลรวมของเคอร์เนลเพจแคช (ซึ่งดูดซับและรวมการเขียน) และ ความไม่เต็มใจของ dm-แคช
เพื่อส่งเสริมบล็อกที่พลาดก่อน
หากคุณต้องการจองอุปกรณ์/พื้นที่บางส่วนเพื่อเขียนแคชเท่านั้น คุณสามารถแตะเข้าไปได้ dm-writecache
(และตามปกติ lvmcache
)
ข้อมูลเพิ่มเติม:
dm-แคช
บล็อกการเข้าถึงการติดตามการเลื่อนระดับ/ลดระดับการเข้าถึง/การพลาด ในตอนแรก คุณมีแคชว่างที่มี I/O ทั้งหมดส่งตรงไปยังอุปกรณ์ต้นทาง (ช้า) ดังนั้นเมื่อคุณออก a เช่น 4K read มันจะเข้าถึงอุปกรณ์พื้นฐานที่ช้าด้วย dm-แคช
ติดตามการพลาด หลังจากที่พลาดท่าไปบ้าง บล็อกแคชเดียวกัน (ค่าเริ่มต้น 32K) จากนั้น ทั้งหมด บล็อกแคชถูกคัดลอกไปยังอุปกรณ์ที่รวดเร็ว หากคุณเขียนไปยังบล็อกที่แคชไว้ การเขียนของคุณจะถูกแคช อย่างไรก็ตาม หากการเขียนของคุณมีไว้สำหรับ บล็อกที่ไม่ได้แคชมันตรงไปยังอุปกรณ์ต้นทาง (ช้า) หลังจากการเขียนที่ไม่ได้แคชอื่นๆ dm-แคช
ในที่สุดก็จะจัดสรรบล็อกแคชทั้งหมด (จำไว้ว่า 32K โดยค่าเริ่มต้น) คัดลอกข้อมูลต้นฉบับไปยังอุปกรณ์แคช ณ จุดนี้ การอ่าน/เขียนใหม่สามารถให้บริการได้จากแคช การลดระดับทำได้ง่าย: เมื่อต้องมีการเลื่อนระดับบล็อกใหม่ บล็อกที่เก่าที่สุดจะถูกทิ้ง/ล้าง
กล่าวอีกนัยหนึ่ง สำหรับการเขียนที่จะแคช จะต้องจัดสรรส่วนแคชที่สอดคล้องกันและต้องคัดลอกข้อมูลสำรองบนอุปกรณ์แคช (จัดสรรเมื่อเขียน) เพื่อจำกัดการใช้แบนด์วิธระหว่างต้นทางและอุปกรณ์แคช การคัดลอกนี้จะทำหลังจากพลาดหลายครั้งเท่านั้น (กล่าวคือ: พลาดเพียงครั้งเดียว ไม่ โปรโมตบล็อก) โปรดทราบว่าการอ่านบล็อกที่ไม่ได้แคชเดียวกันหลายครั้งจะ ไม่ ทำงานเนื่องจากเคอร์เนลเพจแคชจะให้บล็อกแคชด้วยตัวมันเอง
dm-writecache
ทำงานแตกต่างออกไป คล้ายกับแคชเขียนกลับของคอนโทรลเลอร์ RAID แบบดั้งเดิมมากกว่า มันแคช ทั้งหมด เขียนละเว้นการอ่าน แทบจะเรียกได้ว่าเป็น "แคชเพจ L2 แบบเขียนอย่างเดียว" ซึ่งเพจสกปรกจะถูก "สลับ" รอให้อุปกรณ์ที่ทำงานช้าตามทัน หากต้องการใช้งาน คุณต้องแบ่งพาร์ติชันอุปกรณ์ที่รวดเร็วของคุณระหว่าง dm-แคช
(ซึ่ง ณ จุดนี้จะต้องเรียกใช้เป็น เขียนผ่าน
แคช) และ dm-writecache
หรือเพื่ออุทิศอุปกรณ์ต่าง ๆ ให้กับพวกเขา ฉัน ไม่เคย พยายามทำเช่นนั้นผ่าน LVM และฉันสงสัยว่าเครื่องมือจะป้องกันไม่ให้คุณซ้อน/ซ้อนโมดูลแคชที่แตกต่างกันสองโมดูล อย่างไรก็ตาม คุณสามารถลองได้โดยตรง dmตั้งค่า
คำสั่ง