The Windows Home Server I’m running suddenly started acting funny a few days ago. Is started noticing it when certain video files would refuse to play. VLC spat back the same errors as if the file never existed.
So I RDC’d into the server and tried playing the files locally from the storage drives themselves, and it worked. It seemed like, for some reason, the server had re-filed the files in a different place, but forgot to update their location.
WHS uses “reparse points” to link the files on the various hard drives to one contiguous “virtual drive” that lists all the data. When a file is opened through the network, the server checks the reparse point and follows it to the location of the actual file. But when those points are corrupted, the files “disappear”.
Thanks to the WHS forums, i was pointed to the whsCleanup tool, that finds the bad reparse points, logs them, then deletes them as soon as you run a cmd file. The only problem was that the solution involved permanently deleting the affected files. Since the files themselves weren’t bad, just the reparse points, I followed the following steps to get everything back online:
- Ran whsCleanup
- Viewed the cmd file as text, made a note of every affected file
- Went into the C:\fs\ folder and manually copied (not move, COPY) each file to be deleted into a new temp directory in D:\shares (the virtual drive)
- Run the CMD file to delete the affected reparse points. Ignore the “error: drive not attached” errors.
- Move (not copy) the files back into their original folders from D:\shares to D:\shares. Use the virtual drive for this leg of the process.
That took from thursday morning to last night to complete with about 3 TB of data. Thank God for SATA.