Gentoo Linux OpenAFS 指南
原文更新:September 30, 20031. 总览
这篇文件提供您在 Gentoo Linux 上安装 OpenAFS 伺服端与客户端必要的步骤。 此文件部份取自 AFS FAQ 以及 IBM 的 Quick Beginnings guide on AFS。嘿,不要重新 发明轮子 :)
AFS 是一套允许共同作业的站点 (伺服端以及用户端) 有效率地区域网路和广域网路分享档 案系统资源的分散式档案系统。用户端会维护一份经常使用物件 (档案) 的快取,以加快存 取速度。
AFS 是的基础是一套由 Carnegie-Mellon 大学的资讯技术中心发展,叫做「Andrew File System」的分散式档案系统。「Andrew」是这个研究计画的名字 - 以这所大学的赞助者为 名。当 Transarc 成立而 AFS 变成一套产品的时候,大家本来想把「Andrew」拿掉,表示 AFS 已经超越了 Andrew 研究计画,变成了个有技术支援且高品质的档案系统。但是,当时 有几个核系统使用 /afs 做为他们的根档案系统。在当时,更换根档案系统并不是个经常发 生的工作。所以,为了避免让这些 AFS 站台必须重新命名以及规划他们的档案系统结构, AFS 守住了他的名字以及留下了档案系统架构。
AFS 核系统是一组管理上统一化,而且以单一、团结档案系统表现的伺服器群组。一般来说 ,一组 AFS 核系统是一群使用相同网域名称 (例如 gentoo.org) 的伺服器。使用者登入一 台代表该使用者 AFS 用户端工作站,然后工作站从核系统要求资讯及档案。使用者不会知 道他们正在存取那台伺服主机的那一个档案。他们不会注意到伺服器在另外一个房间甚至另 一栋大楼,因为这些资料可以在不需要使用者操作或注意到的状况下被复制或移动到另外一 台伺服器。但是这些档案永远都可以被存取到,就像打了类固醇的 NFS 档案系统 :) (Benny 说应该翻成「吃了摇头丸的 NFS」...)
AFS 最主要的优势在它的:快取机制 (在用户端上,一般是 100M 到 1GB),安全功能 (Kerberos 4 为基础,Access Control Lists),使用简单 (您最后只会有一个档案系统), 伸缩性 (需要的时候可以在核系统增加伺服器),传输通讯协定。
念一下 AFS FAQ 。
Openafs 男人页 (man page) 可以在 www.openafs.org 找到。
AFS 本来是由 Transarc 研发,但是现在已经被 IBM 并购。您可以在 Transarcs Webpage 找到一些资讯。
2. 文件
您可以取得原版的 IBM AFS 文件。它写的非常完整,而且若您是 AFS 伺服器的管理者, 您一定会想要念他。
代码 2.1 |
# emerge app-doc/afsdoc |
3. 伺服端安装
注释: 所有的指令都应该被写在同一行!!在本文件中,他们有时候会被切成两行,只是为了让阅 读容易些罢了。 |
注释: 不幸的是 AFS 客户端需要使用 ext2 分割区才能让快取正常运作,因为 reiserfs 有些 locking 状况。您必须作个大约 200MB (越大越好) ext2 分割区并且将它挂载到/usr/vice/cache。 |
您应该在编译 AFS 客户端之前调整 CellServDB 跟 ThisCell 两个档案。(这两个档案在 /usr/portage/sys-fs/openafs/files 下)。
代码 3.1 |
CellServDB: >netlabs # 核系统的名称 10.0.0.1 # 储存器 ThisCell: netlabs |
CellServDB 告诉您的用户端应该从那一台伺服器要求连线。ThisCell 应该很明显了,一 般来说您可以选一个在组织里面独一无二的名称,您的 (正式) 网域名称应该是个不错的 选择。
代码 3.2 |
# emerge sys-fs/openafs |
在成功编译之后,您就完全准备好了。
以下的指令让您可以在系统启动的时候顺便启动 AFS 用户端。
警告: 在您尝试启动 AFS 用户端的时候,网域中应该总有一个准备好的 AFS 伺服端。若您的 AFS 用户端无法连上 AFS 伺服器,您的系统就会卡在那里,直到设定逾时为止。(而且这 会是一段非常非常非常不短的时间...) |
代码 3.3 |
# rc-update add afs default |
4. 伺服器安装
接下来的指令会安装所有建立 AFS 伺服器以及用户端所需要的程式以及档案。
代码 4.1 |
# emerge sys-fs/openafs |
您必须先移除作为样本的 CellServDB 跟 ThisCell 档案。
代码 4.2 |
# rm /usr/vice/etc/ThisCell # rm /usr/vice/etc/CellServDB |
接著您会执行 bosserver 指令以起始基本监督 (Basic OverSeer, BOS) 伺服器, 这将用来监督以及管理其他伺服主机上的 AFS 伺服程序。使用 -noauth 旗标来关 闭授权检查,因为您还没有加入任何管理使用者。
警告: 关闭权限检查将严重危害核系统的安全。您应该在不受中断的状况下完成接下来的所有步骤 ,而且应该在重新以权限检查选项启动 BOS 伺服器之前都非常注意。这是 AFS 文件上说 的 :) |
代码 4.3 |
# /usr/afs/bin/bosserver -noauth & |
确定 BOS 伺服器建立了 /usr/vice/etc/CellServDB 以及 /usr/vice/etc/ThisCell 两个档案。
代码 4.4 |
# ls -al /usr/vice/etc/ -rw-r--r-- 1 root root 41 Jun 4 22:21 CellServDB -rw-r--r-- 1 root root 7 Jun 4 22:21 ThisCell |
现在指派您的核系统名称。
重要: 命名的规则有些限制。最重要的两个限制是名称中不能包含大写字母以及长度不能超过 64 个字元。记住您的核系统名称会在 /afs 下显示,所以您可能会想选个短一 点的。 |
注释: 在这篇指南中接下来所有的指令,碰到 <server name> 的时候请您将它您正 在安装机器的换成完整认可的站台名称 (例如 afs.gentoo.org)。至於 <cell name> 则换成您核系统的完整名称 (例如 gentoo)。 |
执行 bos setcellname 来设定核系统名称。
代码 4.5 |
# /usr/afs/bin/bos setcellname <server name> <cell name> -noauth |
接下来使用 bos create 指令来建立 /usr/afs/local/BosConfig 档案中的四个资料库纪录。这四个程序只会在资料库伺服器上执行。
kaserver | 管理认证资料库的认证伺服器,可以被 Kerberos 5 伺服程式替换。如果任何人想试 试看,欢迎来更新这篇文件 :) |
buserver | 管理备份资料库的备份伺服器。 |
ptserver | 管理保护资料库的保护伺服器 |
vlserver | 管理容量位置资料库 (Volume Location Database, VLDB) 的容量位置伺服器。非常重 要 :) |
代码 4.6 |
# /usr/afs/bin/bos create <server name> kaserver simple /usr/afs/bin/kaserver -cell <cell name> -noauth # /usr/afs/bin/bos create <server name> buserver simple /usr/afs/bin/buserver -cell <cell name> -noauth # /usr/afs/bin/bos create <server name> ptserver simple /usr/afs/bin/ptserver -cell <cell name> -noauth # /usr/afs/bin/bos create <server name> vlserver simple /usr/afs/bin/vlserver -cell <cell name> -noauth |
您可以使用 bos status 这个指令来检查是不是所有伺服器都在执行中:
代码 4.7 |
# /usr/afs/bin/bos status <server name> -noauth Instance kaserver, currently running normally. Instance buserver, currently running normally. Instance ptserver, currently running normally. Instance vlserver, currently running normally. |
接著我们会起始核系统的安全机制。我们会从在认证资料库中建立以下两笔纪录开始: 主要管理员帐号,根据手册它必须叫做 admin,以及 AFS 伺服程序,叫做 afs 。没有使用者应该以 afs 登入,不过认证伺服器的售票系统 (Ticket Granting Service, TGS) 模组使用这个帐号来编码授与 AFS 用户端的伺服器门票。这听 起来很像 Kerberos :)
进入 kas 互动模式:
代码 4.8 |
# /usr/afs/bin/kas -cell <cell name> -noauth ka> create afs initial_password: Verifying, please re-enter initial_password: ka> create admin initial_password: Verifying, please re-enter initial_password: ka> examine afs User data for afs key (0) cksum is 2651715259, last cpw: Mon Jun 4 20:49:30 2001 password will never expire. An unlimited number of unsuccessful authentications is permitted. entry never expires. Max ticket lifetime 100.00 hours. last mod on Mon Jun 4 20:49:30 2001 by <none> permit password reuse ka> setfields admin -flags admin ka> examine admin User data for admin (ADMIN) key (0) cksum is 2651715259, last cpw: Mon Jun 4 20:49:59 2001 password will never expire. An unlimited number of unsuccessful authentications is permitted. entry never expires. Max ticket lifetime 25.00 hours. last mod on Mon Jun 4 20:51:10 2001 by $lt;none> permit password reuse ka> |
执行 bos adduser 指令来将 admin 使用者加入至 /usr/afs/etc/UserList。
代码 4.9 |
# /usr/afs/bin/bos adduser <server name> admin -cell <cell name> -noauth |
透过 bos addkey 命令来定义 /usr/afs/etc/KeyFile 中的 AFS 伺服器的编码金钥。
注释: 如果它要求您输入金钥,请输入您在使用 kas 建立 afs 项目时设定的密码。 |
代码 4.10 |
# /usr/afs/bin/bos addkey <server name> -kvno 0 -cell <cell name> -noauth input key: Retype input key: |
使用 pts createuser 指令来建立管理员的保护资料库纪录:
注释: 预设上,保护伺服器会将 AFS UID 1 指派给 admin 使用者,因为它是您第一笔建 立的使用者纪录。如果本地端密码档 (/etc/passwd 或类似的东西) 已经有 admin 这笔纪录,那么请使用 -id 参数来建立被配的 UID。 |
代码 4.11 |
# /usr/afs/bin/pts createuser -name admin -cell <cell name> [-id <AFS UID>] -noauth |
执行 pts adduser 指令以将 admin 使用者加入 system:administrators 群组,然后使用 pts membership 来检查成员。
代码 4.12 |
# /usr/afs/bin/pts adduser admin system:administrators -cell <cell name> -noauth # /usr/afs/bin/pts membership admin -cell <cell name> -noauth Groups admin (id: 1) is a member of: system:administrators |
重新启动所有 AFS 伺服器程序
代码 4.13 |
# /usr/afs/bin/bos restart <server name> -all -cell <cell name> -noauth |
启动 fs 程序,也就是档案伺服器、容量伺服器、以及救生员的集合 (fileserver 、volserver、跟 salvager 程序)。
代码 4.14 |
# /usr/afs/bin/bos create <server name> fs fs /usr/afs/bin/fileserver /usr/afs/bin/volserver /usr/afs/bin/salvager -cell <cell name> -noauth |
确定所有程序都在执行:
代码 4.15 |
# /usr/afs/bin/bos status <server name> -long -noauth Instance kaserver, (type is simple) currently running normally. Process last started at Mon Jun 4 21:07:17 2001 (2 proc starts) Last exit at Mon Jun 4 21:07:17 2001 Command 1 is '/usr/afs/bin/kaserver' Instance buserver, (type is simple) currently running normally. Process last started at Mon Jun 4 21:07:17 2001 (2 proc starts) Last exit at Mon Jun 4 21:07:17 2001 Command 1 is '/usr/afs/bin/buserver' Instance ptserver, (type is simple) currently running normally. Process last started at Mon Jun 4 21:07:17 2001 (2 proc starts) Last exit at Mon Jun 4 21:07:17 2001 Command 1 is '/usr/afs/bin/ptserver' Instance vlserver, (type is simple) currently running normally. Process last started at Mon Jun 4 21:07:17 2001 (2 proc starts) Last exit at Mon Jun 4 21:07:17 2001 Command 1 is '/usr/afs/bin/vlserver' Instance fs, (type is fs) currently running normally. Auxiliary status is: file server running. Process last started at Mon Jun 4 21:09:30 2001 (2 proc starts) Command 1 is '/usr/afs/bin/fileserver' Command 2 is '/usr/afs/bin/volserver' Command 3 is '/usr/afs/bin/salvager' |
您的下一个动作取决於这是不是您核系统中的第一台伺服主机:
如果您正在安装核系统中的第一台 AFS 伺服器,首先建立第一个 AFS 容量,root.afs 。
注释: 在分割区名称选项中代入其中一台机器的 AFS 伺服器分割区。手册上这些分割区是称作 /vicex,然后 x 的范围是从 a-z。 |
代码 4.16 |
# /usr/afs/bin/vos create <server name> <partition name> root.afs -cell <cell name> -noauth |
如果在核系统中已经有 AFS 档案伺服器以及容量,执行 vos sncvldb 和 vos syncserv指令来将 VLDB (Volume Location Database) 与实际的容量与机器作同步。 这将把所有必须的资料复制到您的新伺服器。
代码 4.17 |
# /usr/afs/bin/vos syncvldb <server name> -cell <cell name> -verbose -noauth # /usr/afs/bin/vos syncserv <server name> -cell <cell name> -verbose -noauth |
代码 4.18 |
# /usr/afs/bin/bos create <server name> upserver simple "/usr/afs/bin/upserver -crypt /usr/afs/etc -clear /usr/afs/bin" -cell <cell name> -noauth |
首先您必须设定一些 acl,让所有使用者能浏览 /afs。
代码 4.19 |
# /usr/afs/bin/fs setacl /afs system:anyuser rl |
然后您必须建立根容量,将它以唯独挂载至 /afs/<cell name> 以及 以读写挂载至 /afs/.<cell name>。
代码 4.20 |
# /usr/afs/bin/vos create <server name><partition name> root.cell # /usr/afs/bin/fs mkmount /afs/<cell name> root.cell # /usr/afs/bin/fs setacl /afs/<cell name> system:anyuser rl # /usr/afs/bin/fs mkmount /afs/.<cell name> root.cell -rw |
终於完成了!!现在您的区域网路中应该有了个已上线运作的 AFS 档案系统。您可以去道 杯大杯的咖啡并印出 AFS 文件!!
注释: 要让所有 AFS 伺服器都运作正常有个非常重要的要点,那就是所有机器的系统时钟必须同 步。这个可以经由在某台伺服器 (例如 AFS 伺服器) 上安装 ntp 伺服器来达成,然后让所 有客户端向它同步。这个方法在 AFS 客户端上也行的通。 |
5. 基本管理
施工中... 现阶段的话,先念 AFS 文件 :)