使用AFS, Active Directory和SSSD搭建用于集成电路设计的分布式存储系统 【十五】部署第一台 AFS 服务器 4
配置第一台 AFS 服务器:客户端的配置
我们在这里只对 AFS 客户端(Cache Manager)做最少的配置,使得系统管理员可以登录客户端进行维护和管理操作。
我们将在今后的章节里进一步介绍一台完整的客户端的配置(比如一台 EDA 设计服务器)。需要注意的是,EDA 设计服务器一般需要允许所有合法的 AFS 用户登录和使用。而我们不希望普通用户登录 AFS 服务器,所以对AFS 服务器上的客户端配置,系统管理员应该跳过 SSSD 的配置步骤,甚至限制这些服务器上的 SSH 服务,以保证只有系统管理员可以登录这些服务器。
客户端 CellServDB
在前文中我们已经解释过客户端 CellServDB 文件的作用。我们推荐客户端通过 DNS 查询的方式获得 Database Server 的地址,为了实现这一点,客户端 CellServDB 文件需要做一些特别安排。
对我们的例子,客户端 CellServDB 文件的地址是
/etc/openafs/CellServDB
这个文件在每次系统重启时都会被自动删除和改写,因此手动更改这个文件是没有效果的。
仔细阅读
/usr/lib/systemd/system/openafs-client.service
就可以发现类似如下语句:
ExecStartPre=/bin/sed -n 'w/etc/openafs/CellServDB' /etc/openafs/CellServDB.local /etc/openafs/CellServDB.dist
这意味着该服务脚本在每次加载 AFS Client 程序之前会有一个预备操作,这个预备操作的内容是将以下两个文件的内容衔接在一起以后覆盖 /etc/openafs/CellServDB 文件的内容:
/etc/openafs/CellServDB.local
/etc/openafs/CellServDB.dist
其中 CellServDB.dist 包含许多公开注册于互联网的诸多研究机构的 Cell,而 CellServDB.local 则是供客户端系统管理员订制的 CellServDB 文件内容。
正是因为有如上操作的存在,所以手动修改 CellServDB 文件是没有效果的。系统管理员应该修改的是 CellServDB.dist 和 CellServDB.local 这两个文件。
如果管理员不希望客户端的用户访问互联网上的其他 AFS Cell,可以将 CellServDB.dist 的内容删除,使之变成一个空文件。
如果管理员希望添加自己新建的 Cell 的信息,则可以将这些信息添加到 CellServDB.local 文件里。
对我们的例子,我们希望生成的 CellServDB 文件只包含新建 Cell 的信息,因此我们将 CellServDB.dist 的内容删除使之成为一个空文件,然后更新 CellServDB.local 文件。
我们应该往 CellServDB.local 里写入什么信息呢?
OpenAFS 规定,如果希望 Cache Manager 使用 DNS 方式获得 Database Server 的信息,则客户端 CellServDB 文件里只能包含 Cell 的名称信息,而不能包含任何一台Database Server 的 IP 地址。因此我们的 CellServDB.local 文件应该只有一行内容,如下所示:
[xmsguan@afsdb1 openafs]$ cat CellServDB.local
>hq.company.com #Cell name
读者可以对照修改自己的 CellServDB.local 文件。注意我们这里修改的是客户端相关的CellServDB 文件,它们存储在
/etc/openafs
目录下,而不存储在
/etc/openafs/server
目录下。
另外需要注意,AFS 对 CellServDB 文件有十分严格的格式要求。比如文件末尾不能有多余的回车或空行,大于号(>)与 Cell 名称之间不能有任何空格。
在做出上述修改前,系统管理员应该保证已经遵循本文之前的步骤验证过 DNS SRV 记录已经生效。
客户端 ThisCell
与 CellServDB 文件分为服务器端和客户端类似,ThisCell 文件也分为服务器端和客户端。如果读者按照我们的推荐 使用了 jsbillings 编译的安装包,则客户端 ThisCell 文件存储于
/etc/openafs/ThisCell
我们解释过一台 AFS 客户端(Cache Manager)可以同时连接多个 AFS Cell。客户端 ThisCell 的作用是指定 Cache Manager 默认连接的 Cell.
对于我们的例子,ThisCell 显然是我们新建的 Cell,因此其内容和服务器端的 ThisCell 地址是完全一致的。既然我们正在配置的是 AFS 服务器,我们可以直接将服务器端的 ThisCell 文件拷贝到客户端 ThisCell 文件位置,如下所示
[xmsguan@afsdb1 openafs]$ sudo cp server/ThisCell ./ThisCell
[xmsguan@afsdb1 openafs]$ cat ThisCell
hq.company.com[xmsguan@afsdb1 openafs]$
至此我们就完成了客户端 CellServDB 文件和 ThisCell 两个基本配置文件的设置。
值得留意的是,今后每一台隶属于这个 Cell 的 AFS 客户端(Cache Manager)都需要 CellServDB.local 文件和 ThisCell 文件。因此 AFS 系统管理员可以将这两个文件的最新版本保存在一个可靠的地方,供 AFS 客户端的用户下载使用。
配置 cacheinfo 文件
Cache Manager 启动时所需最重要的信息除了 Cell 的名称和 Database Server 的地址以外就是本地缓冲区的位置和大小。我们在安装操作系统时已经为客户端预留了 缓冲分区,现在是时候将这个缓冲区的地址告诉 Cache Manager 了。这同样是通过一个文本配置文件实现的,这个文件的名称是 cacheinfo。
对于使用 jsbillings 编译的OpenAFS安装包的情