This thesis focuses on distributed storage systems for clusters of servers. Existing solutions are generally monolithic and hardly (re)configurable. As a consequence, code reuse is limited, administration of such services is complex, and developing robust and autonomic systems is difficult. We propose a software framework to alleviate these constraints. A storage service is constructed from a set of components and provides an explicit representation of control and data streams. The architecture allows a fine-grained tuning of the system properties, including networking protocols and strategies for data transfers. In addition, the execution infrastructure provides mechanisms for dynamic reconfiguration of the code, the parameters and the structure of the system. A prototype was implemented at the block level. It shows that a modular approach can help building flexible and custom systems and is compatible with good performance.Cette thèse s'intéresse aux systèmes de stockage répartis pour grappes de serveurs. Les solutions existantes sont généralement monolithiques et peu (re)configurables. Elles limitent la réutilisation de code, compliquent l'administration et le développement de systèmes robustes et autonomes. Nous proposons un canevas logiciel visant à lever ces contraintes. Un service de stockage est construit à partir d'un assemblage de composants et fournit une représentation explicite des flux de contrôle et de données. L'architecture permet un paramétrage fin des propriétés du système, y compris au niveau des protocoles de communication et des stratégies de transfert des données. L'infrastructure d'exécution offre, de plus, des mécanismes de reconfiguration dynamique du code, des paramètres et de la structure du système. Un prototype, implémenté au niveau bloc, montre qu'une approche modulaire est conciliable avec de bonnes performances et permet de construire des services flexibles et spécialisés