How to shrink Windows 7 boot partition with unmovable files
I have just bought an HP laptop with Windows 7 (64 bit). It has a 500 GB HDD with three partitions: a small hidden system partition, a 12 GiB HP recovery partition, and a 450 GiB C: boot partition.
I would like to split this large C: partition into two partitions, leaving only 100 GiB for the system, and giving the rest to a new data partition.
Although the Windows built-in Disk Management utility has an option to shrink the bootable partition, it only allows me to shrink it roughly by half, even though only 20 GiB on the partition is used. As far as I understand, system unmovable files lie in the middle of the partition, preventing Disk Management utility to do what I want.
And since new HP laptops don't come with OS installation disks (they only allow you to create recovery disks yourself), I can't just repartition HDD and then reinstall OS.
So, is there a way to shrink the C: bootable partition and preserve Windows 7 working?
P.S.: I have tried to use the third-party GParted utility, and after shrinking the partition, Windows 7 stopped booting, with a BSoD. System recovery didn't work, and I had to do factory recover. Since this is a long process, I would like to avoid doing it again :) So, please, suggest only proven solutions.
TL;DR
- Try to shrink the partition in the Windows Disk Management snap-in. Proceed to the step 2, if the shrink fails.
- Find the event with ID 259 in the Windows Event Log and see it's details.
- For even more details, optionally, run the fsutil command with the appropriate parameters given on step 2.
- Given the details from the steps 2 and 3, determine what component, program or feature is locking your partition.
- Temporarily disable or uninstall it.
- Go to the step 1.
Possible culprits: Virtual Memory, System Restore and/or Windows Search Index (System Volume Information folder), Hibernation, Internet Explorer temporary files.
Detailed version:
In the low-level tasks, like working with an HDD system partition, I prefer to use native tools as much as possible, and switch to third-party tools only as a last resort, if none of native tools worked. So, directed by harrymc, I gave Windows Disk Management another try.
I first turned Virtual Memory and System Restore off, removed System Volume Information folders, and after that Disk Management utility allowed me to shrink the C: partition as much as I needed. After that I turned the features back on.
The following instructions may help you to identify what application or component is preventing your partition to shrink. First you need to find the latest event with ID 259 in the Windows Event Log (see Event Viewer / Windows Logs / Application). The event is generated when the system analyses a partition, and if you have already tried to shrink a partition via right-clicking on it in the disk management snap-in, then the event should be there. Another way to make the system analyze a partition is to run the Windows built-in defragmentation utility. The event tells you the last unmovable file or just the number of the last cluster of such a file. It also tells you the complete command to run from the command line to get more details about the last unmovable file. (Alternatively, you can probably also try to calculate the cluster number as min allowed partition size divided by cluster size, and then run the fsutil command with the appropriate parameters).
The filename will give you a hint to guess, what program or feature is locking your partition. And then you can turn it off or uninstall, and see if it helped. In my case turning off Virtual Memory and System Restore was enough. Sometimes it is also necessary to turn off hibernation, etc. And sometimes partition defragmentation may also help. Also, as stated in the WindowsITPro article, Windows Search Index files and Internet Explorer temporary files can also be "unmovable". Sometimes just disabling the System Restore and Windows Search Index will automatically remove unmovable files from the System Volume Information folder, and sometimes you may need to remove the folder manually after that.
P.S.: Thanks everyone for answers. Probably third-party tools would also work in my case, and probably they are easier to use, but as I have already told, for such kind of tasks I prefer to use native tools as much as possible. Also, personal thanks to harrymc for the important hint.
If I was you, I would give Gparted another try, it can be used as a Linux boot disk and can resize disks very well.
If you take a look at the download page, there is a warning with a bug relating to NTFS disks so you may want to try a previous version.
WARNING: Recently there have been several reports of problems when resizing file systems using gparted-live-0.5.0-3. In the case of the NTFS file system, The error message seen after the partition is resized is:
ERROR: Current NTFS volume size is bigger than the device size!
The problem appears to be related to the combination of packages, Linux kernel, and patches used in the GParted Live image. We are investigating to find the root cause of the problem. Until this problem is solved we recommend GParted Live 0.4-6-1 for resizing all file systems.
First, I would backup the system partition (for example, with Symantec Ghost v11 Enterprise). And for good measure, also image the ENTIRE drive (you can restore much faster than with HP's restore facility).
Then delete the C: drive and create two new partitions to your likings with a partitioning tool of your choice. Then deploy the image of the former C: drive to the first partition.
Some Windows files are unmovable and are unhelpfully allocated by Windows at the end or middle of the disk, so that one can only shrink C up to a limit. Which is exactly what you have discovered: The disk cannot be further reduced without destroying Windows.
The only solution is to reinstall Windows in a smaller partition. In your case, you will need to delete the existing system partition and divide it into two partitions via a third-party tool, then restore Windows into the first partition on the disk. Do not touch the restore partition!
I suggest using Paragon Partition Manager 2010 Free Edition as having a good user interface. Otherwise you can use any other tool such as GParted.