Andrew 文件系统

2023-10-01 15:43

Morris 等人。分布式计算环境于 1986 年创建,用作卡内基梅隆大学 (CMU) 的校园计算机和信息系统。企业使用 AFS 使位于不同位置的 AFS 客户端工作站更容易访问存储的服务器文件。它通过一组可信服务器向所有客户端工作站提供同质的、与位置无关的文件命名空间。用户登录到在分布式计算基础设施 (DCI) 内通信的工作站后交换数据和程序。目标是通过减少客户端-服务器通信来促进大规模信息交换。这是通过在服务器和客户端计算机之间移动整个文件并缓存它们直到服务器获得更新版本来实现的。 AFS 使用本地缓存来提高速度并最大限度地减少分布式网络的工作负载。例如,服务器通过将数据存储在工作站的本地缓存中来响应工作站请求。

Andrew 文件系统架构:

  • Vice:Andrew 文件系统通过使用一组称为 Vice 文件命名空间的受信任服务器,为所有客户端工作站提供同构、位置透明的服务器。 Berkeley Software Distribution for Unix 操作系统用于客户端和服务器。每个工作站的操作系统拦截文件系统调用并将它们重定向到该工作站上的用户级进程。
  • Venus:这种称为 Venus 的机制会缓存 Vice 中的文件,并将这些文件的更新版本返回到其原始服务器。 Venus 仅在文件打开或关闭时与 Vice 通信;文件的各个字节直接在缓存的副本上读取和写入,跳过 Venus

这种文件系统架构严重受到来自需求的可扩展性启发的阻碍。为了增加服务器可以服务的客户端数量,Venus 代替 Vice 执行尽可能多的工作。 Vice 仅保留文件系统完整性、可用性和安全性所需的功能。服务器被设置为松散联合,它们之间的连接很少。

图片:安德鲁文件系统

以下是 AFS 网络中使用的服务器和客户端组件:

  • 任何对网络上托管的 AFS 服务器文件创建请求的计算机都有资格作为客户端。
  • 文件保存在客户端计算机的本地缓存中,并在服务器响应并传输请求的文件时向用户显示。
  • 当用户访问AFS时,客户端通过回调机制将所有修改发送到服务器。客户端计算机的本地缓存存储常用文件以便快速访问。

AFS 实现:

  • 客户端进程通过标准系统调用与 UNIX 内核进行通信。
  • 内核已进行了重大调整,可以识别相关活动中对 Vice 文件的引用,并将请求路由到工作站的 Venus 客户端进程。
  • 如果此缓存中缺少某个卷,Venus 会联系它所连接的任何服务器,请求位置信息,并将其输入到映射缓存中。 Venus 将与服务器建立一个新的连接,除非它已经有一个连接。然后使用该连接来检索文件或目录。
  • 建立连接需要身份验证和安全性。当找到并缓存目标文件时,它会在本地磁盘上创建目标文件的副本。然后,Venus 返回内核,内核打开缓存的副本并将其句柄提供给客户端进程。 AFS 服务器和客户端都使用 UNIX 文件系统作为底层存储系统。客户端缓存是工作站磁盘上的本地目录。此目录包含带有缓存条目占位符名称的文件。
  • Venus 和服务器进程都使用后一种模式直接访问 UNIX 文件,避免了昂贵的路径名到 inode 转换方法。
  • 当文件从缓存中移除时,Venus会回调通知相关服务器该文件已被移除。

好处:

  • 不经常更新的共享文件和不经常更新的本地用户文件将持续很长时间。
  • 它设置了大量的存储空间用于缓存。
  • 它为用户的所有文件提供了足够大的工作集,以确保用户再次访问时文件仍然被缓存。