Article Preview
TopIntroduction
Grid computing is an important technique to manage computing resources distributed in different geographical locations and appear as a single entity. The current level of technology and the great interest of researchers in this methodology make the data grid an interesting solution to the problems of computing and storage intensive (Antoniu et al., 2004). Data Grids is a type of grid computing that have been adopted as the next-generation platform by many scientific communities that need to share, access, transport, process and manage large data collections distributed worldwide (Antoniu et al., 2004). They combine high-end computing technologies with high-performance networking and wide-area storage management techniques. In the context of Data Grid, we can find generally three types of elements (or nodes) (Meroufel & Belalem, 2011):
- •
Storage Elements: They are the nodes that store data;
- •
Computing Elements: They are the nodes that execute the jobs and applications;
- •
Hybrid Elements: They are the nodes that store data and execute jobs at the same time such as personnel computers.
Each element can send a request or answer it. For example a computing node can send a request to find a specified file that is stored in the storage element.
However, for the rest of this paper and unless otherwise stated, the term node means all thus types of elements (storage, computing and hybrid). But we will focus on nodes that contain data (Storage and hybrid elements). Data Grids require users to share both data and resources, and the management of such a large volume of data sets has posed a challenging problem in how to make the data more approachable and available to the users. A common solution to improve availability and file access time in a Data Grid is to replicate the data (Venugopal et al., 2006). When data is replicated, copies of data files are created at many different sites in the Data Grid. The dynamic behavior of a Grid user, in combination with the large volume of datasets, makes it difficult to make decisions concerning when or when replicating data to meet improve the system performances. In a Data Grid system, there are hundreds of clients across the globe who will submit their job requests, each of which will access multiple files to do some type of analysis. In data-intensive applications, when a job accesses a massive-size file, the unavailability of that file can increase the execution time of jobs. In large-scale data-intensive systems, hundreds of nodes will be involved and any node failure or network outage can cause potential file unavailability. As a result, the fault tolerance and data availability are very important issue in data grid but unfortunately, the majority of the researches focus on one domain such as:
- •
Replication defines creating copies of a data file in several nodes can improve availability but when or where creating thus copies is a critical problem;
- •
Self-stabilization defines returning to a legitimate state automatically in case of a failure. The legitimate state in our work is the connected hierarchical topology that can be disconnected because the failure. This concept will be detailed in section 4.2.3a);
- •
Dynamicity management defines managing the arrival and departure of nodes in the system is important in a dynamic system such as the data grid;
- •
Failure detection defines detecting the failed nodes in the system; several strategies are proposed to detect failures in distributed systems using for example Life messages or Ping/Pong messages (Hughes et al., 2002).
So the interaction and the collaboration between thus domains are rarely studied. In this paper, we improve each domain of fault tolerance and we collect them in a new CSFT (Collaborative Services for Fault Tolerance). The CSFT tolerates the faults in transparent and efficient ways using several collaborative services. The services are organized in hierarchical way (services and sub-services) and they are responsible to offer one or more domain of fault tolerance.