¿Qué es TRIM?
TRIM es un comando de la interfaz ATA. Cada vez que utiliza su unidad de lectura o modifica datos, el SSD debe garantizar que se elimine cualquier información no válida y que quede espacio disponible para introducir información nueva. En esencia, TRIM indica al SSD qué datos se pueden borrar.
¿Por qué es necesario esto? Porque, debido a la forma en que los SSD leen y escriben información, los datos no se eliminan realmente cuando el usuario lo solicita (aunque aparentemente desaparecen de su documento o dispositivo). Más bien, la sección del SSD que contiene los datos no deseados se marca como no utilizada. El comando TRIM es necesario para confirmar que los datos se pueden eliminar. Una vez realizada esta confirmación, la eliminación definitiva la gestiona la recolección activa de basura (Active Garbage Collection) la próxima vez que el ordenador esté inactivo.
Proceso de verificación
En Devolutions, hemos implementado un flujo de trabajo de verificación optimizado y lógico en el que participan nuestro equipo de TI y nuestro equipo de seguridad:
- Nuestro equipo de TI se encarga de borrar los discos y las particiones, y de reinstalar Windows. Después, los discos se entregan a nuestro equipo de seguridad.
- Nuestro equipo de seguridad realiza un seguimiento con un análisis del trabajo y verifica que no haya datos recuperables. Después, los discos se devuelven al equipo de TI para su restablecimiento.
Este flujo de trabajo minimiza el número de tareas y la carga de trabajo de cada equipo. Es un excelente ejemplo de cómo la seguridad puede optimizar el rendimiento de un proceso sin comprometer la eficiencia ni la productividad.
Proceso de validación
Para garantizar que TRIM esté activo y que el proceso funcione correctamente, hemos creado un script de PowerShell que se implementa mediante nuestro MDM. Este script crea una tarea de validación recurrente de TRIM. Después, accedemos a los registros obtenidos por nuestro SIEM para su análisis.

