Windows kör en 'optimize' typiskt söndagar (inget som du ser normalt) vilket både inkluderar TRIM på all ledig diskutrymme för att ta det som missats eller inte kunde genomföras av SSD/NVMe vid just tidpunkten (dvs. datat är kvar och inte nollad vid läsning på adresser där nu raderade filer tidigare låg) när trim utförs för filer som raderas. Men det gör också en defragmentering av filer som har väldigt många fragment och det är för att NTFS skall överleva på längre sikt och inte hamna i issue som att en fil inte kan ökas på i storlek eller att det går inte att lägga in ytterligare filer i en filmapp för att de är väldigt, väldigt fragmenterade (NTFS hanterar max ca 1.5 miljoner fragment per fil och formaterad med flagga /L klarar den 6 miljoner fragment men då på bekostnad att var fil-entry nu tar 4KB istället för 1kB i $MFT)
Dessutom fragmenterar VSS (aka shadowcopy) väldigt mycket och måste hanteras för att inte ge problem framöver.
MS kallar inte processen för 'defragmentera' för att ordet är stigmatiserat i SSD/NVMe-sammanhang utan man kallar det för 'optimize'... och det är själva NTFS som behöver detta för sin överlevnad, inte SSD/NVMe i sig.
Även en del Linux-distubitioner som Ubuntu kör veckovis schemalagd 'fstrim' på all monterad SSD/NVMe-lagring men där kör man normalt inte TRIM när filer raderas, även om det går att få in sådant som parameter i fstab mfl. ställen.
Motivationen i alla fall tidigare att inte göra TRIM/discard i Linux när filer raderas är att när SSD gör TRIM så blockeras lagringen under processen och ingen läsning eller skrivning kan göras under tiden och var det stora block som skulle raderas så kunde det ta många sekunder innan lagringen svarade igen. När windows kör trim på stora filer som raderas så sprider de ut TRIM-kommandona i mindre block och kan pågå i flera minuter efter att en stor fil har raderats.
På PCIe-NVMe så skall det inte blockera enligt specifikation men det är inte säkert att alla program som hanterar TRIM förstår det utan väntar på färdigkvitto.
---
Filsystem som ext4 behöver man inte köra defragmentering på och även på väldigt mogen filsystem så är fragmenteringen sällan mer än max någon procent, och det är inte så konstigt då ext3/ext4 utvecklades så hade man NTFS som lärobok i hur man inte skulle konstruera filsystem...
BTRFS kan man behöva köra en defragmentering i och med att det är en COW-filsystem så kommer det att fragmentera, men om jag skall vara ärlig så har jag aldrig känt behov av det baserat på prestanda hittills, det är möjligen ett fall där det märks skillnad och det är att defragmentera metadatan så att en sökning med 'find' av ca 1 miljon filer i mer eller mindre djupa trän går på 1.4 sekunder istället för 5.7 sekunder (metadata dock inläst i RAM av tidigare sökning - gör man den första sökningen på nystartad dator kanske det tar 30-40 sekunder läst från snurrdiskar och det är nog den delen man kan kan korta mest märkbart med en defragmentering av metadatan.)