To make a very long story very short, I'm rebuilding a production server farm from the ground up due to improper sizing of the server root partitions when the project was initiated. Fortunately, I built the farm with full redundancy so I can pull servers out, have them rebuilt, and put them back into production without too much undue interruption. Early on in this process, when we discovered that the C:\ drive on each server was way too small, I tweaked a number of settings to keep various log files and such from filling up the root drives. Specifically, I moved all IIS logging, diagnostic logging, usage analysis and indexes onto the D:\ drive where there was more space.
This solution worked fine until it came time to put one of the rebuilt web front end servers, now with a much bigger C:\ drive, back into the farm. MOSS installed just fine but each time I ran the Configuration Wizard I got a bizarre System.IO.IOException error indicating that the "device is not ready". What really threw me off is that this error occurred during Step 2, when the WFE attempts to connect to the database server to join the farm. After checking all the database connections, validating permissions, using an ODBC connection to verify connectivity, and doing a hundred other things that had nothing to do with the actual problem, one of the network engineers I was working with said to me, just as a random comment, "I wonder if it has something to do with the fact that we no longer have a D:\ drive on this server". Aha!
When you change the log file locations in Central Administration, those settings apply to every server in the farm. Apparently SharePoint checks to make sure those directories exist before it begins the process of provisioning files to the specified locations (wow, someone finally coding something pre-emptive into the stack – I love it!). I knew something was out of whack based on the error description – network connectivity issues rarely show up as System.IO errors – but the fact that it threw the exception during the database connection task really threw me off.
The moral of this story is to make sure your local directory structure is correct before joining a new server to an existing farm. 'nuff said.