OpenAFS学习手札(3)

来源:百度文库 编辑:神马文学网 时间:2024/04/23 22:58:59
现在继续完成我的手札,这篇是将完成第一台AFS服务器的配置,第一台服务器配置的时候是服务端和客户端在一台机器上的。这里我将按照 OpenAFS 官方手册上的顺序来进行,我不确定是不是需要分开一篇或者两篇来写,看长度决定吧。让人伤心的是,我在公司配合这手札做 OpenAFS 试验的服务器,在我全部搞定配置并开始传文件的时候硬盘挂了,好在我已经完成该记录的东西,重新做一遍系统也就一天吧。5 启动BOS Server
在完成OpenAFS的RPM包安装后,就可以在你的第一台AFS服务器上启动AFS的各个服务了。在使用RPM包安装AFS组件的时候,已经将各种常用的AFS控制命令(如:bos,fs,klog等)装载进 /usr/sbin 目录,如没有特殊说明,后面所涉及的命令均可以在任何目录下运行。
使用 bosserver 命令来启动Basic OverSeer (BOS)Server(BOS Server 用来监控其他AFS服务)。由于你还没有配置你 cell 的AFS认证,BOS Server的普通操作就没有办法通过认证检查,所以在命令行中就需要用 -noauth 参数来禁止使用认证检查。在无认证的模式中,bos 命令就不用验证身份和权限了。
安全提示:在对 cell 做禁用认证模式操作的时候,最好不要离开你的机器,并且不中断的一次性做完各种操作。除非你用认证模式重启了 BOS Server。
启动 bossever 的时候系统将自动做一些操作,比如创建一些文件等:
-------------------------------
# /usr/afs/bin/bosserver -noauth &
-------------------------------
运行后用 ps -ef 命令可以看到 bosserver 已经在系统后台以非认证的方式运行。此时检查系统会发现在运行bosserver后系统创建了 /usr/afs/db ,/usr/afs/local 目录和 /usr/afs/etc/ThisCell ,/usr/afs/etc/CellServDB 文件以及在 /usr/vice/etc 下的相应文件连接。
6 定义cell名称和配置服务器相关
现在我们可以分配 cell 的名字了,要注意的是名称中不可以包括大写字母或者超过64个字符。
后面的命令中使用我自己的例子,在我的试验里为 SA-test2, 为 afs.server 。
使用 bos setcellname 命令来分配cell 名称,这个命令会修改 /usr/afs/etc/ThisCell (定义服务器 cell 名称 ),/usr/afs/etc/CellServDB (列出 cell 的数据库服务器)这两个文件。
要注意的是:在这个手册中,以后相关机器名(machine name)的讨论中均要用的是 FQDN 名 fully-qualified hostname (比如:fs1.abc.com) 。cell 名(cell name)也一样。在我的实践中发现如果不用 FQDN 名,只用传统机器名其实也可以,但是这样会导致本机AFS系统因为无法解析 FQDN 名而无法启动,解决办法就是修改文件 CellServDB 中机器名(machine name)前的IP地址:将地址修改为本机网卡地址而不是原来的回环地址 127.0.0.1 。(命名详细请看本篇最后的小讨论)
请确认 bosserver 正在后台运行,这时候才可以使用 bos setcellname 命令:
-------------------------------
# bos setcellname   -noauth
-------------------------------
运行这个命令后名称定义将被写入 /usr/afs/etc/ThisCell ,/usr/afs/etc/CellServDB 这两个文件,用 vi 或者 cat 命令可以看到格式如下(以我试验的名称为例):
-------------------------------
# vi /usr/afs/etc/ThisCell
afs.server
-------------------------------
# vi /usr/afs/etc/CellServDB
>afs.server #Cellname
127.0.0.1   #SA-test2
-------------------------------
显然我没有用 FQDN 名,所以为了以后AFS系统的正常运行,我将 127.0.0.1 改成网卡的实际地址192.168.0.8。
使用 bos listhosts 命令验证我们已经注册了第一个 cell 数据库:
-------------------------------
# bos listhosts -noauth
Cell name is afs.server
Host 1 is SA-test2
-------------------------------
7 数据库服务器的启动
下一步用 bos create 命令在 /usr/afs/local/BosConfig 文件中建立4个数据库服务器组件服务的记录,并让它们跑起来,这四个在数据库服务器上跑的程序是:
1:认证服务器(the kaserver process),处理认证数据库
2:备份服务器(the buserver process),负责备份数据数据库
3:保护服务器(the ptserver process),负责保护数据库
4:卷定位服务器(the vlserver process ),负责卷定位数据库(VLDB)
注意:…………
在后面的命令中都将包括 -cell 参数,这个参数就是你在“6 定义cell名称和配置服务器相关”中所定义的cell name。
1:使用 bos create 命令加入认证服务器记录并启动它(以我试验的名称为例):
--------------------------------------
# bos create SA-test2 kaserver simple /usr/afs/bin/kaserver -cell afs.server -noauth
--------------------------------------
这时候会看到系统报告认证错误,你可以忽略这个错误,它是不会影响系统运作的。
2:继续启动备份,保护,卷定位数据库服务:
--------------------------------------
# bos create SA-test2 buserver simple /usr/afs/bin/buserver -cell afs.server -noauth
# bos create SA-test2 ptserver simple /usr/afs/bin/ptserver -cell afs.server -noauth
# bos create SA-test2 vlserver simple /usr/afs/bin/vlserver -cell afs.server -noauth
--------------------------------------
运行以上命令后,系统已经修改了/usr/afs/local/BosConfig 文件,用 vi 或者cat 命令可以看到:
--------------------------------------
# vi /usr/afs/local/BosConfig
restartime 11 0 4 0 0
checkbintime 3 0 5 00
bnode simple kaserver 1
parm /usr/afs/bin/kaserver
end
bnode simple buserver 1
parm /usr/afs/bin/buserver
end
bnode simple ptserver 1
parm /usr/afs/bin/ptserver
end
bnode simple vlserver 1
parm /usr/afs/bin/vlserver
end
------------------------------------
同时用 ps -ef 命令可以发现以上4个进程已经在系统中运行。这时也可以查看各个服务运行日志(log中会打印出服务启动的详细情况,这是系统配置调整不可少的),日志存放在 /usr/afs/logs 中,对应于bosserver,kaserver,buserver,ptserver,vlserver的log分别为:BosLog,AuthLog,BackupLog,PtLog,VLLog。
注意:如果在启动这些服务的时候,log报告各个服务因为 Ubik 错误而不能启动,请查看 CellServDB 的配置中机器名(machine name)前需要配置的是你的本机IP而不是127.0.0.1,如果修改后还是不行,那就将 /etc/hosts 文件中的 127.0.0.1 也修改为你的本机IP,并且这样做会对后面文件服务器(fs server)和客户端的配合运行带来方便。
至此数据库服务器上的BOS服务部件已经正确运行了。
200408220128 关于机器名(machine name)和单元名(cell name)的命名讨论
在配合这篇手册的试验系统搭建中,我一开始用的是传统的machine name:SA-test2,cellname:afs.server。在CellServDB中machine name前的IP已经从127.0.0.1改为本机的IP:192.168.0.8。各个服务运行正常。在配置完文件服务器(fs server),安全性等等后,用运行其他机器上的客户端程序去连接却得到下面的错误:
---------------------------
afsd: All AFS daemons started.
afsd: Can‘t mount AFS on /afs(22)
---------------------------
在google上查到一大堆的人有这样的问题,但是没有有价值的答复,没有找到返回的这个错误类型22到底是什么,更没有解决方法。唉,靠天靠地,不如靠自己啊。在查看客户端机器上系统log:/var/log/message 的时候发现log中有一条是:
-----------------------------------
localhost kernel: afs: Lost contact with  file server 127.0.0.1 in cell afs.server
-----------------------------------
于是我判断因为没有DNS为 afs.server 做地址解析,客户端于是将afs.server解析成为127.0.0.1,所以没有办法连上afs.server,但是这点并不那么确实,因为在客户端的CellServDB中已经定义了afs.server的地址是192.168.0.8。抱着试试看的心态,我为afs.server做了DNS记录,结果和我怀疑的一样,这么做并没有解决问题。出错的信息是一样的。想去分析客户端afsd的源程序,发现是编译过的而不是脚本。于是我回过头来分析客户端上这个出错信息,当服务器和客户端在同一台机器上的时候一切正常,但是分离后就有了问题,看了上面这个错误信息N遍后我觉得它所要表达的意思不是和127.0.0.1的afs.server服务器失去连接,而是:afsd和在cell afs.server上地址为127.0.0.1的文件服务器(file server)失去了连接!这才是关键!是客户端连不上file server!怪异的是file server的地址并没有在客户端上配置,所以应该是BOS返回给客户端的,可是为什么file server应该是起在127.0.0.1上了而没有起在我所需要的192.168.0.8上?DNS已经解析了cell 名afs.server是在192.168.0.8上。CellServDB中也定义了正确的afs.server地址,我去查看了file server的log:Filelog,果然显示是启动在127.0.0.1上了,问题得到定位。分析:服务启动的时候由于机器名为传统的SA-test2,file server在 /etc/hosts 直接得到的是localhost,是127.0.0.1,所以返回给客户端也是这个回环地址。于是我修改了 /etc/hosts 中的记录,客户端成功连上服务器!
如果当时使用了FQDN名,并在DNS上添加记录,问题就不会这么麻烦了,不过也有可能发生。所以我建议,在搭建环境的时候尽量使用FQDN名,不用也没有关系,但是需要在调试的时候时时想着名称解析的问题。
_xyz