- 论坛徽章:
- 0
|
Unix下针对邮件,搜索,网络硬盘等海量存储的分布式文件系统项目
Here is my suggestion
A client connects to the cluster through an Access Point (AP)
File Data Servers (each one called a node)
- files/copyes are identified by an uniquie ID and DELTA (version of the copy)
- node stores only whole files (no idea how to implement striping yet)
- don`t bother with any directory structure
Database Servers
- Implement directories and directory tree, hold information for file
ID and DELTA
Meta data server
- gather node`s traffic/freespace/resource load
- hold nodes` file list (node, file ID, file DELTA, popularity), so we
know where each copy is and it`s version
- all read/write requests go through them
Unit - MDS with all nodes that belong to it
Control servers (CS)
- move/replicate/delete copies accross the cluster, implement
traffic/freespace/load balancing accross the cluster
- takes care for the number of copies present and delta. if a file is
very popular then make more copies and spread them accross less
traffic loaded nodes. if not much popular remove some copies from
heavy traffic loaded nodes
- make sure that there are N copies on different units (we do not want
to have several copies over one Unit because when unit`s mds crashes
we may encounter a situation when there is no available copy present
in the cluster)
- holds list of MDS and their load
- takes care wich MDS a node will use (node may change MDS on the fly?)
On client write:
1) AP asks DBS for the file ID and DELTA
2) AP puts a request to MDS for writing
3) MDS looks where copies of the file (ID and DELTA) are and returns
the address of the node with appropriate load (also mark that copy
with write flag)
4) client (or AP - don`t know now which one is appropriate) connects
to the node and performs the write
5) after the write the node informs MDS of the successful write
6) MDS removes the write flag of the copy, MDS updates the DELTA, MDS
informs DBS of the DELTA change
7) inform CS for the event (CS initiates copies update to the new DELTA)
On client read:
1) AP asks DBS of the file ID and DELTA
2) AP puts read request to MDS
3) MDS looks where copies of the file (ID&DELTA) are and returns the
address of the node with appropriate load
4) client (or AP) connects to the node and performs read
On client read/write dir:
1) AP informs DBS
2) if file removal: DBS puts removal request ot CS
Copies update:
1) CS puts request to MDS for writing
2) MDS looks where copies of the file (ID and DELTA) are and returns
the address of the node with appropriate load (also mark that copy
with write flag)
3) CS informs the node to update the file (gives file ID and the
address of the node form which ot update)
Each node is connected to one MDS (on MDS crash go to another MDS).
on new node/MDS down
1) the node puts a broadcast
2) CS tells which MDS to use
MDS are interconnected (maybe some sort of a tree, don`t have an idea yet)
DBS - no idea for the connection yet
CS - some sort of communication, so we can avoid:
* several CS initiate same action on one node
MDS checks child node`s availability
on node down, mark his file list as inaccessible. after N minutes of
an unavailability remove file list
on new node/node up, node sends file list ot the MDS
Well that is all from me, thank you for reading all this. I hope you
will find something useful in my idea.
Best regards
Momchil |
|