分布式系统概念和设计-分布式文件系统服务体系结构和实践经验

2023-05-16

分布式系统概念和设计

文件系统的特点

负责文件的组织,存储,检索,命名,共享和保护

在这里插入图片描述

文件包含数据和属性

  • 数据:包含一系列数据项——8比特的字节,读写操作可访问任何一部分数据
  • 属性:用一个记录表示,包括文件长度,时间戳,文件类型,所有者身份和访问控制表
  • 下图阴影部分是系统管理,其余则是用户操作维护
    在这里插入图片描述
  • 元数据:用于管理文件所需的存储在文件系统中的所有特殊信息,包含文件属性,目录和其他文件系统使用者的信息
  • 每一层只依赖于下一层,分布式文件服务系统可能附加模块实现客户服务器通信,分布式命名和文件的定位能力

文件系统操作

在这里插入图片描述

分布式文件系统的需求

需求:开发过程中出现性能,可伸缩性,并发控制,容错和安全的需求

透明性

文件系统服务通常是负载最重的服务,功能和性能非常关键,设计必须平衡灵活性和可伸缩性与软件的复杂性和性能。

  • 访问透明性:客户端不必了解文件的分布存储性质
  • 位置透明性:客户可以只使用一个文件命名空间,不改变路径的情况下,多个文件或文件组应该可以被重定位:同时允许客户在任意时刻执行时都使用同样的命名空间
  • 移动透明性:当文件移动,客户程序和客户节点上的系统管理表都不必改变,允许文件的移动性
  • 性能透明性:服务负载在一个特定范围内变化,可能能保持满意的性能
  • 伸缩透明性:文件可以不断地扩充,负载可以线性扩展

并发文件更新

一个客户改变文件的操作不应该影响其他客户访问或改变同一个文件的操作。

当前大多数UNIX标准,提供建议性和强制性的文件级别或记录级加锁

文件复制

在支持文件复制的文件服务中,一个文件可以表现为在不同位置文件内容的多个副本

一个允许多个服务器共享文件服务的负载,增强服务的伸缩性同时改进容错性能

当一个文件损坏,可以访问另一个具有此文件副本的服务器

硬件和操作系统异构性

文件服务的接口必须有明确的定义,这样在不同的操作系统和计算机上可以实现客户和服务器软件,开放性一个重要的需求交付实现

容错

  • 文件服务器分布式系统中的中心角色决定了它必须在客户和服务器出现故障时能继续使用
  • 容错设计可以基于至多一次调用语义,而在按幂等操作设计的服务器协议中容错设计可以使用简单的至少一次调用语义,保证重复请求不会导致对文件的不合法更新

一致性

  • UNIX文件系统提供的是单一更新语义。
  • 提供一个对文件并发访问的模型,当多进程并发访问文件时,只能看到仅有的一个副本存在
  • 当文件在不同的地点被复制或被缓存,对一个副本所做的修改要被传播到所有的副本,传输中间的时间延迟,这种情况会发生偏离单一副本语义

安全性

大多数文件系统基于访问控制列表的访问控制机制。

在分布式文件系统,客户请求需要被认证,这样在服务器上的访问控制需要基于正确的用户身份。

同时还需要使用数字签名和私密数据加密机制保护请求和应答消息的内容

效率

效率的前提是需要处理好可靠性和稳定性的前提需求

文件服务系统结构

平面文件服务

注重在文件内容上的实现操作,文件唯一标识符(UFID)

在所有平面文件服务操作的请求中用于指明文件

文件服务和目录服务的职责划分是基于UFID的的使用实现

UFID是一长串序列,每个文件的UFID在分布式系统的所有文件中是唯一的

当平面服务接收一个创建请求,会生成一个UFID,将请求UFID返回给请求者,看看OSS的使用方式

目录服务

提供文件名到UFID的映射。

客户通过向目录服务提供文件名获取文件的UFID

目录服务提供生成目录,在目录中加入新的文件名以及目录中获得的UFID所必须的功能,是平面服务的客户,其目录文件存储在平面文件服务提供的文件中

客户模块

客户模块运行在客户机,集成和扩展了平面文件服务和目录文件服务的操作,并为客户端提供用户级程序提供单一应用程序接口

平面文件服务接口

在这里插入图片描述

访问控制

