This document describes the Fermilab Data Storage System Enstore, its design concepts, structure, and current status. Enstore provides storage of the data in robotic tape libraries according to requirements of the experiments. High fault tolerance and availability, as well as multilevel priority based request processing allows experiments to effectively store and access data in the Enstore. Amount of data stored in the system currently approaches 2 PBytes. The Enstore system includes 5 robotic tape libraries, more than 100 PC nodes, and 90 tape drives. The distributed structure and modularity of Enstore allows scaling of the system and adding of more storage equipment as the requirements and needs grow. Users access data in Enstore directly using a special command. They can also use ftp, GridFtp, and SRM interfaces to the dCache caching and buffering system [1], which uses Enstore as its lower layer storage.