ความปลอดภัยในการเขียนแคชบนไดรฟ์ SATA พร้อมสิ่งกีดขวาง


13

ฉันได้อ่านเมื่อเร็ว ๆ นี้เกี่ยวกับการเขียนแคช NCQ ข้อบกพร่องเฟิร์มแวร์อุปสรรค ฯลฯ เกี่ยวกับไดรฟ์ SATA และฉันไม่แน่ใจว่าการตั้งค่าที่ดีที่สุดที่จะทำให้ข้อมูลของฉันปลอดภัยในกรณีที่ไฟฟ้าขัดข้อง

จากสิ่งที่ฉันเข้าใจ NCQ อนุญาตให้ไดรฟ์จัดลำดับการเขียนใหม่เพื่อเพิ่มประสิทธิภาพขณะที่เคอร์เนลแจ้งให้ทราบว่าคำขอใดบ้างที่ถูกเขียนขึ้น

แคชการเขียนทำให้ไดรฟ์ตอบสนองคำขอได้เร็วขึ้นมากเนื่องจากไม่ต้องรอข้อมูลที่จะเขียนลงในดิสก์ทางกายภาพ

ฉันไม่แน่ใจว่า NCQ และการเขียนแคชผสมกันอย่างไรที่นี่ ...

ระบบไฟล์ที่ถูกทำเจอร์นัลเป็นพิเศษต้องแน่ใจว่าเมื่อคำร้องขอเฉพาะถูกเขียนลง นอกจากนี้กระบวนการพื้นที่ผู้ใช้ใช้ fsync () เพื่อบังคับให้ล้างของไฟล์โดยเฉพาะ การเรียก fsync นั้น () ไม่ควรกลับมาจนกว่าระบบไฟล์จะแน่ใจว่าข้อมูลนั้นถูกเขียนลงดิสก์

มีฟีเจอร์ (FUA, Force Unit Access) ซึ่งฉันได้เห็นเฉพาะในไดรฟ์ SAS ซึ่งบังคับให้ไดรฟ์ผ่านการแคชและเขียนลงดิสก์โดยตรง สำหรับทุกสิ่งทุกอย่างนั้นมีอุปสรรคในการเขียนซึ่งเป็นกลไกที่เคอร์เนลจัดไว้ให้ซึ่งสามารถท สิ่งนี้บังคับให้แคชทั้งหมดถูกเขียนลงไม่ใช่เฉพาะข้อมูลที่สำคัญดังนั้นทำให้ทั้งระบบช้าลงหากใช้งานในทางที่ผิดด้วย fsync ()

จากนั้นมีไดรฟ์ที่มีข้อบกพร่องของเฟิร์มแวร์หรือจงใจอยู่เมื่อข้อมูลถูกเขียนทางกายภาพ

มีหลายวิธีในการตั้งค่าไดรฟ์ / ระบบไฟล์: A) NCQ และแคชการเขียนถูกปิดใช้งาน B) เพียงแค่เปิดใช้งาน NCQ C) เพียงแค่เปิดใช้งานแคชการเขียน D) ทั้ง NCQ และแคชการเขียนที่เปิดใช้งาน

ฉันกำลังเปิดใช้งานสิ่งกีดขวางที่น่าสงสัย .. BTW จะตรวจสอบได้อย่างไรว่าพวกเขาเปิดใช้งานจริงหรือไม่

ในกรณีที่ไฟฟ้าดับในขณะที่กำลังเขียนลงดิสก์ฉันเดาว่าตัวเลือก B (NCQ ไม่มีแคช) มีความปลอดภัยทั้งสำหรับเจอร์นัลของระบบไฟล์และข้อมูล อาจมีโทษปรับประสิทธิภาพ

ตัวเลือก D (NCQ + แคช) หากใช้อุปสรรคหรือ FUA จะปลอดภัยสำหรับเจอร์นัลระบบไฟล์และแอ็พพลิเคชันที่ใช้ fsync () มันจะไม่ดีสำหรับข้อมูลที่กำลังรออยู่ในแคชและมันก็ขึ้นอยู่กับระบบไฟล์เพื่อตรวจสอบ (ตรวจสอบ) และอย่างน้อยระบบไฟล์จะไม่ (หวังว่า) ในสถานะที่ไม่มั่นคง ประสิทธิภาพฉลาดควรจะดีกว่า

อย่างไรก็ตามคำถามของฉันย่อมาจาก ... ฉันไม่ได้ทำอะไรเลยหรือ มีตัวแปรอื่นที่ต้องคำนึงถึงหรือไม่? มีเครื่องมือใดที่สามารถยืนยันสิ่งนี้และไดรฟ์ของฉันทำงานได้ตามที่ควร?


แอปพลิเคชันในสถานการณ์ของคุณคืออะไร คุณสามารถมองเห็นเอฟเฟกต์หรืออิทธิพลของคอนโทรลเลอร์ RAID และแคชในการตั้งค่า ระบบปฏิบัติการใดที่คุณให้ความสำคัญเช่นกัน? คุณกำลังพิจารณาว่าระบบไฟล์ใดอยู่
ewwhite

