W środowisku systemu Windows, jeśli często usuwasz i ponownie tworzysz duże zestawy danych (na przykład: Tworzenie kopii zapasowej na dysku) wcześniejsze działanie usuwania może spowodować dużą liczbę poleceń UNMAP w macierzy. W przypadku przepisania tego samego miejsca na dysku wydajność zapisu może spowodować obniżenie wydajności, ponieważ zapis przychodzący czeka na przetworzenie unmap, unmaps zwróci elementy miejsca na dysku do puli dysków po stronie macierzy.
Mechanizm systemu operacyjnego, który napędza logikę wydajności pamięci masowej, nosi nazwę "TRIM". Jeśli funkcja TRIM jest aktywna, a w przypadku usunięcia bloku w systemie plików system plików (NTFS) generuje metadane dotyczące zwolnionego miejsca i przekazuje je w dół stosu we/wy. Na poziomie dysku w stosie we/wy podjęto decyzję, czy dysk docelowy jest podłączony do ATA. W takim przypadku do obiektu dysku fizycznego wysyłane jest polecenie ATA TRIM. Jeśli dysk jest dyskiem SCSI, trim jest konwertowany na SCSI UNMAP.
Jeśli usuniesz i ponownie nadpiszesz tę samą sekcję danych, aspekt wydajności pamięci masowej tego mechanizmu zwrotu do puli jest ograniczony. W tych okolicznościach można wyłączyć TRIM na poziomie NTFS na czas trwania odpowiedniego zadania produkcyjnego lub wyłączyć funkcję TRIM w ogóle.
Powstałe pytanie brzmi: w jaki sposób można się upewnić, że dyski są nadal wydajne w dłuższej perspektywie?
Aby uruchomić ponowną próbę na urządzeniu, zazwyczaj uruchom polecenie defragmentacyjne z opcją /L. Po wyłączeniu funkcji TRIM przy użyciu opcji "fsutil behavior set disabledeletenotify 1" może się okazać, że wykończenie lub usunięcie mapowania jest wyłączone tylko przy usuwaniu , a ponowienie działa zgodnie z oczekiwaniami. Dzieje się tak nie tak. Działanie ponownego uruchomienia w defragmentacji jest mechanizmem, który przydziela pusty plik sparse, a następnie wywołuje FSCTL_MOVE_FILE, aby przenieść dane. Więcej informacji można znaleźć w sekcji "Windows Internals 7", "Część II", str. 644 ff. Wynikowe zachowanie oznacza usunięcie czynności pod osłoną. Niestety, jeśli disabledeletenotify to "1", polecenie retrim nadal działa. Nie powoduje to mapowania.
W rezultacie sekwencja odzyskiwania pamięci masowej musi zawierać krok do aktywacji FUNKCJI TRIM przed uruchomieniem defragmentacji.
Ponadto w przypadku wyłączenia funkcji TRIM w systemie na całym świecie należy ją aktywować, przeprowadzić defragmentację, a następnie dezaktywować ponownie, proces dezaktywowania może zostać udokumentowany z niekompletnym wykonaniem polecenia ponowienia, chociaż polecenie zostało przywrócone do wiersza poleceń. Podczas testów laboratoryjnych w systemie Windows 2019 okazało się, że trzeba było odczekać kilka sekund, a następnie ponownie ustawić disabledeletenotify na "1". Uważamy, że jest to wynikiem interakcji między poleceniem defragmentatora a usługą optimizer w tle.
Jeśli zaplanujesz TRIM za pomocą narzędzia Drive Optimizer, domyślne menu Eksploratora wymaga zaplanowanego zadania o nazwie "ScheduledDefrag" (/Microsoft/Windows/Defragmentator) w harmonogramie zadań. W przypadku modyfikacji zadania narzędzie Drive Optimizer wykryje ten fakt i poprosi o przywrócenie ustawień domyślnych, zanim będzie można kontynuować. W przypadku wyłączenia tego zadania można nadal uruchamiać polecenia defragmentatora ręcznie, ale nie można ich zaplanować.
Zadanie "ScheduledDefrag" jest również nazywane Konserwacja systemu (Panel sterowania\Wszystkie elementy panelu sterowania\Zabezpieczenia i konserwacja\Automatyczna konserwacja).
W rezultacie zalecamy pozostawienie tych domyślnych ustawień systemu w postaci, w jakiej są, a zamiast tego rozważ utworzenie nowego zadania w harmonogramie zadań, które:
Wartość limitu czasu w kroku 3 jest finalizacją testów laboratoryjnych. Defragmentator nigdy nie potrzebował więcej niż 10 sekund, aby odnieść sukces i wierzyć, że 60 sekund jest uzasadnionym punktem wyjścia. Jeśli okaże się, że rozbieżności między wartościami pojemności przydzielonej po stronie macierzy a systemem plików, które zgłosiły gromadzenie się używanych wartości pojemności, spróbuj użyć większej wartości, np. 300 sekund (5 minut).
Poniżej przedstawiono szablon umożliwiający zaimportowanie do harmonogramu zadań, który będzie używany jako podstawa. Skopiuj i wklej poniższy kod xml do pliku, umieść plik w zasięgu systemu serwera, który chcesz skonfigurować, i użyj czynności importowania zadania w celu zaimportowania zadania. Poniższy szablon zadania nosi nazwę DellSanDiskMaintenance. Cztery powyższe czynności są wykonywane co tydzień, w sobotę o 20:00 (20:00) i znajdują się w katalogu głównym harmonogramu, na przykład:
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