5.分布式文件系统

两个主要目标。网络透明。最重要的目标是提供对分布在计算机网络上的文件的相同访问,这些文件在集中式计算机上的分时系统中提供。高可用性。另一个重要目标是高可用性。系统错误或复制和维护操作不应导致文件不可用。文件服务和文件服务器的概念。文件服务是文件系统向其客户端提供的服务,即文件系统接口。文件服务器是实现文件服务的进程。用户不需要知道有多少文件服务器以及它们的位置。由于文件服务器通常是一个普通的用户进程,因此系统上可能有不同的文件服务器提供不同的服务(例如,UNIX 文件服务和 M.
摘要由CSDN通过智能技术生成

两个主要目标。

网络透明。
最重要的目标是提供对分布在计算机网络上的文件的相同访问,这些文件在集中式计算机上的分时系统中提供。

高可用性。
另一个重要目标是高可用性。系统错误或复制和维护操作不应导致文件不可用。

文件服务和文件服务器的概念

文件服务是文件系统向其客户端提供的服务,即 文件系统接口。
文件服务器是实现文件服务的进程。

用户不需要知道有多少文件服务器以及它们的位置。

由于文件服务器通常是一个普通的用户进程,因此系统上可能有不同的文件服务器提供不同的服务(例如,UNIX 文件服务和 MS-DOS 文件服务)。


5.1 分布式文件系统架构

分布式系统通常有两个根本不同的组件——文件服务本身和目录服务。


5.1.1 文件服务器接口

对于任何文件系统,第一个基本问题是什么是文件。在许多系统上,例如 UNIX 和 MS-DOS,文件是不可解释的字节序列。在许多集中式计算机 (IBM/370) 上,文件由一系列记录表示,这些记录可以通过其编号或某些字段(键)的内容来指定。由于大多数分布式系统都是基于 UNIX 和 MS-DOS 环境的使用,所以它们使用了文件概念的第一个版本。

文件可以具有属性(关于不属于它的文件的信息)。典型的属性是所有者、大小、创建日期和权限。

文件模型的一个重要方面是文件创建后是否可以修改 。通常它们可以,但是有些系统具有不可变文件。此类文件将开发人员从许多缓存和传播问题中解放出来。

保护由与单处理器计算机相同的机制提供——凭据和访问权限列表。票据是针对每个文件发给用户的一种票据,表示访问权限。访问权限列表为每个文件指定了具有其权限的用户列表。最简单的权限方案是 UNIX 方案,它区分了三种类型的访问(读、写、执行)和三种类型的用户(所有者、他的组的成员和其他人)。

文件服务可以基于两种模型之一—— 上传/下载模型和远程访问模型。第一种情况,文件在客户端(内存或磁盘)和服务器之间作为一个整体传输,而第二种情况,文件服务提供了许多操作(打开、关闭、读取和写入部分文件、移动文件)指针、检查和更改属性等)。第一种方法需要来自客户端的大量内存,这是移动文件不必要部分的成本。在第二种方法中,文件系统在服务器上运行,客户端可能没有磁盘和大量内存。


5.1.2 目录服务器接口

提供创建和删除目录、命名和重命名文件、将文件从一个目录移动到另一个目录的操作。

指定名称的字母和语法。要指

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
分布式文件系统架构说明 - fastdfs-client(FastDFS 客户端) fastdfs提供的java客户端api,java相关功能都基于这个基础上封装,扩展,第三方应用不需要关心该接口. - fastdfs-core(HTTP服务器) 基于spring boot实现,提供http接口服务. 提供http服务器信息获取,http上传,http下载,删除上报,该服务会记录文件的基本信息,其中服务器信息获取,上传上报都由fastdfs-app自动完成,第三方应用不需要关心. - fastdfs-app(Apply SDK) 初始化 APIConfigure config = new APIConfigure("appKey", "httpServerUrl"); DFSAppClient.instance().initAPIConfigure(config); 实现执行初化操作,从fastdfs-core获取trackers服务器信息,及appKey对应的groupName, 这些动作都由SDK自动完成,第三方应用不需要关心. 上传文件 String fileId = DFSAppClient.instance().uploadFile(new File("文件绝对路径")); fileId:返回的fileId字符串,示例:group1/M00/00/00/wKgABFuOVJyEPGKEAAAAADUuUeE339.png fileId是后续对文件进行操作的基本参数,第三方应用拿到该值后应本地做好保存. 下载文件 FileOutputStream fos = new FileOutputStream(new File("文件绝对路径")); DFSAppClient.instance().downloadFile(fileId, fos, true); fileId:上传文件成功后返回的fileId字符串. 删除文件 int result = DFSAppClient.instance().deleteFile(fileId); fileId:上传文件成功后返回的fileId字符串. result:该方法会返回0表示删除成功,其他表示失败. fastdfs 下载示例说明 http://127.0.0.1:8808/dfs/v1/download?fileId=group1/M00/00/00/wKgABFuQ2PWEbNsOAAAAADUuUeE667.png&direct=true fileId:上传文件成功后返回的fileId字符串. direct:表示是否直接显示,非直接显示会提示下载,默认是非直接显示.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值