Когда вы храните изображения, полезно создать для них контрольные суммы, чтобы вы могли проверить, дублированы ли изображения, и сохранить только один экземпляр.
Организация папок важна, так как файловая система ищет изображения точно так же, как относительная база данных, и многие изображения в одной папке могут стать проблемой. Когда вы уже внедрили контрольную сумму, вы можете легко создать структуру каталогов из контрольной суммы, например, первые два символа MD5 будут 1-м уровнем подпапок, а два следующих символа будут вторым уровнем. Остальные символы будут самим файлом изображения. Если вы хотите разрешить дублирование, после контрольной суммы вы можете добавить суффикс для имени изображения.
Что касается хранилища - у вас должен быть отдельный статический сервер контента с быстрым и специализированным веб-сервером, таким как nginx или lighttpd, чтобы забыть о проблемах производительности. Жесткий диск должен быть настроен как массив RAID.
EDIT:
Что касается требований вашего веб-проекта, просто храните информацию об изображениях в базе данных, используемая среда не имеет отношения к самому хранилищу изображений.