Curve支持S3 数据缓存方案CURVEFS_ERROR AllocS3ChunkId(uint32_t fsId); CURVEFS_ERROR GetInode(uint64_t inodeId, Inode *out); private: S3Client *client_; uint64_t blockSize_; uint64_t chunkSize_; std::string metaServerEps_; GetNextFileCacheManager(); void InitMapIter();© XXX Page 6 of 9 bool FsCacheManagerIsEmpty(); private: std::unordered_map fileCacheManagerMap_; // first is inodeid std::unordered_map ::iterator void ReleaseChunkCacheManager(uint64_t index); void ReleaseCache(); CURVEFS_ERROR Flush(); private: uint64_t fsId_; uint64_t inode_; std::map chunkCacheMap_; // first is index0 码力 | 9 页 | 179.72 KB | 6 月前3
CurveFS S3本地缓存盘方案*/ void TrimRun(); /** * @brief: stop trim thread. */ void TrimStop(); private: curve::common::Thread backEndThread_; curve::common::AtomicisRunning_; curve AsyncUploadRun(); /** * @brief: stop aync upload thread. */ void AsyncUploadStop(); private: curve::common::Thread backEndThread_; curve::common::Atomic isRunning_; // cu client rebootload all the file that store in disk. */ int loadAllCacheReadFile() {}; private: std::string CacheReadDir_;© XXX Page 8 of 9 }; 方案设计思考 本地硬盘如何管理 借用linux本地文件系统进行管理,存储进本地硬盘的内容以文件的形式来表现。 0 码力 | 9 页 | 150.46 KB | 6 月前3
CurveFs 用户权限系统调研/**© XXX Page 10 of 33 * Initialize filesystem * * The return value will passed in the private_data field of * fuse_context to all file operations and as a parameter to the * destroy() method kernel to preemptively fill its caches * when it anticipates that userspace will soon read more * data.© XXX Page 12 of 33 * * Asynchronous direct I/O requests are generated if * FUSE_CAP_ASYNC_DIO /dev/sdk dumpe2fs 1.43.4 (31-Jan-2017) Filesystem volume name:Last mounted on: /data/chunkserver16 Filesystem UUID: 5ba783e9-44bd-49ce-b8bc-b7ba0ef33531 Filesystem magic number: 0 码力 | 33 页 | 732.13 KB | 6 月前3
Curve文件系统元数据管理uint64_t length; // bool used; // // TODO: }; class Inode { public: Inode(); private: InodeId inode; uint64_t fsId; // uint32_t btime; /* birth / create time */ uint32_t *inode); void Delete(const InodeKey &key); void Update(const Inode &inode); int Count(); private: // Inodefsid + inodeid key std::unordered_mapinodeMap_; // inode Dentry &dentry); DentryKey GetKey(InodeId parentId, std::string &name); int Count(); private: // dentryfsid + parentid + namekey std::unordered_map dentryRecordMap_; 0 码力 | 24 页 | 204.67 KB | 6 月前3
CurveFS对接S3方案设计buf); int read(Inode *inode, uint64_t offset, uint64_t length, char* buf); private: S3Client* client_; uint64_t blockSize_; uint64_t chunkSize_; }; //s3 class S3Client { auto id = chunkId_.fetch_add(1, std::memory_order_relaxed); return id; } private: std::atomicchunkId_;© XXX Page 10 of 11 }; 关键流程 关键流程包括S3ClientAdaptor的init,wr 0 码力 | 11 页 | 145.77 KB | 6 月前3
Curve文件系统元数据持久化方案设计on_snapshot_load // ... private: std::string EncodeJournal(OpType opType, const std::string& key, const std::string& value=""); bool WriteJournal(const std::string& message); private: map0 码力 | 12 页 | 384.47 KB | 6 月前3
CurveBS IO Processing Flowoverall architecture, data organization and topology structure of CURVE. CurveBS uses the central node Metadata Server (MDS) to manage virtual disk mapping and data replicas distribution. persists the data in ETCD l Collect cluster status and schedule. 2. Chunkserverl Responsible for data storage l Multi-replicas consistency 3. The client l Provides read and write data interfaces metadata l Interacts with the chunkServer to read and write data 4. Snapshotcloneserver l Independent of core services l Snapshot data is stored in object storage which supports S3 apis. Therefore0 码力 | 13 页 | 2.03 MB | 6 月前3
Estimation of Availability and Reliability in CurveBSprotocol to maintain consistency of stored data. It generally takes the form of 3 replicas of data. If one replica fails, the system can read and write data successfully on the other two replicas. When Assume that the total number of disks in Curve system is N, the number of replicas is R, and the data recovery Time in the case of failed disks is T. The Annual Failure Rate of disks is AFR, and the the data on one disk is distributed in about 50 copysets, which means when a disk fails, up to 50 other disks will restore the data on that disk at the same time. According to this, the data recovery0 码力 | 2 页 | 34.51 KB | 6 月前3
Curve for CNCF Mainhigh performance cloud native file systemUse Cases • Container • Database • Data apps(middleware/bigdata/ai) • Data backupContainer • Aggregates underlying storage in the cloud (AWS EBS, AWS S3 container-native storageDatabase • Database services orchestrated in the cloud • Curve can backup / sync data to slave cloud • When master cloud failure happens, Database service can move to the slave access data by POSIX interface • Infrequent data is moved to OSS, and frequent data is moved to high speed storage transparentlyData backup • Curve (CurveBS, CurveFS) can backup data to remote0 码力 | 21 页 | 4.56 MB | 6 月前3
OID CND Asia Slide: CurveFSProblems for stateful apps ○ storage capacity expansion ○ capacity imbalance ○ apps bundled with data locations ● Requirements for elastic block storage ● Requirements for file systemopen-source storage cluster with 1200 disks (each have MTBF 1.2 million hours) 3 replicas Restore data on a disk within 5 minutes Data availability of 6 nines can be achievedCloud native Support Currently we offer algorithm ● Raft Consistency protocol High performance ● pre-created file pool ● data strip like RAID ● Zero data copy ● RDMA Cloud NativeCluster topology The physical pool is used to physically0 码力 | 24 页 | 3.47 MB | 6 月前3
共 22 条
- 1
- 2
- 3













