โดยทั่วไปแล้วในการตอบคำถามของคุณโดยตรงฉันไม่ทราบถึงแบรนด์ใด ๆ ของไดรฟ์ SATA ที่ตัวไดรฟ์นั้นมีข้อบกพร่องที่เกี่ยวข้องกับการทำงานที่เหมาะสมโดยเปิดใช้งานแคชการเขียน นั่นคือจากมุมมองของไดรฟ์เท่านั้นไดรฟ์ทำในสิ่งที่ควรทำจากมุมมองแคช ฉันยังอยากจะทราบว่าแม้ในขณะที่เขียนแคชมีการเปิดใช้งานที่ล่าช้าจากการเขียนดิสก์บนสายเคเบิล SATA สื่อหมุนร่างกายถูกปรับปรุงยังคงเป็นที่สั้นมาก (~ 50 ถึง 100 มิลลิวินาทีโดยทั่วไป) มันไม่เหมือนกับข้อมูลแคชที่สกปรกที่เพิ่งจะนั่งอยู่ที่นั่นเป็นเวลาต่อวินาที ..... ไดรฟ์พยายามอย่างต่อเนื่องเพื่อรับข้อมูลสกปรกจากแคชไปยังสื่อทางกายภาพทันทีที่ทำได้ นี่ไม่ใช่แค่คำถามเกี่ยวกับความปลอดภัยของข้อมูล แต่หนึ่งในนั้นพร้อมที่จะยอมรับการเขียนในอนาคตโดยไม่ล่าช้า (เช่น: การเขียนการเขียน)
ปัญหาที่เกิดขึ้นเมื่อเปิดใช้งานการแคชคือลำดับการเขียนไปยังไดรฟ์ผ่านสายเคเบิล SATA และลำดับการเขียนไปยังสื่อการหมุนนั้นไม่เหมือนกัน สิ่งนี้ไม่สามารถทำให้เกิดปัญหาได้จนกว่าคุณจะสูญเสียพลังงานหรือระบบล่มก่อนที่เนื้อหาทั้งหมดของแคชจะทำให้มันเป็นดิสก์ ทำไม? ->
ปัญหาที่อาจเกิดขึ้นที่นี่มีความสัมพันธ์กับความทนทานของการทำธุรกรรมของระบบไฟล์และ / หรือเนื้อหาไฟล์ฐานข้อมูลไปยังการเขียนที่ขาดหายไป ผลที่ตามมาผู้ที่อาจสูญเสียการเขียนตามคำสั่งในทางทฤษฎีอาจทำลายความสมบูรณ์ของตรรกะการทำธุรกรรมที่อาจมีการรับประกันเป็นอย่างอื่นโดยการเขียนดิสก์ที่เกิดขึ้นตามลำดับที่เฉพาะเจาะจงกับสื่อ
ตอนนี้แน่นอนว่าผู้ออกแบบระบบไฟล์ฐานข้อมูลตัวควบคุม RAID และอื่น ๆ ต่างก็ตระหนักถึงปรากฏการณ์นี้ที่เกี่ยวข้องกับการเขียนแคช การแคชการเขียนเป็นที่ต้องการอย่างยิ่งจากจุดยืนด้านประสิทธิภาพในสถานการณ์จำลองประเภทการเข้าถึง I / O แบบสุ่มส่วนใหญ่ ในความเป็นจริงการมีการเขียนแคชที่พร้อมใช้งานเป็นองค์ประกอบสำคัญของความสามารถในการได้รับประโยชน์ที่แท้จริงใด ๆ กับการจัดคิวคำสั่งแบบเนทีฟขั้นสูง ( NCQ)) ที่ได้รับการสนับสนุนบน SATA รุ่นใหม่และการใช้งาน PATA รุ่นล่าสุด ดังนั้นเพื่อรับประกันการสั่งสื่อฟิสิคัลในช่วงเวลาวิกฤติเช่นนี้ระบบไฟล์และ / หรือแอพพลิเคชั่น ฯลฯ สามารถร้องขอแคชการเขียนไปยังสื่อบันทึกได้อย่างชัดเจน เมื่อการร้องขอการซิงค์นี้เสร็จสมบูรณ์ - ทุกอย่างที่รอดำเนินการจากบัฟเฟอร์ไฟล์ (อาจ), การแคชดิสก์ OS, การแคชดิสก์จริงและอื่น ๆ นั้นเกิดขึ้นจริงบนสื่อตามการออกแบบระบบธุรกรรมที่การดำเนินการที่สำคัญ นั่นคือสิ่งนี้จะเกิดขึ้นอย่างถูกต้องหากโปรแกรมเมอร์ทำการโทรอย่างถูกต้องที่ด้านบนและทุกองค์ประกอบของซอฟต์แวร์และฮาร์ดแวร์เลเยอร์นี้จะทำงานได้อย่างถูกต้อง เช่น: ไม่มีข้อบกพร่องในเรื่องนี้ในไดรฟ์ตัวควบคุม RAID ไดรเวอร์ดิสก์แคชระบบปฏิบัติการระบบไฟล์โปรแกรมฐานข้อมูลเป็นต้น นี่เป็นซอฟต์แวร์จำนวนมากที่ทุกคนต้องทำงานอย่างถูกต้อง นอกจากนี้การตรวจสอบความถูกต้องในเรื่องนี้เป็นเรื่องยากมากเพราะในเกือบทุกสถานการณ์โดยปกติคำสั่งการเขียนไม่สำคัญเลย .... และความล้มเหลวของพลังงานและสถานการณ์ความล้มเหลวคือการทดสอบที่ยากต่อการสร้าง ดังนั้นในที่สุด "ปิดการเขียนแคช" ที่หนึ่งหรือหลายชั้นและ / หรือความหมายของคำนี้ .... มีชื่อเสียงในการ "แก้ไข" ปัญหาบางประเภท ผลการปิดพฤติกรรมการเขียนแคชของ RAID คอนโทรลเลอร์หรือแคชดิสก์ OS หรือไดรฟ์ ฯลฯ กำลังหลีกเลี่ยงข้อบกพร่องอย่างน้อยหนึ่งข้อในระบบ ..... และแหล่งที่มาของตำนานดังกล่าว และความล้มเหลวของพลังงานและสถานการณ์ความล้มเหลวคือการทดสอบที่ยากต่อการสร้าง ดังนั้นในที่สุด "ปิดการเขียนแคช" ที่หนึ่งหรือหลายชั้นและ / หรือความหมายของคำนี้ .... มีชื่อเสียงในการ "แก้ไข" ปัญหาบางประเภท ผลการปิดพฤติกรรมการเขียนแคชของ RAID คอนโทรลเลอร์หรือแคชดิสก์ OS หรือไดรฟ์ ฯลฯ กำลังหลีกเลี่ยงข้อบกพร่องอย่างน้อยหนึ่งข้อในระบบ ..... และแหล่งที่มาของตำนานดังกล่าว และความล้มเหลวของพลังงานและสถานการณ์ความล้มเหลวคือการทดสอบที่ยากต่อการสร้าง ดังนั้นในที่สุด "ปิดการเขียนแคช" ที่หนึ่งหรือหลายชั้นและ / หรือความหมายของคำนี้ .... มีชื่อเสียงในการ "แก้ไข" ปัญหาบางประเภท ผลการปิดพฤติกรรมการเขียนแคชของ RAID คอนโทรลเลอร์หรือแคชดิสก์ OS หรือไดรฟ์ ฯลฯ กำลังหลีกเลี่ยงข้อบกพร่องอย่างน้อยหนึ่งข้อในระบบ ..... และแหล่งที่มาของตำนานดังกล่าว
อย่างไรก็ตามการกลับไปที่หลักของคำถาม: ภายใต้ SATA, การจัดการของดิสก์อ่านเฉพาะคำสั่ง / เขียนและคำสั่งล้างแคชมีการกำหนดไว้อย่างดีจากข้อกำหนด SATA นอกจากนี้ผู้ผลิตไดรฟ์ควรมีเอกสารรายละเอียดสำหรับแต่ละรุ่นไดรฟ์หรือตระกูลไดรฟ์ที่อธิบายถึงการนำไปปฏิบัติและการปฏิบัติตามกฎเหล่านี้เช่นตัวอย่างสำหรับไดรฟ์Seagate Barracuda โดยเฉพาะอย่างยิ่งดูรายละเอียดคุณสมบัติของ SATA SETคำสั่งที่ควบคุมโหมดการทำงานของไดรฟ์และตัวเลือก 82h โดยเฉพาะสามารถใช้เพื่อปิดใช้งานการแคชดิสก์ที่ระดับไดรฟ์เพราะค่าเริ่มต้นคือการเขียนแคชที่เปิดใช้งานบนไดรฟ์ทั้งหมดที่ฉันรู้จักอย่างแน่นอน หากคุณต้องการปิดการใช้งานแคชคำสั่งนี้จะต้องทำตอนเริ่มต้นของการตั้งค่าไดรฟ์แต่ละครั้งหรือเปิดเครื่องและโดยทั่วไปจะอยู่ภายใต้การควบคุมของดิสก์ไดรเวอร์สำหรับระบบปฏิบัติการของคุณ คุณอาจสนับสนุนให้ไดรเวอร์ระบบปฏิบัติการตั้งค่าโหมดนี้ผ่านสิ่ง IOCTL และ / หรือการตั้งค่ารีจิสทรี แต่สิ่งนี้จะแตกต่างกันอย่างมาก