Jak zaplanować konserwację dysku dla dysków cienkich, jeśli funkcja TRIM w systemie Windows jest wyłączona

Summary: W środowisku Windows, w którym duże zestawy danych są często usuwane i odtwarzane, dyski cienkie mogą cierpieć z powodu poprzedzającego działania TRIM lub UNMAP i TRIM ("fsutil behavior set disabledeletenotify 1") może wymagać wyłączenia. Ta czynność może prowadzić do pytania o to, jak utrzymać wydajność pamięci masowej, jeśli funkcja TRIM jest wyłączona. ...

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

Omówienie

W środowisku Windows, jeśli często usuwasz i odtwarzasz duże zestawy danych (na przykład: Utwórz kopię zapasową na dysku), poprzednia akcja usuwania może spowodować dużą liczbę UNMAP poleceń na macierzy. Jeśli ponownie zapiszesz to samo miejsce na dysku, wydajność zapisu może ucierpieć, ponieważ zapisy przychodzące oczekują na UNMAPs do przetworzenia. UNMAPs Zwróć elementy miejsca na dysku do puli dysków po stronie macierzy.

Mechanizm systemu operacyjnego, który steruje tą logiką wydajności pamięci masowej, nazywa się "TRIM”. Jeśli TRIM jest aktywny, a jeśli usuniesz blok w systemie plików, system plików (NTFS) generuje metadane o zwolnionym miejscu i przekazuje je do stosu we/wy. Na poziomie dysku w stosie we/wy podejmowana jest decyzja, czy dysk docelowy jest dołączony do usługi ATA. W takim przypadku ATA TRIM polecenie jest wysyłane do obiektu dysku fizycznego. Jeśli dysk jest dyskiem SCSI, TRIM jest konwertowany na SCSI UNMAP.

Jeśli ponownie usuniesz i ponownie zapiszesz tę samą sekcję danych, aspekt wydajności pamięci masowej tego mechanizmu powrotu do puli będzie ograniczony. W takich okolicznościach użytkownik mógł zdecydować się na wyłączenie TRIM na poziomie NTFS przez czas trwania odpowiedniego zadania produkcyjnego lub wyłączyć TRIM łącznie i ręcznie odzyskaj wszystkie bloki w innym czasie.

Nasuwa się pytanie, w jaki sposób można zapewnić, że dyski będą nadal zajmować mało miejsca w dłuższej perspektywie?

Ograniczenia

Należy pamiętać, że istnieją pewne ograniczenia, które należy wziąć pod uwagę przed utworzeniem rozwiązania.

1.

Aby wyzwolić ponowne przycinanie na urządzeniu, zwykle uruchamia się polecenie defragmentacji z opcją /L. Po wyłączeniu funkcji TRIM za pomocą "fsutil behavior set disabledeletenotify 1," Można odnieść wrażenie, że przycinanie lub usuwanie mapowania jest wyłączone tylko przy usuwaniu i że ponowne przycinanie działa zgodnie z oczekiwaniami. Tak nie jest. Akcja retrim w defrag to mechanizm, który przydziela pusty plik rozrzedzony, a następnie wywołuje FSCTL_MOVE_FILE , aby przenieść dane. Więcej szczegółów można znaleźć w "Windows Internals 7", "Part II", str. 644 i nast. Wynikowe zachowanie implikuje akcję usuwania pod maską. Niestety, jeśli disabledeletenotify is "1", retrim Polecenie nadal się powiedzie. Nie powoduje to unmaps.

W związku z tym sekwencja odzyskiwania pamięci masowej musi obejmować krok aktywacji TRIM przed uruchomieniem defragmentacji.

2.

Ponadto, jeśli wyłączyłeś TRIM W systemie globalnie aktywuj go, defragmentuj, a następnie dezaktywuj ponownie, proces dezaktywacji może kolidować z niekompletnym wykonaniem polecenia retrim, mimo że polecenie powróciło do wiersza poleceń. Podczas testów laboratoryjnych w systemie Windows 2019 stwierdziliśmy, że musieliśmy odczekać kilka sekund przed ustawieniem disabledeletenotify ponownie do "1". Uważamy, że jest to wynik interakcji między defrag i usługi Optymalizator w tle.

3.

Jeśli zaplanujesz TRIM korzystając z Drive Optimizer, domyślne menu Eksploratora wymaga zaplanowanego zadania o nazwie "ScheduledDefrag" (/Microsoft/Windows/Defrag) w Harmonogramie zadań. Jeśli zmodyfikujesz zadanie, Optymalizator dysku wykryje ten fakt i poprosi o przywrócenie ustawień domyślnych, zanim będziesz mógł kontynuować. Jeśli wyłączysz zadanie, nadal możesz ręcznie uruchamiać polecenia defragmentacji, ale nie możesz ich zaplanować.

4.

To "ScheduledDefrag" jest również wywoływane w Konserwacji systemu (Control Panel\All Control Panel Items\Security and Maintenance\Automatic Maintenance).

5.

Jeśli dezaktywujesz TRIMTthe UNMAP Przepływ poleceń do niższych warstw stosu we/wy natychmiast się zatrzymuje. Jest to zachowanie poprawne. Jeśli z biegiem czasu zauważysz, że różnica między przydzielonym a wykorzystanym miejscem staje się zbyt duża, może być konieczne (1) podanie TRIM/UNMAP przepływ polecenia z pliku rozrzedzonego przetwarza więcej czasu lub (2) uruchamiaj interwencję częściej.

Rozwiązanie

W związku z tym zalecamy pozostawienie domyślnych ustawień systemowych i zadań bez zmian, a zamiast tego rozważenie utworzenia nowego zadania w harmonogramie zadań, które:

  1. Umożliwia TRIM ("fsutil behavior set disabledeletenotify 0")
  2. Uruchamia defrag /l against all drives ("defrag /C /L")
  3. Czeka, aż wynikowe polecenia zostaną przesłane do macierzy ("timeout /t 60")
  4. Wyłącza TRIM again ("fsutil behavior set disabledeletenotify 1")

UWAGA

Wartość limitu czasu w kroku 3 to interpolacja testów laboratoryjnych. Użyj tego jako punktu wyjścia. Jeśli okaże się, że rozbieżności między wartościami pojemności przydzielonej po stronie macierzy a wartościami używanej pojemności zgłoszonej w systemie plików narastają, może być konieczne użycie większych wartości, takich jak 300 sekund (5 minut), a nawet więcej (3600; 1 godzina). Alternatywnie może być konieczne częstsze uruchamianie zadania; tj. codziennie zamiast co tydzień. Powód, dla którego te rozbieżności mogą się nawarstwiać, został wyjaśniony w Ograniczeniach (5) powyżej.
 

Szablon zadania XML

Poniżej udostępniamy szablon, który można zaimportować do harmonogramu zadań, aby można go było używać jako podstawy. Skopiuj i wklej poniższy kod xml do pliku, umieść plik w zasięgu systemu serwera, który chcesz skonfigurować i użyj akcji importu zadania, aby zaimportować zadanie. Poniższy szablon zadania nosi nazwę DellSanDiskMaintenance. Powyższe cztery kroki są wykonywane co tydzień, w sobotę o godzinie 20:00 (20:00) i są umieszczane w katalogu głównym harmonogramu, na przykład:

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