Om du ofta tar bort och återskapar stora datauppsättningar i en Windows-miljö (till exempel: Säkerhetskopiering till disk) kan en åtgärd som ska tas bort innan den tas bort resultera i ett stort antal UNMAP-kommandon i disksystemet. Om du skriver om samma diskutrymme kan skrivprestandan påverkas eftersom de inkommande skrivningarna väntar på att UNMAPs ska bearbetas. UNMAPs returnerar diskutrymmeselement till diskpoolen på disksystemssidan.
Operativsystemmekanismen som driver denna lagringseffektivitetslogik kallas "TRIM". Om TRIM är aktivt och om du tar bort ett block i filsystemet genererar filsystemet (NTFS) metadata om det frigjorda utrymmet och skickar det nedåt i I/O-stacken. På disknivå i I/O-stacken tas ett beslut om måldisken är ATA-ansluten. I så fall skickas ett ATA TRIM-kommando till det fysiska diskobjektet. Om disken är en SCSI-disk konverteras TRIM till en SCSI UNMAP.
Om du tar bort och skriver om samma dataavsnitt igen är lagringseffektivitetsaspekten för den här mekanismen för återgång till pool begränsad. Under dessa omständigheter kan du antingen ha valt att inaktivera TRIM på NTFS-nivå under varaktigheten för respektive produktionsjobb eller inaktivera TRIM helt och hållet.
Den resulterande frågan är hur du kan försäkra dig om att diskarna fortfarande är utrymmessnåla på lång sikt?
Om du vill aktivera retrim på en enhet kör du vanligtvis defragmenteringskommandot med alternativet /L. När du inaktiverade TRIM med hjälp av "fsutil behavior set disabledeletenotify 1" kan du få ett intryck av att trim eller unmap endast är avaktiverat vid borttagning och att retrim fungerar som förväntat. Så är inte fallet. Retrim-åtgärden i defragmentering är en mekanism som allokerar en tom sparsefil och anropar sedan FSCTL_MOVE_FILE för att flytta data. Mer information finns i Windows Internals 7, del II, artikel 644 ff. Beteendet innebär att man tar bort en borttagning under näthöljet. Om disabledeletenotify är "1" lyckas tyvärr kommandot retrim. Det leder inte till avmappningar.
Det innebär att sekvensen för att återta lagringen måste innehålla ett steg för att aktivera TRIM innan defragmenteringen körs.
Om du har inaktiverat TRIM globalt på systemet aktiverar du den, defragmenterar den och inaktiverar den igen. Inaktiveringsprocessen kan leda till ofullständig körning av retrim-kommandon, även om kommandot har returnerats till kommandotolken. Vid labbtestning av detta i Windows 2019 upptäckte vi att vi var tvungna att vänta i ett par sekunder innan vi ställer in disabledeletenotify till "1" igen. Vi tror att detta är ett resultat av en interaktion mellan defragmenteringskommandot och optimeringstjänsten i bakgrunden.
Om du schemalägger TRIM med hjälp av Enhetsoptimeraren kräver standardmenyn i Utforskaren en schemalagd uppgift som kallas "ScheduledDefrag" (/Microsoft/Windows/defragmentering) i schemaläggaren. Om du ändrar uppgiften upptäcker Drive Optimizer detta faktum och ber om att återställa standardinställningarna innan du kan fortsätta. Om du inaktiverar uppgiften kan du fortfarande köra defragmenteringskommandona manuellt, men du kan inte schemalägga dem.
Den här "ScheduledDefrag"-aktiviteten kallas även Systemunderhåll (Kontrollpanelen\Alla objekt på kontrollpanelen\Säkerhet och underhåll\Automatiskt underhåll).
Därför rekommenderar vi att du lämnar dessa systemstandardinställningar som de är och istället överväga att skapa en ny uppgift i schemaläggaren så att:
Timeoutvärdet i steg 3 är en kontroll av labbtest. Vi behövde aldrig längre än 10 sekunder för att defragmentering ska lyckas och tror att de 60 sekunderna är en rimlig utgångspunkt. Om du upptäcker att skillnader mellan de allokerade kapacitetsvärdena på disksystemsidan och det filsystem som rapporteras för den använda kapacitetskonfigurationen försöker du använda ett större värde, till exempel 300 sekunder (5 minuter).
I följande tillhandahåller vi en mall som du kan importera till en schemaläggare som du kan använda som bas. Kopiera och klistra in XML-koden nedan i en fil. Placera filen inom räckhåll för det serversystem som du vill konfigurera och använd uppgiftsimportåtgärden för att importera uppgiften. Nedanstående aktivitetsmall kallas DellSanDiskMaintenance. Den kör ovanstående fyra steg varje vecka, en lördag kl. 20:00 (8:00), och placeras i roten på schemaläggaren, till exempel:
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