UNIX系统
  • 在UNIX文件系统中,系统会将用户的访问权限和在open的请求访问权限模式比较,只有在用户拥有必要权限的时才能打开文件
  • 在访问权限检查中使用的用户标识(UID)是用户早期认证登录的结果,并且在分布式的实现中不能被修改
  • 访问权限会保持到文件关闭,并且在同一文件上进行随后操作,系统不需要进行再次检查
分布式文件系统实现
  • 在分布式的实现中,访问检查必须在服务器上进行,因为服务器RPC接口是一个访问文件的无保护的点
  • 用户标识必须在请求中传输,并且服务器容易被伪造的标识欺骗
  • 严重:如果访问权限检查的结果被保留在服务器上并在下一次访问中使用时,服务器就不再是无状态的
    • 当文件名被转化为UFID时,系统进行一次访问检查,同时其结果按权能的形式编码,它作为以后一系列请求的访问许可将被返回给客户
    • 每一次客户请求,客户都发送用户标识,并且在每一次文件操作时,服务器都进行访问检查(更加通用的方式)

目录服务接口

提供从文件名到UFID的翻译服务

实现需要保留一个包含文件名到UFID映射的目录文件

每一个目录向普通文件一样存储,也有其UFID,因此,目录服务是文件服务的一个客户

在这里插入图片描述

每一操作中,需要包含在目录文件中的文件的UFID

基本目录服务中lookup操作执行一个文件名——》ufid转换

是一个构造块,提供其他服务或客户模块已完成更复杂的翻译

改变目录的两种操作:

  • AddName:向目录中增加一个条目,并且在文件的属性记录中增加引用计数器
  • UnName:从目录中删除一个条目并将计数器减,当计数器减到零,删除文件
  • GetNames使客户可以检查目录内容,还可以实现类似UNIX shell中对文件名的模式匹配操作。返回存储在给定目录中的全部文件名或文件名的子集。此操作中系统对客户提供的正则表达式进行模式匹配进行文件名的匹配。

层次文件系统

  • 向UNIX提供的由树形结构组织目录的文件系统是一中层次文件系统
  • 每一个目录包含文件名和其他可以从此目录访问的目录名,可以使用路径名来访问任一文件或目录——路径名是代表树中一条路径的多部分名字
  • 根有一个特定的名字,并且每一个在目录中的文件或目录都有名字
  • UNIX文件命名机制不是严格的层次型的结构——一个文件可能有多个名字,可能在不同的目录中,通过link命令实现,该命令可以为指定的目录中的文件加入新的名字但是inode没有改变

文件组

  • 文件组是一个给定服务器上的文件集合
  • 一台服务器可能包含多个文件组,组不能在服务器之间移动,并且文件不能改变隶属的组
  • 类UNIX和大多数其它系统中用到的一个相似构造(文件集系统)
  • 文件组最早用于支持在计算机间移动哪些存储在可移动磁盘上的文件集合
  • 在分布式文件服务中,文件组支持将文件一更大的逻辑单位分配到服务器上同时它还支持用存储在几个服务器上的文件实现文件服务。
  • 在支持文件组的分布式文件系统中,UFID包括一个文件组标识组件,能使每个客户端上的客户模块向包含响应文件组的服务器发送请求
  • 文件组标识必须唯一,文件组可以移动的是因为需要唯一的标识文件系统。

Sun网络文件系统

NFS(Network File System)是一种分布式文件系统协议,用于在计算机网络中共享文件和目录。它允许不同的计算机通过网络透明地访问和共享文件系统资源,就像这些资源本地存储在计算机上一样。NFS协议最初由Sun Microsystems开发,并成为UNIX和Linux操作系统中使用广泛的标准协议之一。其工作原理是客户端向服务器请求文件系统操作,服务器则将所需的数据进行处理并返回给客户端。

在这里插入图片描述

用Kerberos实现NFS的安全性

Kerberos可以实现NFS的安全性,其过程如下:

  1. 客户端向Kerberos服务器请求TGT(Ticket Granting Ticket)。
  2. Kerberos服务器用客户端提供的密码对其进行验证,如果验证通过,则向客户端发送TGT。
  3. 客户端使用TGT向Kerberos服务器请求服务票据(Service Ticket)。
  4. Kerberos服务器返回服务票据,其中包含着加密的会话密钥(Session Key)。
  5. 客户端向NFS服务器发送服务票据和会话密钥。
  6. NFS服务器使用会话密钥解密服务票据,并验证其有效性。如果验证通过,则允许客户端访问文件系统。

