Jak naplánovat údržbu tenkých disků, pokud je v systému Windows zakázána funkce TRIM

Summary: V prostředí systému Windows, kde jsou velké datové sady často odstraňovány a znovu vytvářeny, může u tenkých disků docházet k předchozí aktivitě TRIM nebo UNMAP a může být nutné zakázat příkaz TRIM ("fsutil behavior set disabledeletenotify 1"). Tato akce může vést k otázce, jak zachovat efektivitu úložiště, když je funkce TRIM vypnutá. ...

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

Přehled

Pokud v prostředí Windows často odstraňujete a znovu vytváříte velké datové sady (například: Zálohovat na disk), může mít předchozí akce odstranění za následek vysoký počet UNMAP příkazy v poli. Pokud přepíšete stejné místo na disku, může dojít ke snížení výkonu zápisu, protože příchozí zápisy čekají na UNMAPs ke zpracování. UNMAPs Vraťte prvky místa na disku do fondu disků na straně pole.

Mechanismus operačního systému, který řídí tuto logiku efektivity úložiště, se nazývá "TRIM.“ Pokud TRIM je aktivní a pokud odstraníte blok v systému souborů, systém souborů (NTFS) vygeneruje metadata o uvolněném místě a předá je do zásobníku I/O. Na úrovni disku v zásobníku vstupně-výstupních operací se rozhodne, jestli je cílový disk připojený k ATA. V takovém případě ATA TRIM Příkaz je odeslán objektu fyzického disku. Pokud se jedná o disk SCSI, pak je proměnná TRIM převedena na SCSI UNMAP.

Pokud odstraníte a znovu přepíšete stejnou datovou část, aspekt efektivity úložiště tohoto mechanismu návratu do fondu je omezený. Za těchto okolností jste se mohli rozhodnout zakázat TRIM na úrovni NTFS po dobu trvání příslušné produkční úlohy, nebo zakažte TRIM a získat zpět všechny bloky v jiném čase ručně.

Výslednou otázkou je, jak zajistit, aby disky byly dlouhodobě stále prostorově efektivní?

Omezení

Upozorňujeme, že před vytvořením řešení je třeba zvážit určitá omezení.

1.

Chcete-li na zařízení aktivovat opětovné oříznutí, obvykle spustíte příkaz defrag s možností /L. Pokud jste zakázali příkaz TRIM pomocí "fsutil behavior set disabledeletenotify 1," Můžete mít dojem, že oříznutí nebo zrušení mapování je zakázáno pouze při odstranění a že opětovné oříznutí funguje podle očekávání. Není tomu tak. Akce opětovného oříznutí v defrag je mechanismus, který přiděluje prázdný zhuštěný soubor a pak volá FSCTL_MOVE_FILE přesuňte data. Další podrobnosti viz "Windows Internals 7", "Část II", str. 644 a násl. Výsledné chování implikuje akci odstranění pod digestoří. Bohužel, pokud disabledeletenotify is "1", retrim Příkaz je stále úspěšný. To nemá za následek unmaps.

V důsledku toho musí sekvence pro uvolnění úložiště obsahovat krok pro aktivaci TRIM před spuštěním defragmentace.

2.

Dále, pokud jste zakázali TRIM V systému globálně jej aktivujte, defragmentujte a poté znovu deaktivujte, proces deaktivace může kolidovat s neúplným spuštěním příkazu retrim, i když se příkaz vrátil na příkazový řádek. Při laboratorním testování v systému Windows 2019 jsme zjistili, že jsme museli počkat několik sekund, než jsme nastavili disabledeletenotify znovu na "1". Domníváme se, že je to výsledek vzájemného působení mezi defrag a služby Optimizer na pozadí.

3.

Pokud naplánujete TRIM pomocí nástroje Drive Optimizer vyžaduje výchozí nabídka Průzkumníka naplánovanou úlohu s názvem "ScheduledDefrag" (/Microsoft/Windows/defrag) v Plánovači úloh. Pokud úlohu upravíte, aplikace Drive Optimizer tuto skutečnost zjistí a požádá vás o obnovení výchozích nastavení, než budete moci pokračovat. Pokud úlohu zakážete, můžete příkazy defragmentace spustit ručně, ale nelze je naplánovat.

4.

Tento "ScheduledDefrag" se také volá v Údržbě systému (Control Panel\All Control Panel Items\Security and Maintenance\Automatic Maintenance).

5.

Pokud deaktivujete TRIMUNMAP Tok příkazů do nižších vrstev zásobníku IO se okamžitě zastaví. Jde o očekávané chování. Pokud v průběhu času zjistíte, že rozdíl mezi přiděleným a využitým prostorem je příliš velký, možná budete muset (1) dát TRIM/UNMAP tok příkazů z řídkého souboru, který zpracovává více času, nebo (2) spusťte zásah častěji.

Řešení

V důsledku toho doporučujeme ponechat tato výchozí systémová nastavení a úlohy tak, jak jsou, a místo toho zvážit vytvoření nové úlohy v plánovači úloh, která:

  1. Umožňuje TRIM ("fsutil behavior set disabledeletenotify 0")
  2. Spustí defrag /l against all drives ("defrag /C /L")
  3. Čeká, dokud nejsou výsledné příkazy odeslány do pole. ("timeout /t 60")
  4. Zakáže TRIM again ("fsutil behavior set disabledeletenotify 1")

POZNÁMKA

Hodnota časového limitu v kroku 3 je interpolace laboratorních testů. Použijte to jako výchozí bod. Pokud zjistíte, že dochází k nesrovnalostem mezi hodnotami přidělené kapacity na straně pole a hodnotami využité kapacity nahlášenými systémem souborů, možná budete muset použít větší hodnoty, například 300 sekund (5 minut) a ještě více (3 600; 1 hodina). Případně může být nutné spouštět úlohu častěji. tj. denně místo týdně. Důvod, proč se tyto nesrovnalosti mohou nahromadit, je vysvětlen v omezeních (5) výše.
 

Šablona úlohy XML

V následujícím textu uvádíme šablonu, kterou můžete importovat do plánovače úloh, abyste ji mohli použít jako základ. Zkopírujte a vložte níže uvedený kód XML do souboru, umístěte soubor do dosahu serverového systému, který chcete nakonfigurovat, a importujte úlohu pomocí akce importu úlohy. Volá se níže uvedená šablona úkolu DellSanDiskMaintenance. Spouští výše uvedené čtyři kroky týdně v sobotu ve 20:00 a je umístěn v kořenovém adresáři plánovače, například:

<?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.