Can I move hiberfil.sys to another drive?

I am running out of space on my %SYSTEMDRIVE% on Windows. There is hiberfil.sys file that size of it is almost 3GB.

I understand that hiberfil.sys is used for the windows hibernation feature. https://support.microsoft.com/en-us/help/13770/windows-shut-down-sleep-hibernate-your-pc

The Hiberfil.sys hidden system file is located in the root folder of the drive where the operating system is installed. The Windows Kernel Power Manager reserves this file when you install Windows. The size of this file is approximately equal to how much random access memory (RAM) is installed on the computer.

The computer uses the Hiberfil.sys file to store a copy of the system memory on the hard disk when the hybrid sleep setting is turned on. If this file is not present, the computer cannot hibernate.

I don't want to disable the hibernatation feature.

Is there any way to move hiberfil.sys to another drive other than %SYSTEMDRIVE%?


Solution 1:

I don't think it is possible to "redirect" the path of your hiberfil.sys from "C:\hiberfil.sys" to "D:\hiberfil.sys" for example.

I did some research on Google and in the Windows registry, and found nothing but the option to disable it (and consequently delete hiberfil.sys file):

  1. Click Start, and then type cmd in the Start Search box.
  2. In the search results list, right-click Command Prompt, and then click Run as Administrator.
  3. When you are prompted by User Account Control, click Continue.
  4. At the command prompt, type powercfg.exe /hibernate off, and then press ENTER.
  5. Type exit and then press ENTER to close the Command Prompt window.

Solution 2:

Instead of disabling hibernation, you can reduce the size of the hibernation file to a maximum of 50% of the total physical memory:

  1. Click Start, and then type cmd in the Start Search box.
  2. In the search results list, right-click Command Prompt, and then click Run as Administrator.
  3. When you are prompted by User Account Control, click Continue.
  4. At the command prompt, type powercfg.exe /hibernate /size 50, and then press ENTER.
  5. Type exit and then press ENTER to close the Command Prompt window.

The size of hiberfil.sys will be reduced immediately.

Update: Be aware that if your system RAM cannot be compressed to 50% of its size when you hibernate, you may get a blue screen with INTERNAL_POWER_ERROR similar to this one, which might be difficult to diagnose:

BSOD "INTERNAL_POWER_ERROR" in Windows 7 on hibernation

Solution 3:

Unlike SLEEP mode, where everything that is running on your system is stored in your RAM, (which is kept powered), HIBERNATION copies the entire state of your RAM to a file called HIBERFIL.sys. That is why that file has to be at least as big as the size of your RAM. Your computer turns off altogether, as it doesn't have to have any of your components under constant power.

BUT, next time you want to get your machine woken up from Hibernation state, to find it at the same point where you left it, it needs that boot-up sector of your System disk...

Unfortunately there's no way to move that HIBERFIL.sys around to your other HDDs or partitions.

This is unlike PAGEFILE.sys, which you CAN relocate to some other physical disk or partition, so your system disk doesn't have to handle the Pagefile.

Solution 4:

You can only disable it, not move it because, when present, hiberfil.sys is needed much earlier in the OS boot sequence.

At that point in the boot sequence, the OS is not able to understand symbolic links,

So the only place it will look for hiberfil.sys is on the OS root drive. More on Relocate hiberfil.sys