Odpovídáte na názor k článku Linux dostává podporu defragmentace oddílů typu exFAT. Názory mohou přidávat pouze registrovaní uživatelé. Nově přidané názory se na webu objeví až po schválení redakcí.
Více-méně takhle to funguje ve Windows. Pomocí IOCTL FSCTL_GET_VOLUME_BITMAP zjistíte které clustery (bloky) jsou alokované a které volné. FSCTL_GET_RETRIEVAL_POINTERS řekne ve kterých blocích je soubor alokovaný. Adresáře a další objekty se považují za soubory. Informaci o alokaci souboru (RETRIEVAL_POINTERS_BUFFER) pak projdete, a pomocí FSCTL_MOVE_FILE přesunete jeden či více clusterů na nové místo. Vše z user space, transparentně a transakčně. Ty první dva FSCTL samozřejmě vracejí informaci k danému okamžiku, a v nejhorším se vám může soubor třeba prodloužit nebo přesunout pod rukama. To sice může vést k suboptimální defragmentaci, ale nikoliv k havárce.
https://learn.microsoft.com/en-us/windows/win32/fileio/defragmenting-files
Historicky tuším na NT 3.51 nějaká třetí strana přišla s defragem, který sahal přímo na struktury FS. MS se to moc nelíbilo, protože takový nástorj může snadno poškodit FS, takže v NT 4.0 přišel s defrag API. V NT 5.0 (Windows 2000) k tomu přidal i vestavěnou defrag utilitu. To defrag API původně neumělo přesouvat například na NTFS MFT, ale ta omezení postupně jedna za druhým padala.
Vyjma toho Windows mají možnost provést přímo defrag, případně analýzu stavu fragmentace. Dělá se to přes Storage Volume Provider, třída Win32_Volume, metody Defrag() a DefragAnalysis().
https://learn.microsoft.com/en-us/previous-versions/windows/desktop/vdswmi/defrag-method-in-class-win32-volume
Ještě nad rámec bych dodal, že i oprava FS má API, konkrétně IOCTL FSCTL_INITIATE_REPAIR
https://learn.microsoft.com/en-us/windows/win32/api/winioctl/ni-winioctl-fsctl_initiate_repair
Upřímně na tom oceňuji koncept i dokumentaci. A upozorňuji, že tohle tu bylo cca před čtvrt stoletím.