I have a load-balanced group of web servers, all VMs running Windows 2012 R2, same windows updates, etc. They all run the same group of ASP.NET-MVC web apps, which are massively mulitenanted. Each of our customers has large amounts of their own content, mostly PNG files on disk as well as order files (PDFs and such).
The file server that contains all the customer content is getting full.
We are transitioning to a new file server, but we have an intermediate disk space crunch. We need to reduce space used by the old file server during the transition. The idea I am pursuing now is to transfer one customer's directory to the new file server, and use a symbolic link created with mklink /d
to point the folder on fs1 to its actual new location on fs2.
\\FS1\files
points to E:\Content
on server FS1\\FS2\files
points to E:\Content
on server FS2/files
that points to \\FS1\files
This mklink command is run:
mklink /d E:\Content\customers\cust001 \\FS2\files\customers\cust001
Now:
\\FS1\files\customers\cust001\images\image1.png
\\FS2\files\customers\cust001\images\image1.png
This somewhat ridiculous thing is happening perfectly on some of the web servers in the cluster. On others in the cluster, it returns HTTP 500.19, with this additional text:
The requested page cannot be accessed because the related configuration data for the page is invalid.
Error Code 0x8007052e
Config Error Cannot read configuration file
Config File \?\UNC\fs1\content\web.config
Direct viewing of \\?\UNC\fs1\content\web.config
works perfectly, from the commandline, on all the servers in the cluster, when logged in as the same domain user under which the app runs.
I've seen Symlink created with mklink not working with IIS7.5 -- Windows 7 It doesn't apply because that person was using a symlink to a mapped drive. I'm using a virtual directory to a share, and a symlink to another share within that share.
I have executed fsutil behavior set symlinkevaluation L2L:1 R2R:1 L2R:1 R2L:1
on every server, so the symlink should get followed even though it's remote-to-remote.
I know I could abandon the symlink idea and use a multitude of virtual directories instead, one virtdir for each customer, present on each and every web server. But that would be a great deal more effort, and this whole thing is a stopgap until we get the massive amounts of files (over 10 TB) moved from one file server to the other. Furthermore, some operations within the web app need to access the files, themselves, so an IIS virtual directory wouldn't suffice.
Ideas?
User contributions licensed under CC BY-SA 3.0