 CurveFs 用户权限系统调研CurveFs 用户权限系统调研(已实现)© XXX Page 2 of 33 一、Curvefs测试 1. 启动curvefs 问题1:root用户无法访问挂载目录 测试 allow_root 测试allow_other 参考文献 问题2:本地文件系统挂载默认是共享的? 问题3:文件系统访问控制是在哪一层实现的? 二、文件系统权限管理 文件类型 文件权限 特殊权限(SUID, SGID STICKY) 文件默认权限umask 用户&用户组 文件系统用户权限管理 对mode的管理 对ACL(Access Control Lists)的管理 ACL Access Entry保存在哪? ACL的表示 内存中的ACL 是如何与具体的 Inode 相关联 如何存储和获取ACL信息 Inode权限校验 chmod、chown、setfacl、getfacl接口文件系统自己如何实现 结论: XXX Page 4 of 33 查阅资料发现这是fuse的一种安全策略,默认是只有filesystem owner拥有该文件系统的访问权限,如果想要其他用户有权访问,需要在挂载参数中指定‘-o allow-root’ 或'-o allow-other'以允许相应用户有权访问该文件系统,如果挂载者不是root还需要在/etc/fuse.conf(/usr/local/etc/fuse.conf)中增0 码力 | 33 页 | 732.13 KB | 6 月前3 CurveFs 用户权限系统调研CurveFs 用户权限系统调研(已实现)© XXX Page 2 of 33 一、Curvefs测试 1. 启动curvefs 问题1:root用户无法访问挂载目录 测试 allow_root 测试allow_other 参考文献 问题2:本地文件系统挂载默认是共享的? 问题3:文件系统访问控制是在哪一层实现的? 二、文件系统权限管理 文件类型 文件权限 特殊权限(SUID, SGID STICKY) 文件默认权限umask 用户&用户组 文件系统用户权限管理 对mode的管理 对ACL(Access Control Lists)的管理 ACL Access Entry保存在哪? ACL的表示 内存中的ACL 是如何与具体的 Inode 相关联 如何存储和获取ACL信息 Inode权限校验 chmod、chown、setfacl、getfacl接口文件系统自己如何实现 结论: XXX Page 4 of 33 查阅资料发现这是fuse的一种安全策略,默认是只有filesystem owner拥有该文件系统的访问权限,如果想要其他用户有权访问,需要在挂载参数中指定‘-o allow-root’ 或'-o allow-other'以允许相应用户有权访问该文件系统,如果挂载者不是root还需要在/etc/fuse.conf(/usr/local/etc/fuse.conf)中增0 码力 | 33 页 | 732.13 KB | 6 月前3
 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 元数据分片 照parentid分片 5.1.1 场景分析 查找:查找/A/C。 创建:/A/C不在,创建/A/C 删除文件:删除/A/C 删除目录:删除/A rename:rename /A/C到/B/E symbolic link: hardlink:生成一个hardlink /B/E,指向文件/A/C list:遍历/A目录 5.1.2 好处 5.1.2 问题 5.2 分片方式二:Inode按照i hardlink:生成一个hardlink /B/E,指向文件/A/C 6、curve文件系统的多文件系统的设计 1、设计一个分布式文件系统需要考虑的点: 文件系统的元数据是否全缓存? 元数据持久化在单独的元数据服务器上?在磁盘上?在volume上? inode+dentry方式?当前curve块存储的kv方式? 是否有单独的元数据管理服务器? 2、其他文件系统的调研总结 fs 中心化元数据 内存namespace元数据0 码力 | 24 页 | 204.67 KB | 6 月前3 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 元数据分片 照parentid分片 5.1.1 场景分析 查找:查找/A/C。 创建:/A/C不在,创建/A/C 删除文件:删除/A/C 删除目录:删除/A rename:rename /A/C到/B/E symbolic link: hardlink:生成一个hardlink /B/E,指向文件/A/C list:遍历/A目录 5.1.2 好处 5.1.2 问题 5.2 分片方式二:Inode按照i hardlink:生成一个hardlink /B/E,指向文件/A/C 6、curve文件系统的多文件系统的设计 1、设计一个分布式文件系统需要考虑的点: 文件系统的元数据是否全缓存? 元数据持久化在单独的元数据服务器上?在磁盘上?在volume上? inode+dentry方式?当前curve块存储的kv方式? 是否有单独的元数据管理服务器? 2、其他文件系统的调研总结 fs 中心化元数据 内存namespace元数据0 码力 | 24 页 | 204.67 KB | 6 月前3
 Curve文件系统空间分配方案11 Curve文件系统空间分配方案(基于块的方案,已实现)© XXX Page 2 of 11 背景 本地文件系统空间分配相关特性 局部性 延迟分配/Allocate-on-flush Inline file/data 空间分配 整体设计 空间分配流程 特殊情况 空间回收 小文件处理 并发问题 文件系统扩容 接口设计 RPC接口 空间分配器接口 背景 根据 ,文件系统基于当前的 ,文件系统基于当前的块进行实现,所以需要设计基于块的空间分配器,用于分配并存储文件数据。 CurveFS方案设计(总体设计,只实现了部分) 本地文件系统空间分配相关特性 局部性 尽量分配连续的磁盘空间,存储文件的数据。这一特性主要是针对HDD进行的优化,降低磁盘寻道时间。 延迟分配/Allocate-on-flush 在sync/flush之前,尽可能多的积累更多的文件数据块才进行空间分配,一方面可以提高局部性,另一方面可以降低磁盘碎片。 file/data 几百字节的小文件不单独分配磁盘空间,直接把数据存放到文件的元数据中。 针对上述的本地文件系统特性,Curve文件系统分配需要着重考虑 。 局部性 虽然Curve是一个分布式文件系统,但是单个文件系统的容量可能会比较大,如果在空间分配时,不考虑局部性,inode中记录的extent数量很多,导致文件系统元数据量很大。© XXX Page 3 of 11 假如文件系统大小为1PiB,0 码力 | 11 页 | 159.17 KB | 6 月前3 Curve文件系统空间分配方案11 Curve文件系统空间分配方案(基于块的方案,已实现)© XXX Page 2 of 11 背景 本地文件系统空间分配相关特性 局部性 延迟分配/Allocate-on-flush Inline file/data 空间分配 整体设计 空间分配流程 特殊情况 空间回收 小文件处理 并发问题 文件系统扩容 接口设计 RPC接口 空间分配器接口 背景 根据 ,文件系统基于当前的 ,文件系统基于当前的块进行实现,所以需要设计基于块的空间分配器,用于分配并存储文件数据。 CurveFS方案设计(总体设计,只实现了部分) 本地文件系统空间分配相关特性 局部性 尽量分配连续的磁盘空间,存储文件的数据。这一特性主要是针对HDD进行的优化,降低磁盘寻道时间。 延迟分配/Allocate-on-flush 在sync/flush之前,尽可能多的积累更多的文件数据块才进行空间分配,一方面可以提高局部性,另一方面可以降低磁盘碎片。 file/data 几百字节的小文件不单独分配磁盘空间,直接把数据存放到文件的元数据中。 针对上述的本地文件系统特性,Curve文件系统分配需要着重考虑 。 局部性 虽然Curve是一个分布式文件系统,但是单个文件系统的容量可能会比较大,如果在空间分配时,不考虑局部性,inode中记录的extent数量很多,导致文件系统元数据量很大。© XXX Page 3 of 11 假如文件系统大小为1PiB,0 码力 | 11 页 | 159.17 KB | 6 月前3
 curvefs client删除文件和目录功能设计© XXX Page 1 of 15 curvefs client 删除文件和目录功能设计© XXX Page 2 of 15 背景 相关调研 moosefs chubaofs 方案设计思考 1.Trash机制是实现1个(类似chubaofs),还是2个(类似moosefs)? 2. Trash放在哪里? 3. 是否需要做session机制(在metaserver打开),来维护inode的打开情况? ret; } 存在两个问题: 一是删除时nlink字段未考虑: 文件的nlink用于实现hard link。 hard link使用nlink字段表示文件的link的引用计数,第一次创建文件是nlink字段为1。每创建一个新的指向该文件的hard link时,nlink字段+1, 每删除一个hard link或指向的原文件时,nlink字段-1。© XXX Page 4 of 15 当nl 删除inode。 目录的nlink字段与文件的nlink字段不同, , 并且在目录下, , 删除目录nlink相应的减1。 目录的nlink字段初始值为2 每创建一个新目录,nlink字段也会+1 目录不支持硬链接。 二是删除时lookup count未考虑: lookup count 指的是文件的访问计数。当文件/目录被打开时, ,该文件/目录仍然可以被打开的进程访问,不会造成崩溃或报错,我们的curvefs也需要实现0 码力 | 15 页 | 325.42 KB | 6 月前3 curvefs client删除文件和目录功能设计© XXX Page 1 of 15 curvefs client 删除文件和目录功能设计© XXX Page 2 of 15 背景 相关调研 moosefs chubaofs 方案设计思考 1.Trash机制是实现1个(类似chubaofs),还是2个(类似moosefs)? 2. Trash放在哪里? 3. 是否需要做session机制(在metaserver打开),来维护inode的打开情况? ret; } 存在两个问题: 一是删除时nlink字段未考虑: 文件的nlink用于实现hard link。 hard link使用nlink字段表示文件的link的引用计数,第一次创建文件是nlink字段为1。每创建一个新的指向该文件的hard link时,nlink字段+1, 每删除一个hard link或指向的原文件时,nlink字段-1。© XXX Page 4 of 15 当nl 删除inode。 目录的nlink字段与文件的nlink字段不同, , 并且在目录下, , 删除目录nlink相应的减1。 目录的nlink字段初始值为2 每创建一个新目录,nlink字段也会+1 目录不支持硬链接。 二是删除时lookup count未考虑: lookup count 指的是文件的访问计数。当文件/目录被打开时, ,该文件/目录仍然可以被打开的进程访问,不会造成崩溃或报错,我们的curvefs也需要实现0 码力 | 15 页 | 325.42 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文件系统元数据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文件系统元数据持久化方案设计© XXX Page 1 of 12 元数据持久化© XXX Page 2 of 12 前言 Raft Log Raft Snapshot 持久化文件 key_value_pairs 其他说明 实现 1、inode、entry 的编码 2、KVStore Q&A 单靠 redis 的 AOF 机制能否保证数据不丢失? redis 的高可用、高可扩方案? redis + muliraft 根据之前讨论的结果,元数据节点的架构如下图所示,这里涉及到两部分需要持久化/编码的内容: Raft Log:记录 operator log Raft Snapshot:将内存中的数据结构以特定格式 dump 到文件进行持久化© XXX Page 3 of 12 Raft Log +------+------------+-----+----------------+---------+----------+ ---+----------------+---------+ 持久化文件 字段 字节数 说明 CURVEFS 7 magic number(常量字符 "CURVEFS"),用于标识该文件为 curvefs 元数据持久化文件 version 4 文件版本号(当文件格式变化时,可以 100% 向后兼容加载旧版持久化文件) size 8 键值对数量 key_value_pairs / 键值对(当0 码力 | 12 页 | 384.47 KB | 6 月前3 Curve文件系统元数据持久化方案设计© XXX Page 1 of 12 元数据持久化© XXX Page 2 of 12 前言 Raft Log Raft Snapshot 持久化文件 key_value_pairs 其他说明 实现 1、inode、entry 的编码 2、KVStore Q&A 单靠 redis 的 AOF 机制能否保证数据不丢失? redis 的高可用、高可扩方案? redis + muliraft 根据之前讨论的结果,元数据节点的架构如下图所示,这里涉及到两部分需要持久化/编码的内容: Raft Log:记录 operator log Raft Snapshot:将内存中的数据结构以特定格式 dump 到文件进行持久化© XXX Page 3 of 12 Raft Log +------+------------+-----+----------------+---------+----------+ ---+----------------+---------+ 持久化文件 字段 字节数 说明 CURVEFS 7 magic number(常量字符 "CURVEFS"),用于标识该文件为 curvefs 元数据持久化文件 version 4 文件版本号(当文件格式变化时,可以 100% 向后兼容加载旧版持久化文件) size 8 键值对数量 key_value_pairs / 键值对(当0 码力 | 12 页 | 384.47 KB | 6 月前3
 古月《ROS入门21讲》19.launch启动文件的使用方法.pdf19.launch启动文件的使用方法 主 讲 人 : 古 月 Launch文件 Launch文件语法 • • • • Launch文件语法 • • • • Launch文件语法 • • • Launch示例 simple.launch turtlesim_parameter_config.launch Launch示例 start_tf_demo_c++.launch0 码力 | 8 页 | 1.03 MB | 1 年前3 古月《ROS入门21讲》19.launch启动文件的使用方法.pdf19.launch启动文件的使用方法 主 讲 人 : 古 月 Launch文件 Launch文件语法 • • • • Launch文件语法 • • • • Launch文件语法 • • • Launch示例 simple.launch turtlesim_parameter_config.launch Launch示例 start_tf_demo_c++.launch0 码力 | 8 页 | 1.03 MB | 1 年前3
 Linux就该这么学 第2版命令,与文件读写操作 有关的技术,使用 Vim 编辑器编写和修改配置文件,用户身份与文件权限的设置,硬盘设备分区、格 式化以及挂载等操作,部署 RAID 磁盘阵列和 LVM,firewalld 防火墙与 iptables 防火墙的区别和配置, 使用 ssh 服务管理远程主机,使用 Apache 服务部署静态网站,使用 vsftpd 服务传输文件,使用 Samba 或 NFS 实现文件共享,使用 .......................... 41 2.5 查找定位文件命令 .................................................................................................... 48 2.6 文本文件编辑命令 .................................... ................................................................ 53 2.7 文件目录管理命令 .................................................................................................... 63 复习题........0 码力 | 552 页 | 22.25 MB | 1 年前3 Linux就该这么学 第2版命令,与文件读写操作 有关的技术,使用 Vim 编辑器编写和修改配置文件,用户身份与文件权限的设置,硬盘设备分区、格 式化以及挂载等操作,部署 RAID 磁盘阵列和 LVM,firewalld 防火墙与 iptables 防火墙的区别和配置, 使用 ssh 服务管理远程主机,使用 Apache 服务部署静态网站,使用 vsftpd 服务传输文件,使用 Samba 或 NFS 实现文件共享,使用 .......................... 41 2.5 查找定位文件命令 .................................................................................................... 48 2.6 文本文件编辑命令 .................................... ................................................................ 53 2.7 文件目录管理命令 .................................................................................................... 63 复习题........0 码力 | 552 页 | 22.25 MB | 1 年前3
 CentOS 7 操作命令-基础篇1.227 日 0、下载并安装 CentOS 7 系统 系统安装镜像下载地址 1:http://mirrors.163.com/centos/7.7.1908/isos/x86_64/ 下载第 2 个,文件大小 4G 的那个 系统安装镜像下载地址 2:http://mirrors.aliyun.com/centos/7/isos/x86_64/ 下载第 2 个,4664066048 字节(4G 多)的那个 本教程使用 VMware Workstation 虚拟机软件,下载并安装,试用一个月。 双击桌面的图标,进入主界面: 创建新的虚拟机之前,先在磁盘上创建一个文件夹,随便命名(比如在 D 盘上创建一个名 为 VMcentos7 的文件夹),然后这个文件夹就是接下来我们要创建的虚拟机的虚拟磁盘。 虚拟机就是虚拟出来的一台计算机,刚创建时是空白的,可以给它添加磁盘,网卡,光盘, CPU,内存等计算机资源, 4 4.选择 Linux,版本为 CentOS 7 64 位,下一步 5.虚拟机名称用默认的就行,位置为 D:\VMcentos7,我们前面创建的那个文件夹 5 6.最大磁盘大小分配 20GB 就够了,下面选择将虚拟机拆分成多个文件,这样我们的物理机 的磁盘就不会立即被使用 20GB,而是该虚拟机使用了多少,我们的物理磁盘就被用掉多少, 动态分配的。点击“下一步” 7.下图就是我们创建的虚拟机的参数,点击“完成”0 码力 | 115 页 | 8.68 MB | 1 年前3 CentOS 7 操作命令-基础篇1.227 日 0、下载并安装 CentOS 7 系统 系统安装镜像下载地址 1:http://mirrors.163.com/centos/7.7.1908/isos/x86_64/ 下载第 2 个,文件大小 4G 的那个 系统安装镜像下载地址 2:http://mirrors.aliyun.com/centos/7/isos/x86_64/ 下载第 2 个,4664066048 字节(4G 多)的那个 本教程使用 VMware Workstation 虚拟机软件,下载并安装,试用一个月。 双击桌面的图标,进入主界面: 创建新的虚拟机之前,先在磁盘上创建一个文件夹,随便命名(比如在 D 盘上创建一个名 为 VMcentos7 的文件夹),然后这个文件夹就是接下来我们要创建的虚拟机的虚拟磁盘。 虚拟机就是虚拟出来的一台计算机,刚创建时是空白的,可以给它添加磁盘,网卡,光盘, CPU,内存等计算机资源, 4 4.选择 Linux,版本为 CentOS 7 64 位,下一步 5.虚拟机名称用默认的就行,位置为 D:\VMcentos7,我们前面创建的那个文件夹 5 6.最大磁盘大小分配 20GB 就够了,下面选择将虚拟机拆分成多个文件,这样我们的物理机 的磁盘就不会立即被使用 20GB,而是该虚拟机使用了多少,我们的物理磁盘就被用掉多少, 动态分配的。点击“下一步” 7.下图就是我们创建的虚拟机的参数,点击“完成”0 码力 | 115 页 | 8.68 MB | 1 年前3
 鸟哥的 Linux 私房菜:基础学习篇 第四版第五章、Linux 的文件权限与目录配置 5.1 使用者与群组 5.2 Linux 文件权限概念 5.3 Linux目录配置 5.4 重点回顾 5.5 本章练习 5.6 参考资料与延伸阅读 第六章、Linux 文件与目录管理 6.1 目录与路径 6.2 文件与目录管理 6.3 文件内容查阅 6.4 文件与目录的默认权限与隐藏权限 6.5 指令与文件的搜寻 6.6 极重要的复习!权限与指令间的关系 极重要的复习!权限与指令间的关系 6.7 重点回顾 6.8 本章习题: 6.9 参考资料与延伸阅读 第七章、Linux 磁盘与文件系统管理 7.1 认识 Linux 文件系统 7.2 文件系统的简单操作 7.3 磁盘的分区、格式化、检验与挂载 7.4 设置开机挂载 7.5 内存交换空间(swap)之创建 鸟哥的 Linux 私房菜:基础学习篇 第四版 3 9.6 9.7 9.8 9.9 10 6 12.7 12.8 12.9 13 7.6 文件系统的特殊观察与操作 7.7 重点回顾 7.8 本章习题 - 第一题一定要做 7.9 参考资料与延伸阅读 第八章、文件与文件系统的压缩,打包与备份 8.1 压缩文件的用途与技术 8.2 Linux 系统常见的压缩指令 8.3 打包指令: tar 8.4 XFS 文件系统的备份与还原 8.5 光盘写入工具 8.6 其他常见的压缩与备份工具0 码力 | 1158 页 | 13.73 MB | 1 年前3 鸟哥的 Linux 私房菜:基础学习篇 第四版第五章、Linux 的文件权限与目录配置 5.1 使用者与群组 5.2 Linux 文件权限概念 5.3 Linux目录配置 5.4 重点回顾 5.5 本章练习 5.6 参考资料与延伸阅读 第六章、Linux 文件与目录管理 6.1 目录与路径 6.2 文件与目录管理 6.3 文件内容查阅 6.4 文件与目录的默认权限与隐藏权限 6.5 指令与文件的搜寻 6.6 极重要的复习!权限与指令间的关系 极重要的复习!权限与指令间的关系 6.7 重点回顾 6.8 本章习题: 6.9 参考资料与延伸阅读 第七章、Linux 磁盘与文件系统管理 7.1 认识 Linux 文件系统 7.2 文件系统的简单操作 7.3 磁盘的分区、格式化、检验与挂载 7.4 设置开机挂载 7.5 内存交换空间(swap)之创建 鸟哥的 Linux 私房菜:基础学习篇 第四版 3 9.6 9.7 9.8 9.9 10 6 12.7 12.8 12.9 13 7.6 文件系统的特殊观察与操作 7.7 重点回顾 7.8 本章习题 - 第一题一定要做 7.9 参考资料与延伸阅读 第八章、文件与文件系统的压缩,打包与备份 8.1 压缩文件的用途与技术 8.2 Linux 系统常见的压缩指令 8.3 打包指令: tar 8.4 XFS 文件系统的备份与还原 8.5 光盘写入工具 8.6 其他常见的压缩与备份工具0 码力 | 1158 页 | 13.73 MB | 1 年前3
共 132 条
- 1
- 2
- 3
- 4
- 5
- 6
- 14














 
 