Gentoo Linux OpenAFS 指南
1.
總覽
關於本文件
這篇文件提供您在 Gentoo Linux 上安裝 OpenAFS 伺服端與客戶端必要的步驟。
此文件部份取自 AFS FAQ 以及 IBM 的 Quick Beginnings guide on AFS。嘿,不要重新
發明輪子 :)
什麼是 AFS?
AFS 是一套允許共同作業的站點 (伺服端以及用戶端) 有效率地區域網路和廣域網路分享檔
案系統資源的分散式檔案系統。用戶端會維護一份經常使用物件 (檔案) 的快取,以加快存
取速度。
AFS 是的基礎是一套由 Carnegie-Mellon 大學的資訊技術中心發展,叫做「Andrew File
System」的分散式檔案系統。「Andrew」是這個研究計畫的名字 - 以這所大學的贊助者為
名。當 Transarc 成立而 AFS 變成一套產品的時候,大家本來想把「Andrew」拿掉,表示
AFS 已經超越了 Andrew 研究計畫,變成了個有技術支援且高品質的檔案系統。但是,當時
有幾個核系統使用 /afs 做為他們的根檔案系統。在當時,更換根檔案系統並不是個經常發
生的工作。所以,為了避免讓這些 AFS 站台必須重新命名以及規劃他們的檔案系統結構,
AFS 守住了他的名字以及留下了檔案系統架構。
什麼是 AFS 核系統?
AFS 核系統是一組管理上統一化,而且以單一、團結檔案系統表現的伺服器群組。一般來說
,一組 AFS 核系統是一群使用相同網域名稱 (例如 gentoo.org) 的伺服器。使用者登入一
台代表該使用者 AFS 用戶端工作站,然後工作站從核系統要求資訊及檔案。使用者不會知
道他們正在存取那台伺服主機的那一個檔案。他們不會注意到伺服器在另外一個房間甚至另
一棟大樓,因為這些資料可以在不需要使用者操作或注意到的狀況下被複製或移動到另外一
台伺服器。但是這些檔案永遠都可以被存取到,就像打了類固醇的 NFS 檔案系統 :)
(Benny 說應該翻成「吃了搖頭丸的 NFS」...)
使用 AFS 有什麼好處?
AFS 最主要的優勢在它的:快取機制 (在用戶端上,一般是 100M 到 1GB),安全功能
(Kerberos 4 為基礎,Access Control Lists),使用簡單 (您最後只會有一個檔案系統),
伸縮性 (需要的時候可以在核系統增加伺服器),傳輸通訊協定。
我可以從那裡得到更多資訊?
念一下 AFS FAQ
。
Openafs 男人頁 (man page) 可以在
www.openafs.org 找到。
AFS 本來是由 Transarc 研發,但是現在已經被 IBM 併購。您可以在 Transarcs Webpage
找到一些資訊。
2.
文件
取得 AFS 文件
您可以取得原版的 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 檔案裡的空間。如果你使用 TAB 的話,客戶端很
可能會失敗。
|
CellServDB 告訴您的用戶端應該從那一台伺服器要求連線。ThisCell 應該很明顯了,一
般來說您可以選一個在組織裡面獨一無二的名稱,您的 (正式) 網域名稱應該是個不錯的
選擇。
建立用戶端
原始碼 3.2: |
# emerge sys-fs/openafs
|
在成功編譯之後,您就完全準備好了。
啟動時順便啟動 AFS
以下的指令讓您可以在系統啟動的時候順便啟動 AFS 用戶端。
警告:
在您嘗試啟動 AFS 用戶端的時候,網域中應該總有一個準備好的 AFS 伺服端。若您的
AFS 用戶端無法連上 AFS 伺服器,您的系統就會卡在那裡,直到設定逾時為止。(而且這
會是一段非常非常非常不短的時間...)
|
原始碼 3.3: |
# rc-update add afs default
|
4.
伺服器安裝
建立伺服器
接下來的指令會安裝所有建立 AFS 伺服器以及用戶端所需要的程式以及檔案。
原始碼 4.1: |
# emerge sys-fs/openafs
|
啟動 AFS 伺服器
您必須先移除作為樣本的 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 伺服器分割區。手冊上這些分割區是稱作
/vicepx,然後 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) 與實際的容量與機器作同步。
這將把所有必須的資料複製到您的新伺服器。
如果這個指令顯示失敗訊息 "partition /vicepa does not exist on the server",確定
你在執行 OpenAFS 服務前先掛載分割區,或掛載後使用 /usr/afs/bin/bos restart
<server name> -all -cell <cell name> -noauth 指令重新啟動。
原始碼 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
|
設定 AFS 檔案空間的最上層次
首先您必須設定一些 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.
基本管理
免則聲明
OpenAFS 是一個廣泛的科技。請閱讀 AFS 取得更多資訊。我們在這章中只列出一點點的管
理工具。
設定 PAM 登入時取得 AFS Token
使用 AFS 時,如果你使用 AFS Kerberos 4 你需要對 KA 服務認證,或著是使用 MIT,
Heimdal,或 ShiShi Kerberos 5 的話,對 Kerberos 5 KDC 認證。然而為了要登入機器
,你也需要一個使用者帳戶,這可以在本地的 /etc/passwd,NIS,LDAP (OpenLDAP),或
Hesiod 資料庫。PAM 讓 Gentoo 可以結合 AFS 認證以及使用者帳戶登入。
你需要更新這些設定使用的 /etc/pam.d/system-auth。"use_first_pass" 表示他首先會
檢查使用者登入,然後 "ignore_root" 禁止檢查本機的超級使用者以便當 AFS 或網路有
問題時還可以登入。
原始碼 5.1: /etc/pam.d/system-auth |
auth required /lib/security/pam_env.so
auth sufficient /lib/security/pam_unix.so likeauth nullok
auth sufficient /usr/afsws/lib/pam_afs.so.1 use_first_pass ignore_root
auth required /lib/security/pam_deny.so
account required /lib/security/pam_unix.so
password required /lib/security/pam_cracklib.so retry=3
password sufficient /lib/security/pam_unix.so nullok md5 shadow use_authtok
password required /lib/security/pam_deny.so
session required /lib/security/pam_limits.so
session required /lib/security/pam_unix.so
|
為了讓 sudo 保持真實使用者的 token 以及避免本地使用者增加 AFS 存取權限,將
/etc/pam.d/su 改成這樣:
原始碼 5.2: /etc/pam.d/su |
auth sufficient /usr/afsws/lib/pam_afs.so.1 ignore_uid 100
auth sufficient /lib/security/pam_rootok.so
auth required /lib/security/pam_wheel.so use_uid
auth required /lib/security/pam_stack.so service=system-auth
account required /lib/security/pam_stack.so service=system-auth
password required /lib/security/pam_stack.so service=system-auth
session required /lib/security/pam_stack.so service=system-auth
session optional /lib/security/pam_xauth.so
session optional /usr/afsws/lib/pam_afs.so.1 no_unlog
|
這份文件是以
Creative Commons - 姓名標示-相同方式分享 授權條款發布
|