LibrariesManager manager = LibrariesManager.GetManager();
var docs = manager.GetDocuments();
allDocumentsSize = 1L;
//the size is in bytes
allDocumentsSize += item.TotalSize;
External Storage option does not work properly. Choosing Azure Storage if you put images in a root level library, and then put images in a sub-library with the same names, Sitefinity puts them both in a folder with the name of the root level library. So you cannot have images with the same name in sublibraries.
Local file system is not an option for a clustered environment.
Database storage is expensive, and I'm experiencing large load on queries to sf_chunks table. Some responses are taking up to 30 seconds. Sure would be nice to use Azure Storage and CDN instead.