这样,Kerberos可以确保客户端与NFS服务器之间的通信是安全的,并且只有经过身份验证的用户才能访问文件系统。

Kerberos目的是减少需要信任假设的组件范围,当在Kerberos化,只接受哪些通过kerberos身份认证的客户发出的请求

HDFS的访问控制

HDFS(Hadoop Distributed File System)中的访问控制可以通过以下两个机制来实现:

权限控制列表(ACLs):针对文件或目录的每个对象,可以设置读、写和执行权限,也可以添加更高级别的访问控制,例如修改、删除等。这些权限可以授予特定用户和组。

POSIX 权限模型:类似于 UNIX/Linux 系统中的 chmod 和 chown 命令,可以为文件或目录设置基本的读、写和执行权限,以及所有者和组。不同之处在于 HDFS 中的 POSIX 权限控制是基于 Kerberos 认证和授权机制实现的。

在 HDFS 中,访问控制权限是由 NameNode 管理和维护的。只有拥有适当权限的用户才能够访问文件或目录。同时,HDFS 还提供了一种称为“代理用户”的机制,允许用户以其他身份执行操作。这可以在需要使用其他用户的权限时非常有用。


HDFS中的ACL(Access Control List,访问控制列表)可以用于控制文件和目录的访问权限。其实现思想是在每个文件和目录上维护一个包含授权用户和组信息的ACL,以便Hadoop系统在运行时检查用户对文件和目录的访问权限。

以下是设置HDFS ACL的步骤:

为文件或目录添加ACL:使用hdfs dfs -setfacl命令来设置文件或目录的ACL。例如,设置“user1”用户可以读取和写入文件:

hdfs dfs -setfacl -m user:user1:rwx /path/to/file
查看ACL:使用hdfs dfs -getfacl命令来查看文件或目录的ACL。例如,查看文件的ACL:

hdfs dfs -getfacl /path/to/file
修改ACL:使用hdfs dfs -setfacl命令来修改文件或目录的ACL。例如,将“user1”用户的权限更改为只读:

hdfs dfs -setfacl -m user:user1:r-- /path/to/file
删除ACL:使用hdfs dfs -setfacl命令来删除文件或目录的ACL。例如,删除文件的ACL:

hdfs dfs -setfacl -b /path/to/file

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

