没有任何数据可供显示
开源项目社区 | 当前位置 : |
|
www.trustie.net/open_source_projects | 主页 > 开源项目社区 > friendfs |
friendfs
|
0 | 0 | 0 |
贡献者 | 讨论 | 代码提交 |
Right now a hard drive is so cheap that I know several friends that have lot of hard drive space they dont use. The goal of FriendFS is to have a file system where redundancy is handled by the distribution of the same files to several places.
IntroductionRight now a hard drive is so cheap that I know several friends that have lot of hard drive space they dont use. The goal of FriendFS is to have a file system where redundancy is handled by the distribution of the same files to several places.
Spreading of filesAll files stored in the FriendFS is spread out to the storage servers available in an even manner. The files are split into blocks and these are encrypted before being stored in a storage. The file system handles the file system information but this is replicated to storage servers as well.
Storage serversA storage server can be any supported form of storage, remote or local. The servers are configured in the FriendFSConf. Each storage server configuration contains information on how to reach the storage, the block size to use, verification interval and maximum storage capacity set. Supported formats planned:
Local directory FTP server WebDAV server SMB server SSH server
File systemThe file system is available as a FUSE file system that you can mount in any path. The status if the file system is available in the file .friendfs_status in a mounted file system. The file system is POSIX compatible and handles permission in the same way as ext2. All files are split into blocks and stored on the storage servers. Each directory in the file system can have different configuration in regards to: Replication level
ReplicationThe replication level for a file is determined by the setting of the directory where the file is stored. The FriendFS will store the blocks in that number of storage servers as the redundancy level is set to. If a storage server is unavailable replication of the blocks will be scheduled.
FlowCreate filecall to FriendFS FUSE: create create an entry in the file system for the file in the directory Schedule replication of File system Write to fileCall to FUSE write If any data in that possition schedule removal of that block Split data into blocks Encrypt data with key Sign data using key Store signature for block in FS Store data in highest priority storage Store block data in file system Update mtime for file Schedule replication of file system Schedule replication of block Read from fileCall FUSE read Fetch block from highest priority storage return data Store in storageconnect to storage store block as file using signature as filename Read from storageConnect to storage Fetch file using signature as filename Verify storageConnect to storage List files in dir Compare to signature list for storage Schedule delete of removed blocks Schedule replication of missing blocks Replicate blockFind highest priority storage Read block from storage Write block to new storage SchedulerAdd verification interval for each storage in queue Perform action in queue. Replicate FSRegain FS after crash