Gentoo Linux OpenAFS Guide
1. 概略
このドキュメントについて
このドキュメントはGentoo LinuxにOpenAFSサーバのすべてのインストールを成功させるために提供します。このドキュメントの一部はAFS FAQとIBM's Quick Begining Guide(AFS)から引用しています。ちなみに、車輪の再発明のように原文を丸写ししたものではありません:)
AFSとは?
AFSはローカルエリアネットワークとワイドエリアネットワークを通じてファイルシステムの資源を効率よく利用するためホスト(サーバ、クライアントなど)同士の協力を可能にした分散ファイルシステムです。クライアントはすばやくアクセスし、さらによく使うオブジェクト(ファイルなど)ために自らの領域を持ちます。
AFSは"Andrewファイルシステム"と呼ばれていたCarnegie-Mellon大学やInformation Technology Center(情報技術センター)で独自に開発された分散ファイルシステムがもとになっています。"Andrew"はCMUでのリサーチプロジェクトの名前です。また、大学の創立者として尊敬されています。
昔にTransarcが作成したものです。"Andrew"はAFSがAndrewリサーチプロジェクト以上の成果を示すために退学しました。そして支持され、高品質のファイルシステムとなりました。これによりAFSと呼ばれるようになったのです。
しかしながら/afsとしてファイルシステムを作成するためのセルが多量に残っていました。その時に、ファイルシステムのルートを変更することは容易ではありませんでした。
なぜなら、ファイルシステムを改名しなければならないので早めにAFSの場所を確保する必要があったのです。そして名前とファイルシステムのルートが改名されました。
AFSセルとは?
AFSセルとは共同管理や個人領域の提供、ファイスシステムの一体化を1つにしたサーバの集まりです。
一般的に、AFSセルは(gentoo.orgのような)同じインターネットドメインを使用するホストの集合体なのです。
ユーザは情報を要求したり、ユーザのためにセルのサーバを整理するためにAFSクライアントワークステーションに登録されています。
ユーザはサーバに、アクセスするファイルや保存されているファイルの場所を知らないでしょう。
彼らはユーザがいなかったり、気づかないうちに別のサーバに各情報がコピーされたり、移動されたりするので、サーバが隣の部屋に置かれていても気づかないでしょう。
そのファイルには常にアクセスできるのです。ステロイド状態のNFSのようですね :)
AFSを使うことによりもたらされる利益とは?
AFSの強力な機能は次の通りです:
容易なファイル保護(一般的にクライアント同士で100Mから1GB)、
堅牢なセキュリティー(Kerberos 4ベース、アクセス制御リスト)、
容易なアドレス探索(1つのファイルシステムの所有)、
変更(随時サーバにセルの追加が可能)、
通信プロトコル。
もっと多くの情報を得るためには
AFS FAQを参照してください。
Openafsのメインページ(www.openafs.org)も参照してください。
AFSはTransarcが独自に開発し、IBMが所有しています。
TransarcsウェブページでAFSの情報を得ることが出来ます。
2. ドキュメント
AFSドキュメントの取得
IBM作成のAFSドキュメントが取得可能です。とてもわかりやすくかかれていて、あなたがAFSサーバを運用するのであれば読みたくなるはずです。
Code listing 2.1 |
# emerge app-doc/afsdoc
|
3. クライアントへのインストール
準備
Note:
すべてのコマンドは一行で書くべきです!!
このドキュメントでは、読みやすく作られているため時々2行に要約されています。
|
Note:
あいにく、reiserfsを用いた発行が停止するので、AFSクライアントを正確に動作させ、ファイルを保護するためはext2パーティションが必須です。
およそ200MBぐらいのext2パーティションを作成し、そのパーティションを/usr/vice/cacheにマウントする必要があります。
|
あなたは、CellServDBとafsクライアントをビルドする前のThisCellの2つのファイルを編集するべきです。
(その2つのファイルは/usr/portage/net-fs/openafs/filesにあります。)
Code listing 3.1 |
CellServDB:
>netlabs #Cell name
10.0.0.1 #storage
ThisCell:
netlabs
|
CellServDBはあなたのクライアントが特定のセルに対して接続する必要があることをサーバ(群)に伝えます。
ThisCellは完全にわかるはずです。普通、構成した物には独創的な名前を使います。
あなたの(公式な)ドメインを名前として使うのはよい選択かもしれません。
クライアントのビルド
Code listing 3.2 |
# emerge net-fs/openafs
|
コンパイルが成功したら、次に進みましょう。
afsの稼働
以下のコマンドにより、システム起動時にafsクライアントを稼働させるために適切なリンクを作成します。
Warning:
afsクライアントを稼働されるためには、あなたのドメインを使用してafsサーバを稼働させる必要があります。
afsサーバがダウンしたのであれば、タイムアウトを起こすまでシステムが起動できないでしょう。(タイムアウトには非常に時間がかかります。)
|
Code listing 3.3 |
# rc-update add afs default
|
4. サーバへのインストール
サーバのビルド
以下のコマンドはAFSサーバとクライアントをセットアップするための必要なバイナリーをインストールします。
Code listing 4.1 |
# emerge net-fs/openafs
|
AFSサーバの稼働
サンプルのCellServDBとThisCellのファイルをはじめに削除する必要があります。
Code listing 4.2 |
# rm /usr/vice/etc/ThisCell
# rm /usr/vice/etc/CellServDB
|
次に、Basic OverSeer(BOS)サーバを初期化するためにbosserverコマンドを実行します。
それにより、他のサーバマシンで動作しているAFSサーバを監視し、制御します。
システムに対してそれのことを初期値とみなします。
あなたがもうadminユーザを追加したくないときは、検査する権限を認めないようにするために-noauthフラグを含めます。
Warning:
検査する権限を認めないことはセルのセキュリティーを脆弱にしてしまいます。
全行程での残りのステップをすべて完了しなければなりません。
そしてあなたが検査できるようにしたBOSサーバを再び稼働させるまでマシンから離れてはいけません。
これはAFSドキュメントで言われていることです:)
|
Code listing 4.3 |
# /usr/afs/bin/bosserver -noauth &
|
BOSサーバが/usr/vice/etc/CellServDBと/usr/vice/etc/ThisCellを作成したことを確かめます。
Code listing 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
|
Defining Cell Name and Membership for Server Process
今セルの名前を決めて下さい。
Important: 名前を決める上でいくつかの制限があります。
重要な制限は2つあり、1つは大文字を含めてはいけません。もう一つは64文字を超えてはいけません。
セルの名前は/afs以下に表示されることを思い出して下さい。そうすれば、短い名前にした方がいいかも知れませんね。 |
Note: このガイドでの以下の各Code Listing内では、
インストールしたマシンの適切なホスト名(afs.gentoo.orgのように)の代わりに<サーバ名>を用います。
完全なセルの名前(gentooのように)の代わりに |
<セル名>を用います。
セルの名前をセットするためにbos setcellnameコマンドを実行します:
Code listing 4.5 |
# /usr/afs/bin/bos setcellname <サーバ名> <セル名> -noauth
|
データベースサーバプロセスの開始
次に、/usr/afs/local/BosConfigファイルの4つのデータベースサーバプロセスのアカウントを作成するために、bos createコマンドを使用します。
その4つのプロセスはデータベースサーバマシンのみ動作します。
kaserver |
AuthentificationサーバはAuthentificationデータベースを管理します。
これは、Kerberos 5デーモンによって交代されることもあります。
皆さんがこのドキュメントの更新ために自由に触っていただくことも出来ます:) |
buserver |
バックアップサーバはバックアップデータベースを管理します。 |
ptserver |
ProtectionサーバはProtectionデータベースを管理します。 |
vlserver |
Volume LocationサーバはVolume Locationデータベース(VLDB)を管理します。
これはとても重要です:) |
Code listing 4.6 |
# /usr/afs/bin/bos create <サーバ名> kaserver simple
/usr/afs/bin/kaserver -cell <セル名> -noauth
# /usr/afs/bin/bos create <サーバ名> buserver simple
/usr/afs/bin/buserver -cell <セル名> -noauth
# /usr/afs/bin/bos create <サーバ名> ptserver simple
/usr/afs/bin/ptserver -cell <セル名> -noauth
# /usr/afs/bin/bos create <サーバ名> vlserver simple
/usr/afs/bin/vlserver -cell <セル名> -noauth
|
すべてのサーバがbos statusコマンドを用いて動作していることを確かめることが出来ます:
Code listing 4.7 |
# /usr/afs/bin/bos status <サーバ名> -noauth
Instance kaserver, currently running normally.
Instance buserver, currently running normally.
Instance ptserver, currently running normally.
Instance vlserver, currently running normally.
|
セルセキュリティーの初期化
今からセルのセキュリティー機構を初期化します。
以下のようにAuthentificationデータベース上で最初に2アカウントを作成することによってはじめます:
核となる管理者権限を持ったアカウントを規定によりadminと言います。
AFSサーバで使用するアカウントをafsと言います。
認証されたafsユーザのログは作成されません。
しかし、AuthenticationサーバのTicket Grantingサービス(TGS)はAFSクライアントに対して認証をするサーバチケットを暗号化するためにそのアカウントを利用します。
このサウンドはほとんど Kerberosに似ています(訳注:原文では、This sounds pretty much like Kerberos.ですが私にはどうもsoundの意味がわかりません。):)
kasインタラクティブモードに入ります
Code listing 4.8 |
# /usr/afs/bin/kas -cell <セル名> -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 $lt;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>
|
/usr/afs/etc/UserListへadminユーザを追加するためにbos adduserコマンドの実行します。
Code listing 4.9 |
# /usr/afs/bin/bos adduser <サーバ名> admin -cell <セル名> -noauth
|
/usr/afs/etc/KeyFileのAFSサーバの暗号鍵を定義するためにbos addkeyコマンドを発行します。
Note:
あなたがを入力した鍵を使用する場合、kasを用いてafsユーザを作成するときに設定したパスワードを入力します。
|
Code listing 4.10 |
# /usr/afs/bin/bos addkey <サーバ名> -kvno 0 -cell <セル名> -noauth
input key:
Retype input key:
|
adminユーザに対してProtectionデータベースのアカウントを作成するためにpts createuserコマンドを発行します。
Note:
デフォルトでのProtectionサーバは、adminユーザのためにAFS UIDを1つ割り当てます。そのAFS UIDははじめにあなたが作成したユーザアカウントにあたります。
ローカルパスワードファイル(/etc/passwdまたは/etc/passwdに相当するファイル)には、すでに適当なUIDを作成するために-idを使用し異なったUIDを割り当てるadminのためのアカウントがあります。
|
Code listing 4.11 |
# /usr/afs/bin/pts createuser -name admin -cell <セル名> [-id <AFS UID>] -noauth
|
多くのシステムでadminユーザを作成するためにpts adduserコマンドを発行します:管理者グループ。そして
新しいユーザを確認するためにpts membershipコマンドを発行します。
Code listing 4.12 |
# /usr/afs/bin/pts adduser admin system:administrators -cell <セル名> -noauth
# /usr/afs/bin/pts membership admin -cell <セル名> -noauth
Groups admin (id: 1) is a member of:
system:administrators
|
AFSサーバのすべてのプロセスを再起動します。
Code listing 4.13 |
# /usr/afs/bin/bos restart <サーバ名> -all -cell <セル名> -noauth
|
ファイルサーバ、VolumeサーバとSalvagerを起動
fsプロセスを起動します。fsはFileサーバ、VolumeサーバとSalavager (fileserver、
volserverとsalvagerプロセス)から構成しています。
Code listing 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
|
動作しているすべてのプロセスの確認
Code listing 4.15 |
# /usr/afs/bin/bos status <サーバ名> -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領域を作成したセルにAFSサーバをインストールしているなら、root.afsで実行します。
Note:
論理パーティション名のために、マシンのAFSサーバパーティションの1つの名前を代用します。
デフォルトでそれらのパーティションは、/vicexと名付けられます。
xは、a~zの範囲にあるからです。
|
Code listing 4.16 |
# /usr/afs/bin/vos create <サーバ名>
<パーティション名> root.afs
-cell <セル名> -noauth
|
ローカルマシン上の現在の容量とともにVLDB (Volume Location Database)との互換性を保つためにvos sncvldbとvos syncservコマンドを発行し、セル内に、AFSファイルサーバマシンや容量があるのであれば、
これはあなたの新しいサーバにすべてのデータをコピーします。
Code listing 4.17 |
# /usr/afs/bin/vos syncvldb <サーバ名> -cell <セル名> -verbose -noauth
# /usr/afs/bin/vos syncserv <サーバ名> -cell <セル名> -verbose -noauth
|
アップデートサーバの一部の機能を起動
Code listing 4.18 |
# /usr/afs/bin/bos create <サーバ名>
upserver simple "/usr/afs/bin/upserver
-crypt /usr/afs/etc -clear /usr/afs/bin"
-cell <セル名> -noauth
|
AFS filespaceのTop Levelを設定
はじめにacl'sをセットする必要があります。その結果、ユーザは/afsを確認することが出来ます。
Code listing 4.19 |
# /usr/afs/bin/fs setacl /afs system:anyuser rl
|
あなたはルート領域を作成する必要があります。そして、/afs/<セル名>は読み込み専用で、
/afs/.<セル名>は読み書き出来るようにマウントします。
Code listing 4.20 |
# /usr/afs/bin/vos create <サーバ名><パーティション名> root.cell
# /usr/afs/bin/fs mkmount /afs/<セル名> root.cell
# /usr/afs/bin/fs setacl /afs/<セル名> system:anyuser rl
# /usr/afs/bin/fs mkmount /afs/.<セル名> root.cell -rw
|
ついに完成しました!!! 只今からローカルネット上で、AFSファイルサーバを稼働させることが出来ます。
大きなカップにコーヒーを入れている時間を利用して、AFSドキュメントをプリントアウトしましょう!!!
Note:
AFSサーバのために正常に機能させることはとても重要です。そしてすべてのシステム時計を同期させます。
そのマシン(e.g. the AFS server)上にntpサーバをインストールすることにより、より上手に完成します。
そしてntpクライアントを利用して、すべてのクライアントの時計を同期させます。
これも、afsクライアントによって行われることになります。
|
5. 基本的な管理
現在執筆中です ... さしあたりAFSドキュメントを読んでください。 :)
The contents of this document are licensed under the Creative Commons - Attribution / Share Alike license.
|