分布式系统概念和设计-分布式文件系统服务体系结构和实践经验 的相关文章

  • Bootloader概述

    Bootloader概述 分类 xff1a 嵌入式 Bootloader概述 Bootloader的含义 PC机上 windows linux 引导过程简介 嵌入式Bootloader 介绍与分析 嵌入式bootloader 介绍 Boot
  • vue SEO优化

    第一 xff0c ssr vue官方文档给出的服务器渲染方案 xff0c 这是一套完整的构建vue服务端渲染应用的指南 xff0c 具体参考https cn vuejs org v2 guide ssr html 第二 xff0c vue
  • 阿里云ubuntu 16.0402 安装mysql

    参考文献 阿里云服务器Ubuntu 16 04 3安装mysql如何远程连接阿里云上mysql数据库 出错10061 阿里云ubuntu 16 0402 安装mysql 前提 xff1a 装上Xshell xff0c winscp等远程工具
  • 阿里云开发工具汇总

    阿里云Ubuntu16 04 安装pip span class token function wget span https bootstrap pypa io get pip py python get pip py 阿里云Ubuntu1
  • 基于机器学习的异常检测与分析技术

    传统的运维方式在监控 问题发现 告警以及故障处理等各个环节均存在明显不足 xff0c 需要大量依赖人的经验 xff0c 在数据采集 异常诊断分析 故障处理的效率等方面有待提高 本关键技术面对传统运维故障处理效率低 问题定位不准确 人力成本高
  • Mac系统 消除系统更新提示的小红点

    1 首先在系统偏好设置中将软件更新中 自动保持我的Mac运行最新版本勾掉 xff1b 2 打开终端输入如下指令 xff1a defaults span class token function write span com apple sy
  • VSCode远程连接Ubuntu问题1:The remote host may not meet VS Code Server‘s prerequisites for glibc and libstd

    VScode配置远程免密连接Ubuntu16 0 4 xff0c 一直以来使用正常 xff0c 今天使用VSCode报错 xff0c 错误具体信息如下 xff1a The remote host may not meet VS Code S
  • wsl上的ubuntu执行docker和docker-compose失败问题排查

    起因 中秋放假没有关机 xff0c 肥来之后wsl上的docker compose 和docker报错啦 表现 docker compose ps报错 root 64 YK PC 00036 docker compose ps bash m
  • GVIM设置默认字体、背景颜色以及行号

    GVIM设置默认字体 背景颜色以及行号 xff1a 1 打开terminal去到根目录下 2 输入gvim vimrc打开空白文件 3 依次输入 set nu set guifont 61 Monospace 15 colorscheme
  • 2019-3-27毕设之python小白第三课---调用API接口

    CN DBpedia的接口调用 Introduction to APIs Knowledge Works以REST API的方式对外提供服务 一站式解决您的语义分析诉求 从多个维度为您的应用场景提供海量背景知识 API包括CN dbpedi
  • Python 使用xlrd模块获取Excel中超链接的URL并下载到本地

    本文介绍了xlrd模块如何操作Excel 目录 一 xlrd模块介绍二 使用步骤1 引入库2 示例代码 一 xlrd模块介绍 1 xlrd是读取Excel表格数据的模块 2 高版本的xlrd目前去除了对xlsx格式的支持 xff0c 支持x
  • 查看树莓派实时温度

    打开终端 xff0c 使用指令查看CPU温度 xff0c 依次输入以下指令 xff1a 1 cd sys class thermal thermal zone0 cat temp 返回值 除以1000 51540 返回值除以1000为当前C
  • 人脸识别概述[L-softmax | 人脸验证 | DeepFace | FaceNet | Triplet loss]

    文章目录 思维导图疑问用softmax分类做人脸识别 xff0c 怎么应用呀 概念区分主流方法损失函数Softmax loss基于欧式距离的损失函数对比损失 xff08 Contrastive Loss xff09 三元组损失 xff08
  • HDFS API常用的方法及使用

    文章目录 POM依赖HDFS API上传本地数据到HDFS系统删除指定路径下的文件创建文件夹及文件 xff0c 并向文件中写入数据获取指定文件的日期重命名目录获取指定路径所有的文件 POM依赖 span class token tag sp
  • Ubuntu 14.04 16.04 18.04 安装Docker(Docker CE)

    Ubuntu 14 04 16 04 18 04 使用apt get进行安装 自17年开始 xff0c docker分为docker ce xff08 社区版 xff09 docker ee xff08 企业版 xff09 xff0c 另外
  • PHP实现跨域的解决方法

    PHP实现跨域解决方法 如果要实现跨域通过设置Access Control Allow Origin来实现跨域 例如 xff1a 客户端的域名是client runoob com xff0c 而请求的域名是server runoob com
  • SLAM后端——滤波与优化对比

    滤波与优化 xff1a 摘自 xff1a https www cnblogs com zengcv p 5994587 html 因为基于滤波的理论 xff0c 滤波器稳度增长太快 xff0c 这对于需要频繁求逆的EKF xff08 扩展卡
  • realsense t265测试

    roslaunch realsense2 camera rs t265 launch rosrun rviz rviz roslaunch vins estimator euroc launch 将加计和陀螺仪主题放在一起 修改rs cam
  • Intel Realsense t265获取相机参数

    rs sensor control
  • VINS-MONO需要修改的参数

    相机参数修改 xff1a 加速度和角速度发表在两个话题 xff0c 用上述方法将其发表在一个话题上 修改VINS MONO包 xff1a

