MAIN MENU
Le blogue Devolutions

Annonces, mises à jour et analyses de Devolutions

Astuces
Trim to meet enhanced business devolutions blog

Comment se servir de TRIM pour tous vos besoins en matière de sécurité et de conformité

Cet article contient des informations sur un programme simple, rapide et éprouvé d’amélioration de processus nommé TRIM. Ce programme permet aux entreprises d’atteindre...

Photo of Laurence Cadieux Laurence Cadieux

RÉSUMÉ

Cet article contient des informations sur un programme simple, rapide et éprouvé d’amélioration de processus nommé TRIM. Ce dernier permet aux entreprises d’atteindre un niveau élevé de sécurité et de conformité. Nous avons déjà implémenté ce programme chez Devolutions et le recommandons chaudement.

Table des matières

TRIM, c’est quoi?

TRIM est une commande d’interface ATA. Lorsque vous utilisez votre lecteur ou que vous modifiez des données, le SSD doit s’assurer que la moindre information non valide est supprimée et que de nouvelles informations peuvent être enregistrées sur l’espace ainsi libéré. En d’autres termes, le programme TRIM indique au SSD quelles sont les données qui peuvent être supprimées.

Pourquoi ce programme est-il nécessaire? En raison de la façon dont les SSD lisent et écrivent de l’information, les données ne sont pas réellement supprimées sur commande (même si elles semblent disparaître des documents et des appareils). La section du SSD qui contient les données indésirables est plutôt signalée comme n’étant plus en usage. La commande TRIM sert à confirmer que les données sont bien supprimées. Une fois cette confirmation effectuée, la suppression finale est gérée par Active Garbage Collection lors de la prochaine période d’inactivité du système d’exploitation.

Le processus de vérification

Chez Devolutions, nous avons implémenté un processus de vérification logique et optimisé auquel participent notre équipe informatique et notre équipe de sécurité :

Ce processus réduit le nombre de tâches que doit effectuer chaque équipe. Il s’agit-là d’un bel exemple de comment la sécurité peut améliorer l’efficacité et la productivité d’un processus.

Le processus de validation

Pour nous assurer que le programme TRIM est bel et bien actif et que le processus fonctionne correctement, nous avons créé un script PowerShell déployable avec notre GPM. Ce script génère une tâche de validation périodique à partir de TRIM. Cette étape effectuée, nous analysons les journaux obtenus par notre SIEM.

Voici le résultat de cette commande :

Description
NTFS DisableDeleteNotify = 0Ce statut indique que TRIM est déjà activé sur les SSD avec NTFS.
NTFS DisableDeleteNotify = 1Si la valeur 1 est affichée, alors les TRIM est désactivé sur les SSD avec NTFS.
NTFS DisableDeleteNotify is not currently setCe statut indique que le support TRIM est automatiquement activé dès qu’un SSD avec NTFS est connecté.
ReFS DisableDeleteNotify = 0Le 0 indique que TRIM est activé sur les SSD avec ReFS.
ReFS DisableDeleteNotify = 1La valeur 1 signifie ici que TRIM est désactivé pour les SSD avec ReFS.
ReFS DisableDeleteNotify is not currently setCe statut indique que le support TRIM est automatiquement activé dès qu’un SSD avec ReFS est connecté.

Le script PowerShell

Voici le script PowerShell, créé par nos soins, que nous vous invitons à utiliser pour votre entreprise :

# 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 vous utilisez notre script PowerShell, alors portez une attention particulière aux EventID suivants :

Le mot de la fin

D’après notre expérience, le programme TRIM est une solution efficace et fiable pour ce qui est de réduire le nombre d’étapes nécessaires dans la gestion du matériel à des fins commerciales ou de redistribution. Nous ne sommes pas les seuls à approuver cette méthode. Par exemple :

Bien que nous utilisons TRIM et que nous vous le recommandons fortement, il est toujours préférable d’effectuer ses propres recherches et de s’assurer que ce processus remplit tous les objectifs et exigences qu’on pourrait avoir.

More from Astuces

Read more articles