Rust 程序设计语言 简体中文版 1.85.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.2. 数据类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 4.3. Slice 类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 10.1. 泛型数据类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .0 码力 | 562 页 | 3.23 MB | 23 天前3
curvefs client删除文件和目录功能设计1 当内核移除其inode cache时,会调用forget,此时lookup count需要减nlookup(forget的参数) 当umount时,所有lookup count减至0 不应该完全依赖forget接口去实现inode的移除,因为forget接口可能不会被内核调用(例如client崩溃) 相关调研 moosefs moosefs 未对接forget moosefs 实现了在m moosefs使用了两种机制,来实现上述功能,分别是trash机制和reserve机制(最新版本叫sustained),两种机制如下: trash机制: 对于所有TYPE_FILE类型的文件在删除时, ,则不会立即将该文件彻底删除,而是将其类型修改为TYPE_TRASH并且将该节点从文件树移除然后放到trash链表中表示该文件已经进入回收 若其trashtime大于0 站。 通过META文件系统来访问trash serve中。 sustained机制/reserve机制 当一个trashtime等于0的TYPE_FILE类型的文件被一个客户端正在打开,而同时有另一个客户端要删除它时,此时master对该文件节点的处理是并不立即删除该文件而是设置为TYPE_RESERVED类型并将该fsn ode连接到reserved链表中,使该文件虽然已经从文件树中删除掉,但因为另一个正在打开该文件的客户端因为持有该节点inodeid0 码力 | 15 页 | 325.42 KB | 6 月前3
CurveFS方案设计软/硬链接:目前是都不支持的。软链接可以通过标识文件类型解决;由于 prefix + parentid + filename 作为 key , filename 直接和 fileInfo 关联,硬链接无法支持 b. 性能 list:list在通用文件系统中是很常见的操作,目前 curve 的元数据缓存使用的 lru cache,因此 list 只能依赖 etcd 的 range 获取方式。如果需要对 获取方式。如果需要对 list 加速,需要新的缓存结构 c. 扩展性/可用性/可靠性 依赖于第三方kv存储,目前是etcd CurveFS 单机内存元数据设计 类似 fastcfs 和 moosefs 的元数据设计方式,采用通用的 dentry,inode 两层映射关系,所有的元数据都缓存在内存中,持久化在 binlog 文件中,binlog采用定期dump的方式删除。基于这种方式的开发: a. 性能 检查目的节点的父节点中是否有同名文件存在: 存在 若源节点类型为TYPE_DIRECTORY则对源节点目录下的所有子文件进行快照 若源节点类型为TYPE_FILE则开始比较源节点与目的节点的 inode 是否相同,若完全一样则说明目的节点已经是源节点的快照了不需要做任何处理, 否则删除目的节点,再创建新的 dentry 指向源节点的 inode 若源节点类型为TYPE_SYMLINK,重新设置目的节点与源节点保持一致0 码力 | 14 页 | 619.32 KB | 6 月前3
人工智能安全治理框架 1.0措施。关注安全风险发展变化,快速动态精准调整治理措施,持续优化治理机 制和方式,对确需政府监管事项及时予以响应。 1.3 技管结合、协同应对。面向人工智能研发应用全过程,综合运用技术、 管理相结合的安全治理措施,防范应对不同类型安全风险。围绕人工智能研发 应用生态链,明确模型算法研发者、服务提供者、使用者等相关主体的安全责 任,有机发挥政府监管、行业自律、社会监督等治理机制作用。 1.4 开放合作、共治共享。在全球范围推动人工智能安全治理国际合作, 共享最佳实践,提倡建立开放性平台,通过跨学科、跨领域、跨地区、跨国界 的对话和合作,推动形成具有广泛共识的全球人工智能治理体系。 2. 人工智能安全治理框架构成 基于风险管理理念,本框架针对不同类型的人工智能安全风险,从技术、 管理两方面提出防范应对措施。同时,目前人工智能研发应用仍在快速发展, 安全风险的表现形式、影响程度、认识感知亦随之变化,防范应对措施也将相 应动态调整更新,需要各方共同对治理框架持续优化完善。 和执行平台可能存在逻辑缺陷、- 5 - 人工智能安全治理框架 漏洞等脆弱点,还可能被恶意植入后门,存在被触发和攻击利用的风险。 (b)算力安全风险。人工智能训练运行所依赖的算力基础设施,涉及多源、 泛在算力节点,不同类型计算资源,面临算力资源恶意消耗、算力层面风险跨 边界传递等风险。 (c)供应链安全风险。人工智能产业链呈现高度全球化分工协作格局。 但个别国家利用技术垄断和出口管制等单边强制措施制造发展壁垒,恶意阻断0 码力 | 20 页 | 3.79 MB | 1 月前3
Curve核心组件之mds – 网易数帆本PageFile支持块设备、三副本AppendFile(待开发)支持在线对象存储、AppendECFile(待开发)支持 近线对象存储可以共存。 如上所示LogicalPool与pool为多对一的关系,一个物理pool可以存放各种类型的file。当然由于curve支持 多个pool,可以选择一个logicalPool独享一个pool。 通过结合curve的用户系统,LogicalPool可以通过配置限定特定user使用的方式,实现多个租户数据物理 Schedule(系统调度)是为了实现系统的自动容错和负载均衡,这两个功能是分布式 存储系统的核心问题,也是 curve 是否能上生产环境的决定因素之一。 • 自动容错保证常见异常(如坏盘、机器宕机)导致的数据丢失不依赖人工处理,可 以自动修复。 • 负载均衡和资源均衡保证集群中的磁盘、cpu、内存等资源的利用率最大化。SCHEDULE Schdedule的具体实现 Coordinator: 调度模块的对外接口。心跳会将0 码力 | 23 页 | 1.74 MB | 6 月前3
Curve质量监控与运维 - 网易数帆单个模块的误差积累是否会放大,从而 达到不可接受的程度。 功能测试 站在使用者的角度,对模块提供的功能进行完备 的测试。 异常测试 制造或模拟系统异常(磁盘错误、网络错误、资源 冲突等)、依赖服务异常、应用本身异常等非正常 情况,测试软件的性能和稳定性是否符合预期。 规模测试 测试模块在一定规模下是否能够正常工作,是否 会出现异常或者崩溃, 14/33系统测试 系统测试是 thread local存储,减少了cache bouncing,性能开销极小; 支持在 brpc server 服务的端口上以web portal的方式导出和查询监控指标: 常用的bvar数据类型: bvar::Adder: 计数器,默认0, varname << N相当于varname += N bvar::LatencyRecorder : 专用于记录延时和qps的变量。 0 码力 | 33 页 | 2.64 MB | 6 月前3
Curve核心组件之Client - 网易数帆请求会被拆分成两个子请求: ChunkIdx 1, off: 8M len 8M ChunkIdx 2, off: 0 len 8MCLIENT IO流程 子请求由哪个chunkserver处理,依赖以 下信息: 逻辑chunk与物理chunk映射关系 物理chunk所属的复制组(copyset) 复制组所在的chunkserver列表 复制组的leader信息CLIENT 放入任务队列后,异步请求发起成功,返回用户 IO拆分线程 4. 从任务队列取出任务后进行拆分 5. 拆分过程依赖元数据,可能会通过MDSClient向 MDS获取 6. 拆分成的子请求放入队列CLIENT IO线程模型 IO分发线程 7. 从队列中取出子请求准备发送 8. 发送依赖复制组leader,可能会向 Chunkserver查询复制组leader 9. 发送写请求给Chunkserver 热升级之前,QEMU是直接链接curve-client, 所以client版本需要升级时,需要对QEMU进 程进行重启。NEBD 整体介绍 在QEMU和Curve Client中间加入热升级模块,避 免直接依赖 热升级模块是CS结构: NEBD Client(part1):只包含轻量的业务逻辑, 以链接库的形式提供给QEMU使用 NEBD Server(part2):将NEBD Client的请求转0 码力 | 27 页 | 1.57 MB | 6 月前3
Curve元数据节点高可用提供配置共享和服务发现的系统比较多,其中最为大家熟知的就是zookeeper和etcd, 考虑当前系统中mds有两个外部依赖模块,一是mysql, 用于存储集群拓扑的相关信息;二是etcd,用于存储文件的元数据信息。而etcd可以用于实现mds高可用,没必要引入其他组件。 使用etcd实现元数据节点的leader主要依赖于它的两个核心机制: TTL和CAS。TTL(time to live)指的是给一个key设置一个 Campagin成功后再次获取竞选时使用的key值Leader/MDS2,获取失败,退出 MDS2 Campagin成功后再次获取竞选时使用的key值Leader/MDS3,获取失败,退出 这种情况可以被正确的处理,三个mds都退出,依赖daemon重新拉起,发起新一轮的MDS leader竞选。 4.2.4.4 总结 etcd集群发生leader选举的情况,会造成MDS出现双主或者一段时间内没有MDS提供服务的情况。© XXX0 码力 | 30 页 | 2.42 MB | 6 月前3
CurveFS Copyset与FS对应关系com/opencurve/curve/pull/495 增加copyset.proto 增加heartbeat.proto 增加topology.proto 8、inode和dentry的内存估算 类型 byte sizeof(dentry) 56 dentry的name字段,按照最大估算 256 sizeof(inode) 112 sizeof(volumeExtentList) 48 inode大小: 空的inode占用112 + 48 + 48 = 208B; 目录类型的inode占用208B; link类型的inode最大占用208 + 256 = 464B; volume file类型的inode,按照1w条extent估算,占用内存208 + 10000*56 = 560208B; s3 类型的inode,按照1w条s3info估算,占用内存208 + 10000*640 码力 | 19 页 | 383.29 KB | 6 月前3
CurveFs 用户权限系统调研问题1:root用户无法访问挂载目录 测试 allow_root 测试allow_other 参考文献 问题2:本地文件系统挂载默认是共享的? 问题3:文件系统访问控制是在哪一层实现的? 二、文件系统权限管理 文件类型 文件权限 特殊权限(SUID, SGID, STICKY) 文件默认权限umask 用户&用户组 文件系统用户权限管理 对mode的管理 对ACL(Access Control Lists)的管理 16 10:41 softlink -> file 文件类型 文件类型标识 文件类型 - 普通文件 d 目录文件 l 符号链接 s 套接字(伪文件) b 块设备(伪文件) c 字符设备(伪文件) p 管道(伪文件) 文件权限 文件权限分为三段:分别对应文件“属主权限”、“属组权限”、“其他用户权限” 权限标识 权限类型 - 无权限 r 读权限4 w 写权限2 x 执行权限10 码力 | 33 页 | 732.13 KB | 6 月前3
共 24 条
- 1
- 2
- 3













