The design of fault-tolerant system describes a computer system or component that, when a component fails, immediately a backup component or procedure can take its place with no loss of service. Software and hardware can provide fault tolerance respectively, or sometimes a combination of both of them. We could use redundancy to achieve fault tolerance design. In terms of hardware level, fault tolerance is achieved by duplexing hardware component. Using multiple, identical replicas of hardware modules and a voter mechanism, modular redundancy could be realized. The function of voter is to compare all the outputs from the replicas and decides the correct output by using majority vote, for example. The machine continues to function as normal when faulty component is determined and then taken out. It is a general technique to tolerate most hardware faults in a minority of the hardware modules using modular redundancy. In this project, initially we have a single simpleht server. If the server has a power failure for example, the whole system is crashed and this will lead to whole system loss. Thus we think about designing a fault tolerant system, put data of file system into several identical data servers and use a mediator to compare and return the right output value to client, dealing with crashed server and corrupted data.