Expand
The Expand Parallel File System
Motivation
The main motivation of Expand is to build a parallel file system for heterogeneous general purpose distributed environments. To satisfy this goal, we use Network File System (NFS).
NFS supports the NFS protocol, a set of remote procedure call (RPC) that provides the means for clients to perform operations on a remote file server. NFS protocol is operating system independent. Developed originally for being used in networks of UNIX systems, it is widely available today in many systems, as LINUX or Windows 2000, two operating systems very frequently used in clusters.
Figure 1 shows the architecture of Expand. This architecture shows how multiple NFS servers can be used as a single file system. File data are declustered by Expand among all NFS servers, using blocks of different sizes as stripping unit. Processes in clients use an Expand library to access an Expand distributed partition.

Using the former approach offers the following advantages:
No changes to the NFS server are required to run Expand. All aspects of Expand operations are implemented on the clients. In this way, we can use several servers with different operating system to build a distributed partition. Furthermore, declustered partitions can coexist with NFS traditional partitions without problems.
Expand is independent of the operating system used in the client. All operations are implemented using RPC and NFS protocol. Expand is available for Linux and Windows plataforms. Furthermore, we provide an universal Java client.
The parallel file system construction is greatly simplified, because all operations are implemented on the clients. This approach is completely different to that used in many current parallel file system, that implement both client and server sides.
It allows parallel access to both data of different files and data of the same file, reducing the bottleneck that represents the traditional distributed file systems.
It allows the using of servers with different architectures and operating systems, because the NFS protocol hides those differences. Because of this feature, Expand is very suitable for heterogenous systems, as cluster of workstations.
NFS servers use caching, increasing int this way the performance.
It simplifies the configuration, because NFS is very familiar to users. Server only need to export the appropriate directories and clients only need a little configuration file that explain the distributed partition.
Design
Expand provides high performance I/O exploiting parallel accesses to files stripped among several NFS servers. Expand is designed as a client-server system with multiple NFS servers, with each Expand file striped across some of the NFS servers. All operations in Expand clients are based on RPCs and NFS protocol. The first prototype of Expand is a user-level implementation, through a library that must be linked with the applications. Expand provides a global name space in all cluster.
Next sections describe data distribution, file structure, naming, metadata management, and parallel access to files in Expand.
Data Distribution
Naming
The Structure of Expand Files
Metadata management
Parallel access
User Interface
Expand offers two different interfaces. The first interface is based on POSIX system call. This interface, however, is not appropriate for parallel applications using strided patterns with small access size. Parallel applications can also used Expand with MPI-IO. Expand have been integrated inside ROMIO and can be used with MPICH (see Figure 5). Portability in ROMIO is achieved using an abstract-device interface for IO (ADIO).

ADIO
Configuration
The platform used in the evaluation
AUTORS
- Jesús Carretero Pérez
- Luis Miguel Sánchez García
- Félix García Carballeira
- Borja Bergua Guerra
- Alejandro Calderón Mateos
- Javier Fernández Muñoz
PUBLICATIONS
- Articles related with Expand
- Other articles using Expand