Sådan planlægges diskvedligeholdelse for tynde diske, hvis TRIM på Windows er deaktiveret

Summary: I et Windows-miljø, hvor store datasæt ofte slettes og genoprettes, kan tynde diskdrev lide under en forudgående TRIM- eller UNMAP-aktivitet, og det kan være nødvendigt at deaktivere TRIM ("fsutil behavior set disabledeletenotify 1"). Denne handling kan føre til spørgsmålet om, hvordan man opretholder lagereffektiviteten, hvis TRIM er slukket. ...

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Instructions

Oversigt

Hvis du ofte sletter og genopretter store datasæt i et Windows-miljø (f.eks.: Sikkerhedskopier til disk), kan en forudgående sletning resultere i et stort antal UNMAP kommandoer på systemet. Hvis du omskriver den samme diskplads, kan din skriveydelse blive forringet, fordi de indgående skrivninger venter på UNMAPs skal behandles. UNMAPs Returner diskpladselementer til diskpuljen på systemsiden.

Operativsystemmekanismen, der driver denne lagringseffektivitetslogik, kaldes "TRIM." Hvis TRIM er aktiv, og hvis du sletter en blok på filsystemet, genererer filsystemet (NTFS) metadata om den frigjorte plads og sender dem ned i I/O-stakken. På diskniveau i I/O-stakken afgøres det, om destinationsdisken er ATA-tilsluttet. I så fald en ATA TRIM Kommandoen sendes til det fysiske diskobjekt. Hvis disken er en SCSI-disk, konverteres TRIM til en SCSI UNMAP.

Hvis du sletter og omskriver det samme dataafsnit igen, er lagereffektivitetsaspektet ved denne returmekanisme begrænset. Under disse omstændigheder kan du enten have valgt at deaktivere TRIM på NTFS-niveau i varigheden af det respektive produktionsjob, eller deaktiver TRIM helt og genvinde eventuelle blokke på et andet tidspunkt manuelt.

Det resulterende spørgsmål er, hvordan kan du sikre, at diskene stadig er pladseffektive på lang sigt?

Begrænsninger

Vær opmærksom på, at der er nogle begrænsninger, der skal overvejes, før du opretter en løsning.

1.

For at udløse retrim på en enhed kører du normalt kommandoen defrag med indstillingen /L. Når du deaktiverede TRIM ved hjælp af "fsutil behavior set disabledeletenotify 1," Du kan have indtryk af, at beskæringen eller fjernelsen kun er deaktiveret ved sletning , og at retrimningen fungerer som forventet. Dette er ikke tilfældet. Retrim-handlingen i defrag er en mekanisme, der tildeler en tom sparsom fil og derefter kalder FSCTL_MOVE_FILE for at flytte dataene. Se "Windows Internals 7," "Part II," s. 644 ff for yderligere detaljer. Den resulterende adfærd indebærer en sletningshandling under emhætten. Desværre, hvis disabledeletenotify is "1", den retrim kommandoen lykkes stadig. Det resulterer ikke i unmaps.

Som følge heraf skal sekvensen for at genvinde lageret omfatte et trin til aktivering TRIM før defragmenteringen køres.

2.

Yderligere, hvis du har deaktiveret TRIM På systemet globalt skal du aktivere det, defragmentere og derefter deaktivere det igen, deaktiveringsprocessen kan kollidere med ufuldstændig retrim-kommandoudførelse, selvom kommandoen er vendt tilbage til prompten. Da vi laboratorietestede dette på Windows 2019, fandt vi ud af, at vi måtte vente et par sekunder, før vi satte disabledeletenotify til "1" igen. Vi mener, at dette er et resultat af et samspil mellem defrag Kommando og Optimizer-tjenesten i baggrunden.

3.

Hvis du planlægger TRIM ved hjælp af Drive Optimizer kræver standard Explorer-menuen en planlagt opgave kaldet "ScheduledDefrag" (/Microsoft/Windows/Defrag) i Task Scheduler. Hvis du ændrer opgaven, registrerer Drive Optimizer dette faktum og beder om at gendanne standardindstillingerne, før du kan fortsætte. Hvis du deaktiverer opgaven, kan du stadig køre defragmenteringskommandoerne manuelt, men du kan ikke planlægge dem.

4.

Det her "ScheduledDefrag" opgave kaldes også i Systemvedligeholdelse (Control Panel\All Control Panel Items\Security and Maintenance\Automatic Maintenance).

5.

