In un ambiente Windows, se spesso si eliminano e si ricreano dataset di grandi dimensioni (ad esempio: Per eseguire il backup su disco), un'azione di eliminazione precedente può comportare un numero elevato di comandi UNMAP sull'array. Se si riscrive lo stesso spazio su disco, le prestazioni di scrittura potrebbero risentirne, poiché le scritture in entrata attendono l'elaborazione degli UNMAP, gli UNMAP restituiscono gli elementi di spazio su disco al disk pool sul lato array.
Il meccanismo del sistema operativo che guida questa logica di efficienza dello storage è denominato "TRIM". Se TRIM è attivo e se si elimina un block nel file system, il file system (NTFS) genera i metadati sullo spazio liberato e li passa allo stack di I/O. A livello di disco nello stack di I/O, viene presa una decisione se il disco di destinazione è collegato ad ATA. In tal caso viene inviato un comando ATA TRIM all'oggetto del disco fisico. Se il disco è un disco SCSI, il TRIM viene convertito in SCSI UNMAP.
Se si elimina e si riscrive nuovamente la stessa sezione dei dati, l'aspetto relativo all'efficienza dello storage di questo meccanismo di restituzione al pool è limitato. In questi casi, è possibile aver scelto di disabilitare il trim a livello NTFS per la durata del rispettivo job di produzione o disabilitare del tutto il TRIM.
La domanda che ne deriva è in che modo è possibile assicurare che i dischi siano ancora efficienti in termini di spazio nel lungo termine?
Per attivare retrim su un dispositivo, in genere si esegue il comando di deframmentazione con l'opzione /L. Quando si disabilita il TRIM utilizzando "fsutil behavior set disabledeletenotify 1", si potrebbe avere l'impressione che il trim o l'unmap sia disabilitato solo in fase di eliminazione e che il retrim funzioni come previsto. Non è così. L'azione retrim nella deframmentazione è un meccanismo che alloca un file sparse vuoto e quindi chiama FSCTL_MOVE_FILE per spostare i dati. Vedere "Windows Internals 7", "Parte II", pag. 644 ff per ulteriori dettagli. Il comportamento risultante implica un'azione di eliminazione all'interno. Purtroppo, se disabledeletenotify è "1", il comando retrim ha comunque esito positivo. Non comporta l'annullamento dei mapping.
Di conseguenza, la sequenza per recuperare lo storage deve includere un passaggio per attivare il TRIM prima dell'esecuzione della deframmentazione.
Inoltre, se sul sistema è stato disabilitato il trim a livello globale, attivarlo, deframmentarlo e disattivarlo nuovamente, il processo di disattivazione potrebbe non essere compatibile con l'esecuzione del comando retrim incompleta, anche se il comando è tornato al prompt. Durante il test di laboratorio su Windows 2019, abbiamo scoperto che dovevamo attendere un paio di secondi prima di impostare disabledeletenonificare nuovamente "1". Riteniamo che ciò sia il risultato di un'interazione tra il comando di deframmentazione e il servizio Optimizer in background.
Se si pianifica il TRIM utilizzando Drive Optimizer, il menu Esplora risorse predefinito richiede un'attività pianificata denominata "ScheduledDefrag" (/Microsoft/Windows/Defrag) in Utilità di pianificazione. Se si modifica l'attività, Drive Optimizer rileva questo dato e chiede di ripristinare le impostazioni predefinite prima di poter continuare. Se si disabilita l'attività, è comunque possibile eseguire manualmente i comandi di deframmentazione, ma non è possibile pianificarli.
Questa attività "ScheduledDefrag" è anche chiamata Manutenzione del sistema (Pannello di controllo\Tutti gli elementi del Pannello di controllo\Sicurezza e manutenzione\Manutenzione automatica).
Di conseguenza, si consiglia di mantenere queste impostazioni predefinite di sistema così come sono e di prendere in considerazione la creazione di una nuova attività nell'utilità di pianificazione:
Il valore di timeout nel passaggio 3 è un'interpolazione dei test di laboratorio. Non abbiamo mai avuto bisogno di più di 10 secondi per il successo della deframmentazione e crediamo che i 60 secondi siano un punto di partenza ragionevole. Se si riscontrano discrepanze tra i valori di capacità allocata lato array e il file system ha segnalato la creazione di valori di capacità utilizzati, provare a utilizzare un valore più grande, ad esempio 300 secondi (5 minuti).
Di seguito, forniamo un template da importare in un'utilità di pianificazione per l'utilizzo come base. Copiare e incollare il codice XML riportato di seguito in un file, posizionarlo a portata di mano del sistema server che si desidera configurare e utilizzare l'azione di importazione dell'attività per importare l'attività. Il template di attività riportato di seguito è denominato DellSanDiskMaintenance. Esegue i quattro passaggi precedenti ogni settimana, un sabato alle 20:00h (20:00) e viene posizionato nella radice dell'utilità di pianificazione, ad esempio:
Dell Technologies 2023-07-07T09:21:50.4883878 Dell Technologies This task is an example of how to optimize thin SAN drives, if TRIM is globally disabled on the system. \DellSanDiskMaintenance D:AI(A;;FA;;;BA)(A;;FA;;;SY)(A;;FRFX;;;LS)(A;;FR;;;AU) 2023-07-01T20:00:00 PT2H true 1 S-1-5-18 HighestAvailable IgnoreNew true true true false false false false true true false false false true P1D P4D false false PT4H 7 %windir%\system32\fsutil.exe behavior set disabledeletenotify 0 %windir%\system32\defrag.exe /C /L /U timeout /t 60 %windir%\system32\fsutil.exe behavior set disabledeletenotify 1