TRIM Enabler ทำงานอย่างไร


8

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

  • มันแทนที่ KEXT เริ่มต้นด้วยค่าที่กำหนดเองเพื่อรองรับ TRIM หรือไม่หรือเพียงสลับการตั้งค่า PLIST บางส่วน
  • ไม่ว่าจะด้วยวิธีใดมีไฟล์ที่ถูกล็อคเมื่อสามารถมั่นใจได้ว่า TRIM ยังคงเปิดใช้งาน (โดยไม่มีผลกระทบด้านลบ)?

คำตอบ:


9

Trim Enabler ทำการแก้ไข Kext-File ดังต่อไปนี้

/System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage

ซึ่งจะตรวจสอบว่า ssd เป็น SSD ของบุคคลที่สามหรือ Apple Branded หรือไม่:

IOAHCI มุมมอง hex / ascii

คุณยังสามารถเปิดใช้งานการตัดได้ด้วยตนเองโดยค้นหาสิ่งที่ 'Apple' ทั้งหมดเกิดขึ้นในไฟล์และทำการแก้ไขใน hex-editor หรือผ่านเทอร์มินัล:

##1. Backup old file
    $sudo cp /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage
/System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage.original

##2. Patch the file to enable TRIM support
    $sudo perl -pi -e 's|(\x52\x6F\x74\x61\x74\x69\x6F\x6E\x61\x6C\x00{1,20})[^\x00]{9}(\x00{1,20}\x51)|$1\x00\x00\x00\x00\x00\x00\x00\x00\x00$2|sg' /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage

##3. Clear the system kernel extension cache

   $sudo kextcache -system-prelinked-kernel

   $sudo kextcache -system-caches

1
คุณจะหาสิ่งนี้ได้อย่างไร! ถ้าฉันเรียกใช้ TRIM Enabler เพื่อ "แก้ไข" ไฟล์ IOAHCIBlockStorage ของฉันแล้วล็อค (ด้วยสิทธิ์ผู้ดูแลระบบ) ฉันจะได้รับผลกระทบใด ๆ หรือไม่? แน่ใจว่าฉันจะไม่สามารถรองรับ PCIe SSD ใหม่ (ซึ่ง MacBook ของฉันไม่มีแม้แต่) แต่จะป้องกันไม่ให้มีการอัพเดตในอนาคตจากการย้อนกลับของแพตช์หรือไม่
Alexander - Reinstate Monica

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

@Chrisii คุณรู้ไหมว่าสิ่งนี้จะทำงานใน Yosemite หรือไม่ มันเปลี่ยนการลงนาม kext หรือไม่?
thepen

@then ฉันยังไม่ได้ทดสอบ แต่ฉันสามารถพูดได้อย่างมั่นใจว่าการแก้ไขไฟล์จะเปลี่ยนลายเซ็น kext และดังนั้นเพื่อให้มันทำงานได้เลยคุณจะต้องปิดใช้งานการยืนยันการลงนาม kext ก่อน (สามารถดูข้อมูลเพิ่มเติมได้ที่นี่cindori .org / trim-enabler-and-yosemite )
Chrisii

2

ข้อมูลเดียวที่ฉันสามารถหาได้ในนี้คือจากรายการคำถามที่พบบ่อย / บล็อกโพสต์

ตอบ: Trim Enabler แก้ไขไดรเวอร์ OSX Trim ดั้งเดิมซึ่งทำงานในพื้นหลังแม้ว่าแอปจะปิดหรือลบ แพทช์นี้ถูกรีเซ็ตในการอัปเดตระบบดังนั้นจึงเป็นความคิดที่ดีที่จะเก็บแอพไว้


โดยปกติเส้นทางจะถูกรีเซ็ตในการอัปเดตเมื่อ Apple ตัดสินใจที่จะอัปเดตส่วนขยายเคอร์เนลที่กล่าวถึงเช่นเพื่อสนับสนุนไดรฟ์ ssd ใหม่ (การคิดถึง ppcie ssds ใหม่ที่ประกาศที่ WWDC)
Chrisii

