Curve文件系统元数据管理© XXX Page 1 of 24 Curve文件系统元数据管理(已实现)© XXX Page 2 of 24 1. 2. 3. 4. Inode 1、设计一个分布式文件系统需要考虑的点: 2、其他文件系统的调研总结 3、各内存结构体 4、curve文件系统的元数据内存组织 4.1 inode定义: 4.2 dentry的定义: 4.3 内存组织 5 元数据分片 hardlink:生成一个hardlink /B/E,指向文件/A/C 6、curve文件系统的多文件系统的设计 1、设计一个分布式文件系统需要考虑的点: 文件系统的元数据是否全缓存? 元数据持久化在单独的元数据服务器上?在磁盘上?在volume上? inode+dentry方式?当前curve块存储的kv方式? 是否有单独的元数据管理服务器? 2、其他文件系统的调研总结 fs 中心化元数据 内存namespace元数据 内存namespace元数据 内存空间分配元数据 元数据持久化 元数据扩展 小文件优化 空间管理单位 数据持久化 其他© XXX Page 3 of 24 moosefs(mfs) 有元数据服务器 全内存 fsnode → hashtable(inode id) fsedge → hashtable (parent inode + name) 全内存 chunk → hashtable(chunk id)0 码力 | 24 页 | 204.67 KB | 6 月前3
Curve文件系统空间分配方案Curve文件系统空间分配方案(基于块的方案,已实现)© XXX Page 2 of 11 背景 本地文件系统空间分配相关特性 局部性 延迟分配/Allocate-on-flush Inline file/data 空间分配 整体设计 空间分配流程 特殊情况 空间回收 小文件处理 并发问题 文件系统扩容 接口设计 RPC接口 空间分配器接口 背景 根据 ,文件系统基于当前的块 ,文件系统基于当前的块进行实现,所以需要设计基于块的空间分配器,用于分配并存储文件数据。 CurveFS方案设计(总体设计,只实现了部分) 本地文件系统空间分配相关特性 局部性 尽量分配连续的磁盘空间,存储文件的数据。这一特性主要是针对HDD进行的优化,降低磁盘寻道时间。 延迟分配/Allocate-on-flush 在sync/flush之前,尽可能多的积累更多的文件数据块才进行空间分配,一方面可以提高局部性,另一方面可以降低磁盘碎片。 几百字节的小文件不单独分配磁盘空间,直接把数据存放到文件的元数据中。 针对上述的本地文件系统特性,Curve文件系统分配需要着重考虑 。 局部性 虽然Curve是一个分布式文件系统,但是单个文件系统的容量可能会比较大,如果在空间分配时,不考虑局部性,inode中记录的extent数量很多,导致文件系统元数据量很大。© XXX Page 3 of 11 假如文件系统大小为1PiB,空间分配粒度为1MiB,inode中存储的0 码力 | 11 页 | 159.17 KB | 6 月前3
Curve文件系统元数据Proto(接口定义)XXX Page 1 of 15 curve文件系统元数据proto(代码接口定义,已实现)© XXX Page 2 of 15 1、代码结构和代码目录 curve文件系统是相对于curve块设备比较独立的一块,在当前curve项目的目录下,增加一个一级目录curvefs,curvefs下有自己独立的proto\src\test。 2、文件系统proto定义 2.1 mds.proto0 码力 | 15 页 | 80.33 KB | 6 月前3
Curve文件系统元数据持久化方案设计0 码力 | 12 页 | 384.47 KB | 6 月前3
TGT服务器的优化TGT 服务器的优化块设备协议 • NBD • Linux专有块设备协议 • iSCSI • 广泛支持的外部设备协议(块,磁带等)Curve云原生存储支持块设备 • 通过NBD,只支持Linux • 通过SDK API,目前只支持Linux • PFS • 扩大使用范围 • 通过iSCSI支持更多系统,例如Windows, 类UNIX系统等,使用两项基础 技术 • TCP/IP open-iscsi, iscsiadm --mode node -RDPO & FUA • DPO是disable page out的缩写,FUA是force unit access的缩写 • FUA可以让某些文件系统在做写操作时,不需要提交一个SCSI FLUSH COMMAND,提高性能 • 已经修改TGT,让驱动可以声明自己是否支持DPO & FUA • 由于增加的Curve 驱动没有本地cache,所以DPO 多个target时,如果挂的设备多,一旦客户端请求量大,就会忙不过来。 • 开源界有尝试修改 • 例如sheepdog的开发者提交过一个patch,但是测试效果不理想,分析 原因,event loop依然是瓶颈对TGT的性能优化 • IO是使用多个epoll 线程,充分发挥多CPU能力 • 当前策略是每个target一个epoll线程,负责Initiator发过来的I/O • 好处是各target上的CPU使用由OS负责分配,CPU分配粒度更细0 码力 | 15 页 | 637.11 KB | 6 月前3
openEuler 22.03 LTS SP2 技术白皮书希望与广大生态伙伴、用户、开发者一起,通过联合创新、社区共建,不断增强场景化能力,最终实现统 一操作系统支持多设备,应用一次开发覆盖全场景。 openEuler 覆盖全场景的创新平台 开源操作系统的构建过程,也是供应链聚合优化的过程。拥有可靠开源软件供应链,是大规模商用操作系统的基础。 openEuler 从用户场景出发,回溯梳理相应的软件依赖关系,理清所有软件包的上游社区地址、源码和上游对应验证。完 成构建验证、 容器化部署、运维,提供与业务容器一致的基于 K8S 的管理体验。 • 安全容器方案:iSulad+shimv2+StratoVirt 安全容器方案,相比传统 Docker+Qemu 方案,底噪和启动时间优化 40%。 • 双平面部署工具 eggo:ARM/X86 双平面混合集群 OS 高效一键式安装,百节点部署时间 <15min。 新场景 • 边缘计算:发布面向边缘计算场景的版本 openEuler RISC-V 龙芯 x86 � 软实时 行业应用 工控 机器人 电力 � 嵌入式虚拟化 Linux 5.10 内核 调度/内存/文件系统/... 分布式软总线 Linux 生态 硬实时应用 硬实时 实时内核 工具体系 统一构建系统 IDE DFX 体系 性能优化 调试 维测 SDKs 仿真 统一 元数据表达 构建 DSL 统一 执行引擎 混合部署框架 11 openEuler0 码力 | 48 页 | 5.62 MB | 1 年前3
openEuler 21.09 技术白皮书景。 openEuler 对 Linux Kernel 的持续贡献 openEuler 内核研发团队持续贡献 Linux Kernel 上游社区,回馈主要集中在:芯片架构、ACPI、内存管理、文件系统、 Media、内核文档、针对整个内核质量加固的 bug fix 及代码重构等内容。十余年来总计向社区贡献 17000+ 补丁。 在 Linux Kernel 5.10 和 5.14 版本中,openEuler 版本中,openEuler 内核研发团队代码贡献量排名全球第一。坚持内核创新,持续贡献 上游社区。 openEuler 开放透明的开源软件供应链管理 开源操作系统的构建过程,也是供应链聚合优化的过程。拥有可靠开源软件供应链,是大规模商用操作系统的基础。 openEuler 从用户场景出发,回溯梳理相应的软件依赖关系,理清所有软件包的上游社区地址,源码和上游对应验证。完成 构建验证、分发、实 云原生调度增强:针对云场景在线和离线业务混合部署场景,创新 CPU 调度算法保障在线业务对 CPU 的实时抢占及抖动 抑制,创新业务优先级 OOM 内存回收算法保障在线业务安全可靠运行。 • 新文件系统 EulerFS:面向非易失性内存的新文件系统,采用软更新、目录双视图等技术减少文件元数据同步时间, 提升文件读写性能。 • 内存分级扩展 etMem:新增用户态 swap 功能,策略配置淘汰的冷内存交换到用户态存储,用户无感知,性能0 码力 | 35 页 | 3.72 MB | 1 年前3
openEuler 24.03 LTS 技术白皮书现统一操作系 统支持多设备,应用一次开发覆盖全场景。 openEuler 覆盖全场景的创新平台 服务器 云计算 边缘 嵌入式 基础公共服务 服务器 开源操作系统的构建过程,也是供应链聚合优化的过程。拥有可靠开源软件供应链,是大规模商用操作系统的基础。 openEuler 从用户场景出发,回溯梳理相应的软件依赖关系,理清所有软件包的上游社区地址、源码和上游对应验证。完成构建验证、 容器化部署、运维,提供与业务容器一致的基于 K8S 的管理体验。 • 安全容器方案:iSulad+shimv2+StratoVirt 安全容器方案,相比传统 Docker+QEMU 方案,底噪和启动时间优化 40%。 • 双平面部署工具 eggo:Arm/x86 双平面混合集群 OS 高效一键式安装,百节点部署时间 <15min。 新场景 • 边缘计算:发布面向边缘计算场景的版本 openEuler 等硬件 SDK,以及 TensorFlow、PyTorch 等相应的 AI 框架软件,支持 AI 应用在 openEuler 上高效开发与运行。 2. openEuler AI 软件栈容器化封装优化环境部署过程,并面向不同场景提供以下三类容器镜像。 OS for AI • SDK 镜像:以 openEuler 为基础镜像,安装相应硬件平台的 SDK,如 Ascend 平台的 CANN 或 NVIDIA0 码力 | 45 页 | 6.18 MB | 1 年前3
Debian 参考手册(版本 2.109). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.2 类 Unix 文件系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.2.2 文件系统深入解析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2.3 文件系统权限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.3.8 MC 中的虚拟文件系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.4 类 Unix0 码力 | 261 页 | 1.39 MB | 1 年前3
Linux Lab v1.1 中文手册. . . . . . . . . . . . . . . . . . . 42 3 欢迎加入 Linux Lab 用户组,联系微信:tinylab,公众号:泰晓科技 4.5 Rootfs 文件系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4.6 Linux 与 U-Boot 调试 . . . U-Boot,Linux, Buildroot,QEMU。支持 Linux v0.11, v2.6.10 ~ v5.x 3 预置组件 提供上述组件的预先编译版本,并按开发板分类存放,可即时下载使用 4 根文件系统 支持 initrd,harddisk,mmc 和 nfs; ARM 架构提供 Debian 系统 5 Docker 包括 gcc-4.3 在内的交叉工具链已预先安装,还可灵活配置并下载外部交叉工具链 fig)、根文件系统 (rootfs)以及一些测试脚本。但在当时的条件下,所有的工作只是简单地归档在一个目录下,并 没有从整体上将它们组织起来。 1.5.3 项目诞生 这些工作成果在我的硬盘里闲置了好多年,直到我遇到了 noVNC 和 Docker,并基于这些新 技术开发了第一个 Linux 0.11 Lab,此后,为了将此前开发的那些零散的脚本、内核配置文件、 根文件系统和测试脚本整合起来,我开发了0 码力 | 70 页 | 1.53 MB | 1 年前3
共 109 条
- 1
- 2
- 3
- 4
- 5
- 6
- 11













