Distributed storage systems store a substantial amount of data and maintain data integrity by storing redundancy in a large number of storage nodes. When storage nodes fail, the lost data should be regenerated on replacement nodes. Regenerating codes minimize the volume of network traffic brought by the regeneration process. However, regenerating codes consume less traffic by requiring a larger number of nodes participating in the regeneration process. In this paper, we propose a new pipelined regeneration process for regenerating codes, that enables the system to consume a smaller amount of network traffic during the regeneration without engaging a large number of participating nodes. Moreover, the time spent during the regeneration can be further saved, while the data integrity can still be maintained no worse than the conventional regeneration process with regenerating codes.