1. A computer-implemented method for evaluating a durability and an availability of a distributed storage system, the method comprising: receiving a configuration of the distributed storage system; identifying a failure model for each type of component of the distributed storage system; generating a series of failure events for each type of component of the distributed storage system based on the failure model; calculating, by a processor, a recovery time for each failed component based on a network recovery bandwidth for the distributed storage system, a disk recovery bandwidth for the distributed storage system, a total capacity of simultaneous failed storage devices and a resiliency scheme used by the in the distributed storage system; collecting data regarding the series of failures and the recovery times; calculating, by the processor, an observed distribution of component failures from the collected data; and calculating, by the processor, the availability and the durability of the distributed storage system based on the observed distribution of component failures.