Hvis du deaktiverer TRIM, UNMAP Kommandoflowet til de nederste lag af IO-stakken stopper med det samme. Dette er forventeligt. Hvis du over tid observerer, at den tildelte plads vs. den brugte pladsforskel bliver for stor, kan du enten (1) være nødt til at give TRIM/UNMAP kommandoflow fra den sparsomme filbehandling mere tid, eller (2) kør interventionen oftere.

Løsning

Derfor anbefaler vi, at du lader systemets standardindstillinger og -opgaver være, som de er, og i stedet overvejer at oprette en ny opgave i opgavestyringen, som:

  1. Giver TRIM ("fsutil behavior set disabledeletenotify 0")
  2. Kører defrag /l against all drives ("defrag /C /L")
  3. Venter, indtil de resulterende kommandoer sendes til systemet ("timeout /t 60")
  4. Deaktiverer TRIM again ("fsutil behavior set disabledeletenotify 1")

BEMÆRK

Timeoutværdien i trin 3 er en interpolation af laboratorietests. Brug dette som udgangspunkt. Hvis du opdager, at der opbygges uoverensstemmelser mellem de allokerede kapacitetsværdier på arraysiden og de brugte kapacitetsværdier i filsystemet, skal du muligvis bruge større værdier, f.eks. 300 sekunder (5 minutter) og endnu mere (3600; 1 time). Alternativt skal du muligvis køre opgaven oftere; dvs. dagligt i stedet for ugentligt. Årsagen til, at disse uoverensstemmelser kan opbygges, forklares i begrænsninger (5) ovenfor.
 

XML-opgaveskabelon

I det følgende leverer vi en skabelon, som du kan importere til en opgaveplanlægning, som du kan bruge som grundlag. Kopiér og indsæt nedenstående xml-kode i en fil, placer filen inden for rækkevidde af det serversystem, du vil konfigurere, og brug opgaveimporthandlingen til at importere opgaven. Nedenstående opgaveskabelon kaldes DellSanDiskMaintenance. Det kører ovenstående fire trin ugentligt, på en lørdag kl. 20:00 (20), og placeres i roden af planlæggeren, for eksempel:

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.6" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Source>Dell Technologies</Source>
    <Date>2023-07-07T09:21:50.4883878</Date>
    <Author>Dell Technologies</Author>
    <Description>This task is an example of how to optimize thin SAN drives, if TRIM is globally disabled on the system.</Description>
    <URI>\DellSanDiskMaintenance</URI>
    <SecurityDescriptor>D:AI(A;;FA;;;BA)(A;;FA;;;SY)(A;;FRFX;;;LS)(A;;FR;;;AU)</SecurityDescriptor>
  </RegistrationInfo>
  <Triggers>
    <CalendarTrigger>
      <StartBoundary>2023-07-01T20:00:00</StartBoundary>
      <ExecutionTimeLimit>PT2H</ExecutionTimeLimit>
      <Enabled>true</Enabled>
      <ScheduleByWeek>
        <DaysOfWeek>
          <Saturday />
        </DaysOfWeek>
        <WeeksInterval>1</WeeksInterval>
      </ScheduleByWeek>
    </CalendarTrigger>
  </Triggers>
  <Principals>
    <Principal id="LocalSystem">
      <UserId>S-1-5-18</UserId>
      <RunLevel>HighestAvailable</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>false</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <IdleSettings>
      <StopOnIdleEnd>false</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
    <UseUnifiedSchedulingEngine>true</UseUnifiedSchedulingEngine>
    <MaintenanceSettings>
      <Period>P1D</Period>
      <Deadline>P4D</Deadline>
      <Exclusive>false</Exclusive>
    </MaintenanceSettings>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>PT4H</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="LocalSystem">
    <Exec>
      <Command>%windir%\system32\fsutil.exe</Command>
      <Arguments>behavior set disabledeletenotify 0</Arguments>
    </Exec>
    <Exec>
      <Command>%windir%\system32\defrag.exe</Command>
      <Arguments>/C /L /U</Arguments>
    </Exec>
    <Exec>
      <Command>timeout</Command>
      <Arguments>/t 60</Arguments>
    </Exec>
    <Exec>
      <Command>%windir%\system32\fsutil.exe</Command>
      <Arguments>behavior set disabledeletenotify 1</Arguments>
    </Exec>
  </Actions>
</Task>
 

Affected Products

PowerMax
Article Properties
Article Number: 000215628
Article Type: How To
Last Modified: 18 Dec 2025
Version:  4
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.