¿Cómo funciona TRIM Enabler?

8

Recientemente compré una tercera parte (OCZ) SSD y usé Trim Enabler para, bueno, habilitar TRIM. Me di cuenta de que algunas actualizaciones de software pueden hacer que TRIM se deshabilite y, por lo tanto, tengo curiosidad sobre cómo funciona TRIM Enabler.

  • ¿Reemplaza algún KEXT predeterminado con uno personalizado para admitir TRIM o simplemente alterna alguna configuración de PLIST?
  • De cualquier manera, ¿hay un archivo que, cuando está bloqueado, puede garantizar que TRIM permanezca habilitado (sin consecuencias negativas)?
Alexander - Restablece a Monica
fuente

Respuestas:

9

El Trim Enabler parchea el siguiente archivo Kext

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

que comprueba si el SSD es un SSD de terceros o de marca Apple:

Vista hexadecimal / ascii de IOAHCI

También puede habilitar el recorte manualmente buscando todas las apariciones de 'Apple' en el archivo y parchándolas en un editor hexadecimal o mediante terminal:

##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
Chrisii
fuente
1
¿Cómo encuentras estas cosas? Si ejecuto TRIM Enabler para "parchear" mi archivo IOAHCIBlockStorage y luego bloquearlo (con privilegios de administrador), ¿sufriría algún efecto adverso? Claro que no podría soportar los nuevos SSD PCIe (que mi MacBook ni siquiera tiene), pero ¿evitaría que futuras actualizaciones inviertan el parche?
Alexander - Restablece a Monica el
mi mejor conjetura: incluso si bloquea el archivo para que no se edite ... el actualizador simplemente reemplazaría el archivo completamente con un nuevo archivo. Debería eliminar el permiso de escritura para root de la carpeta completa. En ese caso específico, supongo que el instalador fallará ya que no puede escribir en la carpeta. En mi opinión, no vale la pena. Simplemente inicie Trim Enabler después de una actualización y vuelva a aplicar el parche.
Chrisii
@Chrisii, ¿sabes si esto funcionará en Yosemite? ¿Cambia la firma kext?
thepen
@thepen No lo he probado todavía, pero puedo decir con certeza que modificar el archivo cambiará la firma kext y, por lo tanto, para que funcione, primero tendrá que deshabilitar la verificación de firma kext (puede encontrar más información aquí cindori .org / trim-enabler-and-yosemite )
Chrisii
2

La única información que puedo encontrar sobre esto es de una entrada de FAQ / blogpost

R: Trim Enabler parchea un controlador OSX Trim nativo, que funciona en segundo plano incluso cuando la aplicación está cerrada o eliminada. Este parche se restablece en las actualizaciones del sistema, por lo que podría ser una buena idea mantener la aplicación.

Megan Walker
fuente
La ruta generalmente se restablece en las actualizaciones cuando Apple decide actualizar las extensiones del kernel mencionadas, por ejemplo, para admitir nuevas unidades ssd (Pensando en los nuevos ppcie ssds anunciados en WWDC).
Chrisii
2

Los SSD OCZ utilizan un controlador Sandforce que ha incorporado la recolección de basura en primer plano que retrasa la necesidad de borrar bloques, reduciendo pero no eliminando la necesidad de soporte TRIM. Recortar puede considerarse una ayuda para la recolección de basura.

Recorte VS Recolección de basura

Para la breve explicación, la memoria flash se organiza en grupos de páginas donde se pueden escribir datos. Una vez que se escribe una página, no se puede volver a escribir hasta que se borre. Pero una página solo se puede borrar dentro de un grupo de típicamente 128 páginas llamado bloque. La complejidad de escribir datos realmente comienza a escalar en el caso de escrituras aleatorias que reemplazan datos escritos previamente. Las escrituras aleatorias ponen los nuevos datos en páginas previamente borradas en otros lugares, salpicando un bloque de datos válidos con "parches de datos no válidos". Para escribir nuevos datos en estos parches, se debe borrar todo el bloque, las 128 páginas. Pero primero todas las páginas circundantes con datos válidos deben leerse y luego reescribirse en páginas en blanco. El bloque de páginas en blanco recién borrado está listo para guardar nuevos datos.

[…] Todos los SSD basados ​​en Flash NAND usan GC. Algunos usan GC de primer plano y otros usan GC de fondo o inactivo. La diferencia entre ellos está cubierta en mi blog http://blog.lsi.com/dont-let-ssds-throw-away-your-gold/ . En términos simples, la recolección de basura en segundo plano aumentará la amplificación de escritura (WA) y desgastará el SSD antes. El primer plano GC es más difícil de lograr y creo que solo el controlador SandForce puede hacerlo hoy

[...] TRIM es beneficioso para todos los SSD, independientemente del tipo de recolección de basura que se utilice. Hablo sobre cómo surgió TRIM y por qué es necesario en mi blog http://blog.lsi.com/did-you-know-hdds-do-not-have-a-del… . El sistema operativo envía el comando TRIM al SSD para identificar qué páginas de datos pueden ignorarse durante la recolección de basura. El SSD no puede decir qué archivos se han eliminado hasta que el sistema operativo utiliza los mismos sectores para almacenar nuevos archivos, pero para ese momento el SSD ya ha desperdiciado ciclos recolectando datos no válidos, pero que el SS conoce.

¿Sabía que los discos duros no tienen un comando Eliminar? Es por eso que los SSD necesitan TRIM

Mantener su SSD TRIM Hace varios años, la industria del almacenamiento se unió y desarrolló una solución entre el sistema operativo y el SSD mediante la creación de un nuevo comando SATA llamado TRIM. No es un comando que obliga al SSD a borrar los datos de inmediato, como creen algunas personas. En realidad, el comando TRIM puede considerarse como un mensaje del sistema operativo sobre qué direcciones usadas anteriormente en el SSD ya no contienen datos válidos. El SSD toma esas direcciones y actualiza su propio mapa interno de su memoria flash para marcar esas ubicaciones como no válidas. Con esta información, el SSD ya no mueve esos datos no válidos durante el proceso de GC, eliminando el tiempo perdido reescribiendo datos no válidos en nuevas páginas flash. También reduce el número de ciclos de escritura en el flash, aumentando la resistencia de los SSD.

el bolígrafo
fuente