Figure 2 shows the steps of the duplication process.
First, the client fetches the striping information from the
metadata server (Step 1 & 2). Then it writes the data to the
primary servers simultaneously (Step 3). Once the primary server
receives the data, it immediately sends back an acknowledgment to
inform the client of the completion of the I/O process (Step 4).
The duplication operation will be performed by the primary servers
in the background (Step 5 & 6). After a backup server receives
and stores the data from its primary server, it will send a
request to both metadata servers to change the corresponding flag
in the
array to indicate the completion of the
duplication operation. This duplication process can be considered
as asynchronous I/O. A potential problem with this protocol is
that the new data will be lost if the primary node fails during
the duplication operation.