The "too many open files" message is not the cause of this problem, but it is undoubtedly causing other problems.
This typically occurs because the Lucene indexes used by Nexus can periodically consume 10-20 file handles per repository (this is in addition to the baseline that Nexus will consume, of course).
I'm assuming this is running on Linux?
If so, you can increase this limit by adding the following to /etc/security/limits.conf (where "nexus" is the UID of the user running Nexus).
#<domain> <type> <item> <value>
nexus hard nofile 2048
nexus soft nofile 2048
This will take effect immediately for new processes, so all you need to do is restart Nexus
Note: On Ubuntu, you also need to add the following line to /etc/pam.d/common-session
session required pam_limits.so
The most likely areas of damage after running out of file handles are the Lucene indexes and the repository storage areas.
To fix the indexes, schedule a full re-index of all repositories. The other indexes are in what is known as the 'timeline', which is used to record events. These will be rebuilt automatically on restart if Nexus detects they are corrupted.
In the storage area, Nexus may have created zero length files. This happens because a directory entries can still be created on a full disk. To find these, run the following in sonatype-work/nexus/storage:
Double check that the above worked correctly, and then to remove them run:
find . type f -size 0 |xargs rm