2

OCZ SSD ใช้ตัวควบคุม Sandforce ซึ่งสร้างขึ้นในคอลเลกชันขยะด้านหน้าซึ่งจะทำให้ความต้องการลบบล็อกลดลง แต่ไม่จำเป็นต้องใช้การสนับสนุน TRIM การตัดแต่งอาจพิจารณาได้ว่าเป็นตัวช่วยในการเก็บขยะ

Trim VS Garbage Collection

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

[…] SSD ที่ใช้ NAND Flash ทั้งหมดใช้ GC บางคนใช้พื้นหน้า GC และบางส่วนใช้พื้นหลังหรือ GC เวลาไม่ได้ใช้งาน ความแตกต่างระหว่างพวกเขาจะครอบคลุมในบล็อกของฉันhttp://blog.lsi.com/dont-let-ssds-throw-away-your-gold/ ในแง่ง่ายๆการเก็บขยะในพื้นหลังจะเพิ่มการขยายการเขียน (WA) และทำให้ SSD เสื่อมเร็วขึ้น Foreground GC ทำได้ยากกว่าและฉันเชื่อว่ามีเพียงคอนโทรลเลอร์ SandForce เท่านั้นที่สามารถทำได้ในวันนี้

[…] TRIM มีประโยชน์ต่อ SSD ทุกตัวไม่ว่าจะใช้การเก็บขยะแบบใด ฉันพูดถึงว่า TRIM เกิดขึ้นได้อย่างไรและทำไมจึงมีความจำเป็นในบล็อกของฉันhttp://blog.lsi.com/did-you-know-hdds-do-not-have-a-del …. คำสั่ง TRIM ถูกส่งโดยระบบปฏิบัติการไปยัง SSD เพื่อระบุหน้าของข้อมูลที่สามารถละเว้นได้ในระหว่างการรวบรวมขยะ SSD ไม่สามารถบอกได้ว่าไฟล์ใดถูกลบจนกว่าระบบปฏิบัติการจะใช้เซกเตอร์เดียวกันเพื่อจัดเก็บไฟล์ใหม่ แต่เมื่อถึงเวลานั้น SSD ได้สูญเสียวงจรไปแล้วด้วยการรวบรวมข้อมูลที่ไม่ถูกต้อง แต่รู้จัก SS

คุณรู้หรือไม่ว่า HDDs ไม่มีคำสั่งลบ นั่นคือเหตุผลที่ SSD ต้องการ TRIM

การรักษา SSD TRIM ของคุณเป็นเวลาหลายปีที่ผ่านมาอุตสาหกรรมการจัดเก็บได้รวมตัวกันและพัฒนาโซลูชันระหว่าง OS และ SSD โดยการสร้างคำสั่ง SATA ใหม่ที่เรียกว่า TRIM ไม่ใช่คำสั่งที่บังคับให้ SSD ลบข้อมูลแบบทันทีที่บางคนเชื่อ ที่จริงแล้วคำสั่ง TRIM อาจถือเป็นข้อความจากระบบปฏิบัติการเกี่ยวกับที่อยู่ที่ใช้ก่อนหน้านี้บน SSD จะไม่เก็บข้อมูลที่ถูกต้องอีกต่อไป SSD ใช้ที่อยู่เหล่านั้นและอัปเดตแผนที่ภายในของหน่วยความจำแฟลชเพื่อทำเครื่องหมายตำแหน่งเหล่านั้นว่าไม่ถูกต้อง ด้วยข้อมูลนี้ SSD จะไม่ย้ายข้อมูลที่ไม่ถูกต้องในระหว่างกระบวนการ GC อีกต่อไปจึงไม่ต้องเสียเวลาเขียนข้อมูลที่ไม่ถูกต้องไปยังหน้าแฟลชใหม่ นอกจากนี้ยังลดจำนวนรอบการเขียนบนแฟลชเพิ่มความทนทานของ SSD

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