Los resultados de este comando se interpretan de la siguiente manera:
| Descripción | |
|---|---|
| NTFS DisableDeleteNotify = 0 | Esto indica que los SSD con NTFS ya tienen TRIM activado. |
| NTFS DisableDeleteNotify = 1 | Si el estado muestra el valor 1, indica que los SSD con NTFS tienen TRIM desactivado. |
| NTFS DisableDeleteNotify is not currently set | Este estado indica que la compatibilidad con TRIM se activará automáticamente cuando se conecte un SSD con NTFS. |
| ReFS DisableDeleteNotify = 0 | El valor 0 con ReFS indica que la compatibilidad con TRIM está activada para los SSD con ReFS. |
| ReFS DisableDeleteNotify = 1 | Aquí, el valor 1 con ReFS indica que TRIM está desactivado para los SSD con ReFS. |
| ReFS DisableDeleteNotify is not currently set | Este resultado en concreto indica que la compatibilidad con TRIM se activará automáticamente cuando se conecte un SSD con ReFS. |
Script de PowerShell
A continuación, le mostramos el script de PowerShell que hemos creado y que le invitamos a utilizar en su empresa:
# Trim Validation
$scriptblock = {
param (
)
function Write-Log {
[CmdletBinding()]
param (
[Parameter(Mandatory)]
[String]
$Message,
[Parameter(Mandatory)]
[int32]
$EventID,
[Parameter(Mandatory)]
[String]
$Type
)
Write-EventLog -LogName "Windows PowerShell" -Source "TrimPS1" -EventId $EventID -Message $Message -EntryType $Type
}
function Get-TrimConfigurationntfs{
$trimntfs = fsutil behavior query disabledeletenotify ntfs
$trimntfsvalue = $trimntfs.substring(27,1)
if ($trimntfsvalue -ne "0"){
$message = "Trim NTFS is inactive"
Write-Log -EventId 2 -Message $message -Type "Warning"
}
else{
$message = "Trim NTFS is active"
Write-Log -EventId 0 -Message $message -Type "Information"
}
}
function Get-TrimConfigurationrefs{
$trimrefs = fsutil behavior query disabledeletenotify refs
$trimrefsvalue = $trimrefs.substring(27,1)
if ($trimrefsvalue -ne "0"){
$message = "Trim REFS is inactive"
Write-Log -EventId 2 -Message $message -Type "Warning"
}
else{
$message = "Trim REFS is active"
Write-Log -EventId 0 -Message $message -Type "Information"
}
}
Get-TrimConfigurationntfs
Get-TrimConfigurationrefs
}
##### Section opérationnelle du script #####
function Write-Log {
[CmdletBinding()]
param (
[Parameter(Mandatory)]
[String]
$Message,
[Parameter(Mandatory)]
[int32]
$EventID,
[Parameter(Mandatory)]
[String]
$Type
)
Write-EventLog -LogName "Windows PowerShell" -Source "TrimPS1" -EventId $EventID -Message $Message -EntryType $Type
}
$jobname = "Trim-Verification";
$accountId = "SYSTEM";
$task = Get-ScheduledJob -Name $jobname -ErrorAction SilentlyContinue
New-EventLog -LogName 'Windows PowerShell' -Source 'TrimPS1' -ErrorAction Ignore
if ($null -ne $task){
Unregister-ScheduledJob $task -Confirm:$false;
}
try {
$trigger = New-JobTrigger -Weekly -DaysOfWeek Monday, Tuesday, Wednesday, Thursday, Friday -At "11:00" -WeeksInterval 1 # Vérification du Lundi au Vendredi à 11h
$options = New-ScheduledJobOption -ContinueIfGoingOnBattery -StartIfOnBattery -RequireNetwork -RunElevated;
Register-ScheduledJob -Name $jobname -ScriptBlock $scriptblock -ScheduledJobOption $options -Trigger $trigger;
$principal = New-ScheduledTaskPrincipal -UserID $accountId -LogonType ServiceAccount -RunLevel Highest;
$psJobsPathInScheduler = "\Microsoft\Windows\PowerShell\ScheduledJobs";
$someResult = Set-ScheduledTask -TaskPath $psJobsPathInScheduler -TaskName $jobname -Principal $principal;
$message = "Scheduled job ok"
Write-Log -EventId 65000 -Message $message -type "Information"
}
catch {
$message = "Unable to setup scheduled job. This is an error"
Write-Log -EventId 65001 -Message $message -type "Warning"
$task = Get-ScheduledJob -Name $jobname -ErrorAction SilentlyContinue
if ($null -ne $task){
Unregister-ScheduledJob $task -Confirm:$false;
}
exit 1
}
Si utiliza este script de PowerShell, estos son los EventID que debe vigilar:
- EventID 0 si TRIM está activo
- Tipo información
- Mensaje TRIM (NTFS/REFS) activo
- EventID 2 si TRIM está inactivo
- Tipo advertencia
- Mensaje TRIM (NTFS/REFS) inactivo
Reflexiones finales
Según nuestra experiencia, TRIM es una solución eficiente y fiable para reducir el número de pasos necesarios a la hora de gestionar hardware destinado a la redistribución o a la venta. Terceros de confianza también respaldan este proceso. Por ejemplo:
- En un vídeo de YouTube, la empresa de recuperación de datos Data Rescue Labs ha declarado que las empresas que afirman vender software especial para recuperar datos de SSD que han pasado por TRIM «mienten» y que dichas afirmaciones son «ridículas».
- R-studio Data Recovery, cuyo software es muy conocido y está especializado en la restauración de datos, ha declarado: «La recuperación de datos de dispositivos SSD cuando se ha utilizado el comando TRIM es extremadamente difícil y, en la mayoría de los casos, imposible».
Por último, aunque utilizamos y respaldamos TRIM, le recomendamos que realice su propia investigación para confirmar que este proceso se ajusta a sus necesidades y objetivos.
