
and got from grid node description table, and the third
is information that can be queried and got from vol-
ume object description table. The function bk-list-init
does a joint query to several tables in the database, get
as many attributes as the metadata can provide. The
function bk-list-print is for printing the bk-list struc-
ture.
In the god-stdlib.h header file, we have defined
server host names, globus gass server port for
url-copy, globus-personal-gatekeeper port and login
name, ldap server query port, ldap search base, file
system mounting points in grid nodes, etc.
To describe the grid node, we use sv-list structure
type. The library storage can be composed of several
volumes. There can be several grid nodes in each vol-
ume. When a book is copied into the library storage
system, firstly according to the volume attribute of the
book, there are several nodes can the possible place
where book will be copied into. And in each of these
nodes, there can be several file systems mounted. In
each node, some file systems are only used for oper-
ation system, such as swap area, system installation
partition. The file system that can be used on the li-
brary storage will named in a special way, including a
special mode that will be recognized and be taken as a
possible candidate for storing the new book. Starting
from the volume attribute of the new book, the func-
tion sv-list-init firstly query the metadata database to
get the nodes information belong to this volume, so
the sv-list structure has fields to store the total num-
ber of available nodes, and a list of recorder for each
of the grid node. Then function sv-list-init will try to
query the node object description table to get some
detail information about each node, such as node ip
address. Next step, the function sv-list-init will send
ldap query to mds server of each grid node, parse the
query result and get detailed node information, such
as total number of mounted file system, file system
name, free space, then we will further recognize the
file systems that can be used for book storage, fill all
the detailed file system information into each node
field of sv-list structure.
4.3 Functions and Operations
In ARCO system, there are many operations, which
can be taken to an object that can be in a different
abstraction level. In general, the library as an object,
different users and user groups have different permis-
sion to take actions on it. The library is composed by
volumes, some of which are mirroring backup of oth-
ers. In each volume there are several nodes. Every
node has several file systems can be used.
The function god-update is a low level operation,
which copy a new book to a proper file system or
update an old book that is already in the system. In
this function, volume attribute can be got from bk-list,
then by using volume attribute, sv-list can be initial-
ized, and we can get the proper file system for stor-
ing the book. The book will be tarred and transferred
to remote node, and then untarred. The procedure
of taring, transferring and untarring are staged to the
grid system as a job, so the command can be send
from a server, and actual operation can take place be-
tween other two remote nodes. If the volume of the
new book has a mirror volume, then the same pro-
cedure will also take place to the mirror volume for
real time backup. After the work has done, book in-
formation will insert into the table of book object de-
scription. For the time being, the scheduling policy
of god-update is ”largest capacity first”, which means
we always choose the server that has largest storage
capacity. We can also change the scheduling policy
by using different calling parameters.
The function god-cp is also a low level operation,
which just simply copies a book between two remote
nodes. The realization of this function is a much sim-
ple version of function god-update. The function god-
cp is used for copying a book between different work-
ing areas.
The function god-rm is for remove a book in a vol-
ume. In this function, we first find which node the
book locates in, then move the book to a temp delete
directory, and update the book status as deleted in
book description table. All of the procedures are sub-
mitted as remote jobs to grid system and take place in
remote nodes.
The function god-rc recovers a removed book in a
remote node. This function does reverse operation as
the function god-rm.
To every action, when the operation has finished,
the operation execution information (book name, size,
time costing in different procession stage, etc.) will be
recorded into the job information statistic database.
This is done by the statistic module, which collect
time benchmarks in different places of procession and
update the statistic database.
The module func-job-submit and url-copy provide
the programming interface to the globus[5-3][5-4]
fundamental service. The url-copy provides two dif-
ferent interfaces for remote file transfer and copy, re-
spectively for globus version 2.0 and globus version
2.2. The func-job-submit receives globus-personal-
gatekeeper port and login name, and job descrip-
tion rsl language sentence as the parameters. In our
prototype, all the operations that take place on re-
mote server are customized and submitted from local
server. The rsl description sentence defines job de-
tails, such as the name of executable, parameters, ex-
ecution environment demand, stdout and stderr, etc.
One of the project objectives is to provide the sys-
tem with scalability, so at any time, there are the pos-
sibility of adding in some new servers into the system
or shutting down and removing some servers from the
ARCO: MOVING DIGITAL LIBRARY STORAGE TO GRID COMPUTING
67