随机推荐

  • MSCKF

    https github com TurtleZhong msckf mono
  • ROS毕设坑3:在ROS下用视觉方法求取R和t,然后将其发布

    今天莫名遇到两个问题 xff1a 之前调好的代码硬生生的跑不通 xff0c 就会出现下面这个问题 xff1a 大概意思就是说我还没得到图片呢就让他去计算 xff0c opencv就出错了 xff0c 我不信这个邪 xff0c 自己去调试了一
  • Linux网卡驱动pcnet32.c的注释(AM79C9*系列网卡的驱动)

    很久之前读的网卡驱动源码 xff0c 很多东西已经忘记了 xff0c 最近面试被问道了网卡收数据包的全过程 xff0c 只能答出一个很简单的过程 xff0c NAPI这种非常优秀的机制都没有想起来 xff0c 很惭愧 xff0c 重新复习了
  • ADRC算法Auto Disturbances Rejection control

    自抗扰控制 其中 xff0c e 61 v t y t 是控制系统参考输入量v t 与被控对象输出量y t 之间的差值 xff0c kp比例系数 ki积分系数 xff0c xff0c kd微分系数 优点 xff1a 1 仅由误差来决定控制
  • python 下运行ros

    1 建立l两个文件夹python ros scr 2 执行下述命令后 xff0c 将会在在src中 xff0c 建立一个包daodao 并且在文件夹daodao里生成了两个空文件夹 xff0c 有include daodao scr 和 C
  • tensor 与 array 的相互转化

    import tensorflow as tf import numpy as np a 61 np array 1 2 3 4 5 6 7 8 9 print a 1 2 3 4 5 6 7 8 9 b 61 tf constant a
  • keras.layers.UpSampling2D与tf.image.resize_nearest_neighbor

    参考https www bookstack cn read keras docs zh sources layers convolutional md keras layers UpSampling2D size 61 2 2 data f
  • Linux安装elasticsearch7.x(踩坑分享)

    安装并启动 首先下载elasticsearch压缩文件 xff0c 下载地址 我这里选择的是elasticsearch 7 17 1版本 xff1a https www elastic co cn downloads elasticsear
  • VNC 登录显示too many security failures的解决方法

    原因 xff1a 黑客试图登录 解决方法 xff1a 在putty上登录 xff0c 然后输入命令vncserver kill 5 杀掉vnc进程 之后输入su 你的用户名 使用su权限 输入命令 vnc 重启vnc 成功之后就可以再次登录
  • MapReduce案例运行及分词

    首先查询进程 xff0c 发现hadoop并没有启动 如何配置hadoop xff0c 参考我的另外一篇博文 Hadoop环境准备 接下来 xff0c 启动hadoop start all sh 或者 start dfs sh start
  • main函数是主线程吗

    1 线程的概念 xff1a 线程是程序最基本的运行单位 xff0c 而进程不能运行 xff0c 所以能运行的 xff0c 是进程中的线程 2 线程是如何创建起来的 xff1a 进程仅仅是一个容器 xff0c 包含了线程运行中所需要的数据结构
  • C#类型的转换:Converter<TInput, TOutput> 委托的使用

    Converter lt TInput TOutput gt 委托 表示将对象从一种类型转换为另一种类型的方法 此委托由 Array 类的 ConvertAll lt TInput TOutput gt 方法和 List lt T gt 类
  • 收藏一些不错的国外网站

    设备树 xff1a https www devicetree org LINUX xff1a https www arm linux org uk USB xff1a https github com pyusb pyusb PYTHON
  • 近红外跨模态行人重识别(RGB-IR Cross-Modality Re-id)(一)

    1 写在前面 本文是我阅读近红外的跨模态行人重识别 xff08 RGB IR Cross Modality Re id xff09 文献的笔记 xff0c 由于网上对该方面介绍的博客很少 xff0c 所以这里我记录下阅读文章的一些要点和我自
  • ESKF的相关理解

    ESKF相关总结 对随机噪声和干扰的积分ESKF中的处理手段 xff1a 预积分中的处理手段 ESKF中IMU GPS不同解算坐标系的处理全局坐标系的初始化GPS坐标系的转换重力加速度引出的ENU IMU坐标系转换的初始化 状态量的初始化关
  • T265相关使用

    0 查看相机配置信息 rs enumerate devices 1 读取相机内外参信息 rs enumerate devices c 图像数据发布的Topic 图像数据30Hz camera fisheye1 camera info cam
  • vins-fusion中的GPS和VO融合

    https blog csdn net hltt3838 article details 109725845 这个帖子还蛮有价值的 GPS进行更新的时候 xff0c 需要寻找与VIO时间戳相对应的GPS消息 根据 43 10ms的时间偏差找
  • 玩转NVIDIA Jetson AGX Xavier

    最近项目应用需要部署到边缘模块 xff0c 所以就玩起了Xavier 感觉网上的资料不多 xff0c 所以从头记录一下笔记 xff0c 方便大家一起学习应用 玩转NVIDIA Jetson AGX Xavier 1 刷机 xff08 安装s
  • 素数伴侣 java

    span class token keyword package span span class token namespace com span class token punctuation span patience span cla
  • 分布式系统概念和设计-分布式文件系统服务体系结构和实践经验

    分布式系统概念和设计 文件系统的特点 负责文件的组织 xff0c 存储 xff0c 检索 xff0c 命名 xff0c 共享和保护 文件包含数据和属性 数据 xff1a 包含一系列数据项 8比特的字节 xff0c 读写操作可访问任何一部分数