I want to move the MFT to end of contiguous used space. Right now it is placed at the middle:

I want to move it to the beginning. How can I do that?
I want to move the MFT to end of contiguous used space. Right now it is placed at the middle:

I want to move it to the beginning. How can I do that?
Contrary to other answers, this IS possible, but can be challenging.
Why might you want to do this? Windows often places the MFT in the middle of the disk for historical performance reasons - this can prevent shrinking of a volume as Windows won't shrink the volume beyond un-movable files (of which the MFT is one).
Here's the steps I've just used to move my MFT to allow me to shrink my system volume:
Hope this helps!
References:
Sysinternals Contig is able to defragment the $MFT file.
When the filesystem is NTFS, contig can also analyse and defragment the following files:
$mft, $LogFile, $Volume, $Attrdef, $Bitmap, $Boot, $BadClus, $Secure, $UpCase, $Extend
UltraDrefrag does not move it to start (talking about $MFT reserved part), it just only defrag $MFT (talking about used $MFT part).
At least with default options in configuration.
If you know how to tell UltraDrefrag to move $MFT reserved part to the start, please post it.
Oh, by the way... try to do it on a 32GiB VHD / VHDX drive mounted while Windows is working (so no risk and is the better proof of concept of working).
But, finally i found a small tool that moves that $MFT reserved zone to the start of the disk (i had used "compact" and "optimize" options, so not sure which one did the tick), it is called: DiskTuna
That tool also let you fully consolidate free space (much more than most other tools like windows native Defrag, Piriform Defraggler, auslogics DiskDefrag, IOBit SmartDefrag, etc).
And it lets you specificy file list patterns to not move (it is a pitty that pattern list is only for defrag option), so you can make videos, music, etc to stay at end of disk by moving them to the end of the disk (with a different tool like Piriform Defraggler).
I realize this is a fairly old question, however, I recently did the following (dangerous) method on a 32-bit windows 7 virtual machine.
I had a 100GB NTFS partition with (standard) 4k block size. The disk contained just under 10GB of actual data.
If this procedure caused a problem, I haven't detected it and the computer boots and runs software fine (not particularly re-assuring, given the chances, I'm sure). Of course, this process more or less throws caution to the wind, so have a backup in case it fails completely on you.
For anyone landing here:
If you wish to defragment all system files on all disks I suggest to use this batch file:
@echo off
for %%a in (c d e f g h i j k l m n o p q r s t u v w x y z) do if exist %%a:\ for %%b in ($mft $logfile $volume $attrdef $bitmap $boot $badclus $secure $upcase $extend) do ( title %%a:\%%b & echo ### Processing %%a:\%%b ### & contig64 -v %%a:\%%b )
title Done!
pause
Okay:
$MFT. It's just a file. Like everything in NTFS$Boot. This one sector big data snipped, aka VolumenBootRecord (VBR) or boot sector must reside the very beginning (cluster 0 ) of the NTFS-Volume.Well here is a nice tool to explore (as well as mod) these data structures: https://dmde.com/
Well I've some disk here with an bad sectors. I just managed to make the best as possible copy of it using: ddrescue under Linux. Wonderful tool btw.
The $MFT on this volume is in the range of 'bad sectors'. The end of the volume is good.
Now just for fun I gonna 'relocate' the $MFT. The plan to so is this:
I'll edit this post or comment if I succeed. Or what needs to be adjusted
UltraDefrag (Open Source Defragmentation tool for the Windows) have MFT optimization, which processes the MFT only.