A simple Distributed File System that implemented in java using RMI with the following features: 1- Each file is replicated on several servers. 2- there is a master server that contain metadata about replica-servers locations and mapping between files and their locations. 3- Clients request read/write on file by: - Send the request to the master server with the file name. - Server responds with the locations of the file. - Client then forward the request to the primary server. 4- Updates are propagated to the other replicas of the same file using "primary based consistency protocol". 5- Handling abort operations for the transaction 6- Handling multiple Access to the same file, such that operations from transaction with lower time_stamp are done before operations from transactions with higher time_stamp.