TRIM คืออะไรกันแน่


14

จากหน้า Wikipedia ของTRIMฉันได้รับความประทับใจว่า TRIM ได้รับการแนะนำให้ลดการเขียนลงใน SSD แต่จดหมายถึงระบบไฟล์โดยใช้กรณีที่บล็อกไม่ได้ใช้งาน

หากถูกต้องนั่นหมายความว่า SSD ที่ไม่ใช้ TRIM จะเขียนค่าศูนย์ลงในบล็อกเมื่อไฟล์ถูกลบเพื่อให้ SSD รู้ว่าบล็อกนั้นว่างหรือไม่

อ่านอย่างนี้

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

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

คำตอบ:


16

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

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

เพื่อให้แน่ใจว่ามีเซลล์ที่มีการเติมไว้ล่วงหน้าเสมอทุกครั้งที่ไม่จำเป็นต้องใช้เซลล์ไดรฟ์จะกำหนดตารางเวลาเพื่อลบพื้นหลังและเพิ่มลงในรายการเซลล์ค่าธรรมเนียม

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

คำสั่ง TRIM ได้รับการร่างอย่างรวดเร็วและได้รับการยอมรับจากระบบไฟล์ส่วนใหญ่ในปัจจุบัน มันเป็นสัญญาณง่าย ๆ ที่ระบบไฟล์ใช้เพื่อบอกไดร์ฟว่าเนื้อหาของเซ็กเตอร์นั้นไม่สำคัญอีกต่อไป ทันทีที่ทุกส่วนที่แมปบนเซลล์ว่างตัวควบคุม SSD จะยกเลิกการเลือกเซลล์และกำหนดเวลาให้ลบออก หากโฮสต์อ่านเซกเตอร์เหล่านั้น SSD จะไม่รบกวนการดึงข้อมูลจากแฟลชมันตอบสนองด้วยศูนย์ทันที แต่ผลกระทบที่สำคัญที่สุดคือการเก็บรายการเซลล์ที่เติมไว้ล่วงหน้าไว้เสมอ

อย่างไรก็ตาม SSD ส่วนใหญ่มีความจุน้อยกว่าขนาดฟิสิคัลของหน่วยความจำแฟลชซึ่งบางครั้งก็ต่ำถึง 75% ที่ช่วยให้มันสามารถเก็บเซลล์ที่ไม่ได้ใช้งานบางส่วนไว้ในระบบเต็ม 100% ดังนั้นการเขียนภาคที่ใช้แล้วยังคงรวดเร็ว


น่าสนใจ ฉันทราบถึงแนวคิดเกี่ยวกับการทำงานของ TRIM แต่สงสัยว่าจะมีพื้นที่เก็บข้อมูล SSD เท่าใด ตอนนี้ผมต้องการที่จะดูว่าข้อมูลที่มีการเผยแพร่ที่ใดก็ได้เพื่อให้ SSDs ...
Michael B

โดยปกติจำนวนเซลล์ที่สงวนไว้จะถูกเผยแพร่ โดยทั่วไปจะอยู่ระหว่าง 5 ถึง 10% สำหรับไดรฟ์สำหรับผู้บริโภคที่ราคาถูกกว่า 20% สำหรับไดรฟ์สำหรับผู้บริโภคขั้นปลายที่สูงขึ้น Enterprise Flash Drive (EFDs) มีแนวโน้มที่จะมีการสำรองที่ใดก็ได้จาก 100% ถึง 400%; เหตุใดจึงมีราคาแพงมากพวกเขาเก็บสำรองก้อนโตนี้ไว้เนื่องจากการเขียนไปยังตำแหน่งหน่วยความจำแฟลชจะทำลายที่ตั้งเล็กน้อยทุกครั้ง เขียนแอปพลิเคชั่นขนาดใหญ่ซึ่งมักพบในสภาพแวดล้อมเซิร์ฟเวอร์จะฆ่า SSD สำหรับผู้บริโภคส่วนใหญ่ได้อย่างรวดเร็ว
Chris S

"การเขียนบนเซลล์ (โดยทั่วไปคือ 4KB)" - คุณใช้แนวคิดเรื่อง"เซลล์"ในทางที่ผิดเมื่อเทียบกับการใช้งานทั่วไปสำหรับหน่วยความจำแฟลช แฟลช "เซลล์" จัดเก็บหนึ่งบิต (หรือสองสาม) บิต การใช้ "เซลล์" ของคุณดูเหมือนจะสอดคล้องกับบล็อกที่ใหญ่กว่า (ลบ) (อาจเป็น 128K) ตามที่อธิบายไว้โดยทั่วไปในเอกสารข้อมูลแฟลชของ IC องค์กรข้อมูลคือเซลล์ <เซกเตอร์ <หน้า <บล็อก <ระนาบ <ระนาบ <ชิป
ขี้เลื่อย

8

TRIM ได้รับการแนะนำเพื่อให้ระบบปฏิบัติการ (ระบบไฟล์ภายในระบบปฏิบัติการ) สามารถสื่อสารกับสื่อเก็บข้อมูล ATA ที่ไม่ได้ใช้เซกเตอร์กับระบบไฟล์อีกต่อไป สิ่งนี้ไม่เกี่ยวกับการเขียนลงดิสก์

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

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

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


หมายความว่าจะมีการเปิดตัว TRIM เพื่อให้ SSD ทราบว่ามีการใช้เซ็กเตอร์ประเภทใดดังนั้นจึงสามารถใส่ข้อมูลใหม่ลงในเซกเตอร์ที่ใช้งานน้อยลงได้
Sandra

1
SSD ใช้ TRIM เพื่อทราบว่าเมื่อใดที่ไม่จำเป็นต้องใช้เซกเตอร์ ไม่รับประกันการเขียนระดับหรือคุณสมบัติอื่น ๆ ที่สื่อจัดเก็บอาจนำไปใช้ ที่กล่าวมา SSD ส่วนใหญ่ใช้สำหรับการปรับระดับการเขียนการรวบรวมขยะ (ในสื่อแฟลชการลบเซกเตอร์ที่ไม่ได้ใช้) และการเก็บรายการเซกเตอร์ว่างเพื่อปรับปรุงประสิทธิภาพการเขียน)
Chris S
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.