По идее, подойдёт любой дефрагментатор с настройками оптимизации/консолидации.
Для семёрки я юзал портабл версию .
Дефрагментировал с консолидацией, после чего прогонял , зачищающий области "диска" из-под перемещённых файлов. Потом останавливал машину, и ужимал размер файлика виртуального диска штатными средствами.