Curve文件系统空间分配方案
0; }; using Extents = std::vector; class Allocator { public: Allocator(...) {} virtual ~Allocator() = default;© XXX Page 10 of 11 /** * @brief * * @param size uint64_t */ virtual uint64_t Allocate(uint32_t size, const AllocateHint& allocateHint, Extents* extents) = 0; /** * @brief */ virtual void Deallocate(const Extents& extents) = 0; /** * @brief */ virtual bool MarkUsed(const Extents& extents) = 0; /** * @brief */ virtual bool MarkUsable(const Extents& extents) = 0; /** 0 码力 | 11 页 | 159.17 KB | 5 月前3CurveBS IO Processing Flow
topology structure of CURVE. CurveBS uses the central node Metadata Server (MDS) to manage virtual disk mapping and data replicas distribution. Decentralization currently leads to excessive complexity rollback from snapshot CurveBS data organization Data organization of virtual block device in CurveBS1. CurveBS maps the virtual block device to a file. For example, block device /dev/sda corresponds support 4KB aligned read/write on block devices.CurveBS file structure of virtual block device As mentioned above, CurveBS maps virtual block devices to files. Let's look at the metadata for a file in CurveBS0 码力 | 13 页 | 2.03 MB | 5 月前3CurveFS对接S3方案设计
S3Client() {} virtual ~S3Client() {} virtual void Init(curve::common::S3AdapterOption option) = 0; virtual int Upload(std::string name, const char* buf, uint64_t length) = 0; virtual int Append(std::string Append(std::string name, const char* buf, uint64_t length) = 0; virtual int Download(std::string name, char* buf, uint64_t offset, uint64_t length) = 0; }; metaserver.proto enum FileType { TYPE_DIRECTORY0 码力 | 11 页 | 145.77 KB | 5 月前3CurveFS S3本地缓存盘方案
class DiskCacheManagerImpl : public DiskCacheManager{ public: DiskCacheManagerImpl(); virtual ~DiskCacheManagerImpl() { TrimStop(); } int Init(const std::string cacheDir); maxCachedObj; // ? bthread::Mutex mtx_; }; class DiskCacheWrite { public: DiskCacheWrite() {} virtual ~DiskCacheWrite() { AsyncUploadStop(); } int WriteDiskFile(std::string fullWriteDir std::string CacheDir_; }; class DiskCacheRead { public:© XXX Page 7 of 9 DiskCacheRead() {} virtual ~DiskCacheRead() {} int ReadDiskFile(std::string name, char* buf, uint64_t offset, uint64_t0 码力 | 9 页 | 150.46 KB | 5 月前3OID CND Asia Slide: CurveFS
Chunkserver is a service instance on a physical serverCurve metadata organization Curve maps virtual block devices to files Each file contains chunks scattered across storage nodes in the cluster0 码力 | 24 页 | 3.47 MB | 5 月前3Curve支持S3 数据缓存方案
chunkPos_(chunkPos), len_(len) { data_ = new char[len]; memcpy(data_, data, len); } virtual ~DataCache() { delete data_; data_ = NULL; } void Write(uint32_t cachePos0 码力 | 9 页 | 179.72 KB | 5 月前3Curve文件系统元数据管理
libfastcommon,https://github.com/happyfish100/libfastcommon/tr ,(LGPL) ee/master/src hash table O(1)~O(n) O(n) + table 需要占用额外空间,性能和hash表的大小有关,最理想可以达到O(1)复杂度,最差O(n)复杂度。 c++ stl unordered_map moose,使用c实现0 码力 | 24 页 | 204.67 KB | 5 月前3CurveFs 用户权限系统调研
root@pubbeta2-curve5:/home/nbs# apt policy acl acl: Installed: (none) Candidate: 2.2.52-3+b1 Version table: 2.2.52-3+b1 500 500 http://debian.hz.netease.com/debian-current stretch/main amd64 Packages 间、安全命名空间以及系统命名空间。用户命名空间在命名或者内容上没有任何限制。系统命名空间主要被内核用于访问控制表上 。目前Linux 的 ACL 存储实现就是基于这种扩展属性的。 Inode Table中保存有若干个 Ext4_inode ,每个 Inode 大小为 ext4_super_block 中指定的 s_inode_size, 然而一个 Inode 不一定用到这么多的大小,节点信息只用到0 码力 | 33 页 | 732.13 KB | 5 月前3BRPC与UCX集成指南
so或lib的方式,可以集成到应用程序里 ●有完善的配置功能,ucx_info可以dump配置信息 ●有性能测试工具 ●比较详细的文档2223 UCS ●是一些工具代码,例如 –链表 –hash table –epoll event loop – memory register cache –config file24 UCT ●特点是比较原始,开销小,但是没有很强的功能 ●是网络接口层0 码力 | 66 页 | 16.29 MB | 5 月前3
共 9 条
- 1