Fixing Windows 10
So over the weekend I was presented with an interesting problem. This was a Windows 10 computer with the following symptoms.
- Primary drive (C) has 0 bytes remaining (100% full)
- RAID array has been broken (copies of discs in "My Computer")
- Not enough space remaining to move things around to wipe a drive
So basically any operation on the machine just instantly failed because Windows can't really operate with 0 bytes free. I couldn't even copy files to a new drive, because some "shadow" copy was required in order to make the copy.
So here is the journey to resolving this problem and all the "gotchas" I ran into.
Step 1 - Getting a Backup Drive
First up, knowing the C drive was busted and RAID array destroyed. I knew I wanted to back up things of importance to a new external drive, just in case I broke things during rebuilding the array.
With a 5TB drive in hand, I began copying drives that I believed were more up to date than their broken RAID partner. I uninstalled Dropbox on C in order to buy enough space for "shadow copies".
This copy took quite awhile, nearly 4 hours for 2.2~ TB of data. Once that was done, I copied the no longer setup RAID drives on top of that 2.2TB, skipping any duplicate files. My hope with this was anything directly saved to the wrong drive would be picked up and copied to the backup drive.
Step 2 - Planning a new C (Main) Drive
I knew a small 128GB drive was not feasible for growth, but didn't have a good idea of how to clone this. If you start googling "Upgrading Windows to an SSD" or "Moving Windows to another HDD". The results are quite frankly insane - Every result points to another 3rd party piece of software claiming that native Windows solutions cannot repair the boot records needed to properly do this.
I ignored those, opting instead of making a full system image of the C drive then planning to restore that image onto a new larger SSD drive. This played out in my head, but no matter what I tried it would only restore to the drive it was made from. I even disconnected the old drive from the computer and this time the recovery software could not find a viable disc. What the hell Windows!
How is one expected to upgrade Windows to a larger different HDD without 3rd party software?
Step 3 - Hail Mary
With the old drive disconnected and the new drive connected, I had the bright idea of setting up Windows (With the installation disc) on the new drive. Once the long painful install completed, I navigated myself to the "Backup & Restore" feature hidden among the Control Panel to attempt a restore of my previous image.
I thought by first installing Windows to my new drive, this would work. However, as you expect at this point - Backup & Restore could not identify any backups. Maybe they are finger-printed to the specific hardware (this is a guess).
Step 4 - Return of the C Drive
With everything failing, the real solution was in figuring out a method to cut down space on an already small C drive. I learned about moving AppData, User data and more to another drive.
This is exactly what I wanted!
However, it absolutely sucked in theory. Your options were as follows:
- Right click on "My Documents", "My Photos" etc and use the Properties -> Location -> Move option to move them to another drive.
- Write some audit automatic move XML file and hope that nothing else dangerous is run
- Hack your Registry to pieces.
So none of these options are preferred. Why can't I just move the "Users" folder to another drive? Or hell the Program Files folders?
Attempting to move these directories failed because "they were in use". So I had to create a new Admin account and use that fake account to move the files from the intended Admin account.
Step 5 - Rebuilding RAID
After a painful process of cutting down space. I moved as much as I could freeing 44GB of space on the C drive. This was now ready for RAID rebuilding. However, I took this change to leverage the new Storage Spaces features of Windows 10.
This was another smack in the face as it didn't work. It didn't have permission to wipe partitions of the selected discs claiming they were in use when they weren't. It required a Safe Mode boot, which then allowed me to pick 3 drives to form my new Storage Space.
With that completed, it was time to slowly copy the required files from the external backup back into the storage space. This crashed a few times because Windows couldn't maintain an Explorer session open while trying to use the machine.
Step 6 - Ultimate Confusion
As the C drive was less full and storage spaces set up, it was time to call it a day until the confusion set in. How do I fix the environment variables? Why is the backup feature in Control Panel and Settings?
Seriously, why do Settings and Control Panel exist. Some forum tried to explain that one is internal and the other external for like personalization, etc. However, that makes zero sense when some settings like Windows Update, Backups and Networking live in both Control Panel and Settings.
Why? Why? Why? What kind of UX design has two different settings applications that hold different similar settings. Is this some era of the Metro that was never retired?
Why can't you disable Cortana? Why are there so many settings for disabling data collection?
Step 7 - The return of the Scare
Just when things are finally looking good. The C drive is red again, 5GB remaining. Pure sadness returns until it is made apparent that a new "Windows.old" folder exists taking up a whopping 20GB. This folder was made to allow Windows to restore itself to older versions.
At this point, we are in a rescue mission. If the previous state was busted, then why keep a backup??? Now we've freed up 20GB, but still not perfect. The remaining bulk is in this "Hibernation" file taking an alarming 27GB.
It is apparently made to retain the state of Windows during shutdowns, but once again seriously? Why does Windows think this is needed in a small size drive environment?
Step 8 - Success from failure
After all the failures, the corrected machine is back up and running with restored files. I sit at home typing this on a Kali Linux box and thank myself that I don't run with the mess that is Windows.