ไม่มีแอปพลิเคชันเฉพาะ ฉันใช้ซอฟต์แวร์ raid1 มาหลายปีแล้ว แต่ไม่เคยขุดลงไปในปัญหาที่แคชแทนการเขียน นอกจากนี้การดู btrfs ซึ่งยังไม่มีความน่าเชื่อถือ fsck ทำให้ฉันถามว่าฉันจะทำอย่างไรเพื่อป้องกันการทุจริตถ้าฉันจะใช้มัน
julianjm

1
ใช้ ZFS บน Linux แทนและเชื่อมโยงกับอุปกรณ์ ZIL ที่สร้างขึ้นตามวัตถุประสงค์ ผมใช้DDRDriveสำหรับระบบ ZFS :)
ewwhite

คุณกำลังใช้ ZFS กับ FUSE อยู่หรือไม่
julianjm

2
ต้องแน่ใจว่าได้รับ UPS
Michael Hampton

คำตอบ:


11

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

การ์ด RAID สามารถบายพาสแคชของดิสก์ซึ่งบางตัวอนุญาตให้เปิดใช้งานคุณสมบัตินี้ใน RAID BIOS นี่คือเหตุผลหนึ่งว่าทำไมดิสก์องค์กรเป็น Enterprise เฟิร์มแวร์ของพวกเขาอนุญาตสิ่งต่าง ๆ ที่ไดรฟ์สำหรับผู้บริโภค ( โดยเฉพาะไดรฟ์'สีเขียว') ไม่ คุณลักษณะนี้จะระบุถึงกรณีที่คุณกังวลโดยตรง: ไฟฟ้าขัดข้องพร้อมการเขียนที่ไม่ได้ใส่รหัส แคชการ์ด RAID ซึ่งควรเป็นแบตเตอรีหรือแฟลชสำรองจะถูกเก็บไว้จนกว่าพลังงานกลับคืนมาและสามารถเขียนซ้ำได้

SSD ระดับองค์กรบางตัวนั้นมีตัวเก็บประจุออนบอร์ดที่มีความเร็วเพียงพอที่จะส่งมอบแคชออนบอร์ดก่อนที่จะปิดตัวลงอย่างสมบูรณ์

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

อย่างไรก็ตามเวลาได้เปลี่ยนไปและ XFS ได้รับการออกแบบเพื่อความอยู่รอดนี้ ระบบไฟล์ Linux อื่น ๆ ที่สำคัญ (เช่นเดียวกับบน Windows) มีวิศวกรรมที่จะอยู่รอดในโหมดความล้มเหลวนี้ มันควรจะทำงานอย่างไรว่าการเขียนที่หายไปจะไม่ปรากฏในวารสาร FS และจะรู้ว่าพวกเขาไม่ได้เข้ามาดังนั้นการทุจริตจะถูกตรวจพบอย่างปลอดภัยและหลีกเลี่ยง

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

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


ฉันเข้าใจว่าภายใต้การจู่โจมฮาร์ดแวร์มันขึ้นอยู่กับตัวควบคุมที่จะทำการแคช (หวังว่าจะได้รับแบตเตอรี่สำรอง) และแนะนำให้ปิดการใช้งานแคชดิสก์จริง ในกรณีของฉัน (ไม่ได้พูดถึงมัน) ฉันใช้ซอฟต์แวร์ตรวจค้น ดูเหมือนว่าไม่แนะนำให้เขียนแคชเนื่องจากจะทำให้ข้อมูลสูญหาย อาจไม่ใช่ catastrofic (ระบบไฟล์เสียหาย) แต่ข้อมูลสูญหาย ฉันจะงดเว้นจากการย้ายซอฟต์แวร์ softraid1 + ext4 ของฉันไปเป็น btrfs + raid1 :)
julianjm

RAID ไม่ได้ช่วยในเรื่องนี้เนื่องจากข้อมูลสามารถนั่งในไดรฟ์ทั้งสองได้อย่างง่ายดายเขียนแคชเป็นไดรฟ์เดียว
psusi

@psusi มันไม่ได้เป็นบรรเทา 100% แต่มันไม่ให้เพิ่มการป้องกัน มันเป็นปัญหาเรื่องเวลา การใช้งาน RAID แต่ละตัวแตกต่างกันไป
sysadmin1138

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

3

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


ฉันคิดว่าอุปสรรคป้องกันคุณจากความเสียหายของเจอร์นัล (หากระบบไฟล์ร้องขอ) แต่ฉันไม่แน่ใจเกี่ยวกับข้อมูลจริงในไฟล์ ... การออกแคชล้างหลังจากการเขียนทุกครั้งจะทำให้การเขียนแคชไร้ประโยชน์ไม่ได้หรือไม่ ?
julianjm

@julianjm แน่นอน ... ข้อมูลไฟล์แคชจะหายไปในกรณีที่เกิดข้อขัดข้องเสมอโดยมีหรือไม่มี NCQ หรือไดรฟ์เขียนแคช
psusi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.