tl;dr
ntfsresize
& gparted
(which uses ntfsresize
) should work perfectly fine for resizing ntfs filesystems but if you have access to Windows, that should work well too.
To address the answer stating that Windows is often unable to defrag + resize partitions -
This is true, but usually only applies if you're trying to resize the system (C:
) drive while also running Windows from it.
There are ways to mitigate this, too.
Justification
Reliability of ntfsresize
As WinEunuuchs2Unix has discussed - The conventional wisdom is that the "safest" way to resize an NTFS partition is to do so from Windows.
The justification presented in the comments of WinEunuuchs2Unix's answer states that, though the unix-based ntfsresize
tool's man-page states
No reliability problem is known.
Which is a positive indication-
However, when ntfsresize
describes the Windows systems it applies to, the list is outdated & makes no mention of Windows 10.
The ntfsresize program safely resizes Windows XP, Windows Server 2003, Windows 2000, Windows NT4 and Longhorn NTFS filesystems without data loss.
All NTFS versions are supported, used by 32-bit and 64-bit Windows.
This may be taken to suggest that tool is not safe to use on ntfs
partitions that are administered by Windows 10, however in reality this should not be a problem.
The ntfs
standard has not changed since NTFS 3.1 (AKA NTFS 5.1), released alongside Windows XP in 2001.
Given that the tools within the ntfs-3g
suite support rw
access to ntfs
filesystems, the claim that "Windows 10 knows more about the last used area of the disk partition." does not apply, particularly in my instance, where the partition I'm resizing was mounted and written to from ubuntu.
Fix Windows partition management not shrinking by the whole free space
The reason this happens, is that Windows maintains state using a few large files, which can't be moved or defragged while the system has a lock on them.
The usual suspects are hyberfil.sys
, and pagefile.sys
.
If some part of the files are stored near the edge of the partition, they will block resizing beyond that point.
They can be temporarily disabled, which will allow you to properly resize your windows partition (Though in the case of pagefile.sys
, you will want to re-enable it ASAP).
Here's a post explaining what they do & how to move/temporarily disable them