Given a set V of active components in charge of a distributed execution, a storage scheme is a sequence of subsets, B 1,B 2,...,B b , of V where, succesive global states are recorded. The subsets, called blocks, have the same size and are scheduled according to some fixed and cyclic calendar of b steps. During i-th step, block B i is selected. Next, a global snapshot is taken and each component sends its corresponding local state to one of the appointed places in B i , in a way that each component stores (approx.) the same number of local states. Afterwards, if a component of B i crashes, all of the data stored in the block is useless, because the global state can not be reconstructed. In this case, the information recorded in an earlier block can be used to recover a global state, provided there is at least one such block where no component has crashed. The goal is to design storage schema that tolerate as many crashes as possible, while trying to have each component participating in as few blocks as possible and, at the same time, working with large blocks (so that a component in a block stores a small number of local states). In this paper several such schema are described and compared in terms of these measures.