Cos’è TRIM?
TRIM è un comando dell’interfaccia ATA. Ogni volta che si utilizza il lettore o si modificano dati, l’SSD deve garantire che tutte le informazioni non valide vengano eliminate e che lo spazio sia disponibile per l’inserimento di nuove informazioni. In sostanza, TRIM indica all’SSD quali dati possono essere cancellati.
Perché è necessario tutto ciò? Perché, a causa del modo in cui gli SSD leggono e scrivono le informazioni, i dati non vengono effettivamente eliminati su richiesta dell’utente (anche se sembrano scomparire dal documento o dal dispositivo). Piuttosto, la sezione dell’SSD che contiene i dati indesiderati viene contrassegnata come non più in uso. Il comando TRIM è necessario per confermare che i dati possono essere rimossi. Una volta ottenuta questa conferma, l’eliminazione definitiva viene gestita dalla Active Garbage Collection alla successiva inattività del computer.
Processo di verifica
In Devolutions, abbiamo implementato un flusso di lavoro di verifica semplificato e logico che coinvolge il nostro team IT e il nostro team di sicurezza:
- Il nostro team IT si occupa di cancellare dischi e partizioni, per poi reinstallare Windows. I dischi vengono quindi consegnati al nostro team di sicurezza.
- Il nostro team di sicurezza esegue un’analisi del lavoro svolto e verifica che non vi siano dati recuperabili. I dischi vengono quindi restituiti al team IT per il ripristino.
Questo flusso di lavoro riduce al minimo il numero di attività e il carico di lavoro di ciascun team. Si tratta di un ottimo esempio di come la sicurezza possa ottimizzare le prestazioni di un processo senza comprometterne l’efficienza e la produttività.
Processo di convalida
Per garantire che TRIM sia attivo e che il processo funzioni correttamente, abbiamo creato uno script PowerShell distribuito tramite il nostro MDM. Questo script crea un’attività di convalida ricorrente da TRIM. Successivamente, accediamo ai log ottenuti dal nostro SIEM per l’analisi.

I risultati di questo comando possono essere interpretati come segue:
| Descrizione | |
|---|---|
| NTFS DisableDeleteNotify = 0 | Indica che TRIM è già abilitato per gli SSD con NTFS. |
| NTFS DisableDeleteNotify = 1 | Se lo stato mostra il valore 1, indica che TRIM è disabilitato per gli SSD con NTFS. |
| NTFS DisableDeleteNotify non è attualmente impostato | Questo stato indica che il supporto TRIM verrà abilitato automaticamente quando viene collegato un SSD con NTFS. |
| ReFS DisableDeleteNotify = 0 | Lo 0 con ReFS indica che il supporto TRIM è abilitato per gli SSD con ReFS. |
| ReFS DisableDeleteNotify = 1 | Qui il valore 1 con ReFS indica che TRIM è disabilitato per gli SSD con ReFS. |
| ReFS DisableDeleteNotify non è attualmente impostato | Questo risultato specifico indica che il supporto TRIM verrà abilitato automaticamente quando viene collegato un SSD con ReFS. |
Script PowerShell
Ecco lo script PowerShell che abbiamo creato e che invitiamo a utilizzare nella vostra azienda:
# 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
}
Se utilizzate questo script PowerShell, ecco gli EventID da tenere sotto controllo:
- EventID 0 se TRIM è attivo
- Tipo informazione
- Messaggio TRIM (NTFS/REFS) attivo
- EventID 2 se TRIM è inattivo
- Tipo avviso
- Messaggio TRIM (NTFS/REFS) inattivo
Considerazioni finali
Secondo la nostra esperienza, TRIM è una soluzione efficiente e affidabile per ridurre il numero di passaggi coinvolti nella gestione dell’hardware destinato alla ridistribuzione o alla vendita. Anche terze parti autorevoli avallano questo processo. Ad esempio:
- In un video su YouTube, l’azienda di recupero dati Data Rescue Labs ha dichiarato che le aziende che affermano di vendere software speciali per il recupero dei dati da SSD sottoposti a TRIM “mentono”, e che tali affermazioni sono “ridicole”.
- R-studio Data Recovery, il cui software è noto e specializzato nel ripristino dei dati, ha dichiarato: “Il recupero dei dati da dispositivi SSD quando viene utilizzato il comando TRIM è estremamente difficile e, nella maggior parte dei casi, impossibile”.
Infine, sebbene utilizziamo e sosteniamo TRIM, consigliamo comunque di condurre le proprie ricerche per confermare che questo processo sia adatto alle vostre esigenze e ai vostri obiettivi.
