_1240859_1240860_1240861_1240863_1240864_1240865_1240866_1240868

  • 分散ファイルシステム: 個人でつかうものではないので表にでてこない。
  • AFS(Andrew File System): 30年の実績がある。(1983年)
  • 今回はシングルボリュームの話まで。
  • 佐藤先生: FreeBSDの中でさわってないところはないぜ!
  • AFSが出てきたのは1980年代。NFSなどネットワークファイルシステムはあった。
  • 分散ファイルシステム: サーバが複数ですべてのクライアントに同じ名前空間(ビュー)をみせたい。
    • NFSだとクライアントのマウントポイントが制御できない。
    • NFSには同期や一貫性制御がない。
  • AFS: 5000〜10000台を目標だった(当時)。
    • どれくらいスケールするかが問題。クライアントが2倍になったら負荷が2倍程度におさまるようなシステムであるかどうか。
    • サーバを増やせるか(スケールアウト)?
    • 管理が簡単か?
  • AFS: カーネギーさんもメロンさんもアンドリューだったのでAndrew(File System)。4.2BSDに実装された。
  • DCE(distributed computing environment)という統一規格(ポシャった)のなかのDFSになった。
  • OpenAFS: いまだメンテされているが、透明性がたかいとはいえない年寄集団。。。
  • Arla(オーラ),Coda(コーダ): AFSの欠点を解消しようとするプロジェクト。もうぜんぜんメンテされていない。
  • Stanfordの学生のホームディレクトリで使われている。IBM社内でもつかわれている?
    • AFSはインターネットのような貧弱な環境でも機能する。
  • アメリカ以外であまりつかわれていなかったのはKerberos(カーベラス)があった輸出規制があるから。
  • webからでもつかえる。(いまならdropboxがあるけど)
  • AFS: クライアント・サーバ・システム。P2Pではない。
  • Venus(ビーナス): クライアント (ハードコーディングされているので名前は変更負荷)
  • Vicea(バイス): ボリュームサーバ (ファイルを格納;ディレクトリ構造はもってない)
  • KDC: Kerberosの認証サーバ (アクセス制御)
  • DBS: データベースサーバ群
  • 十数年単位でノンストップで運用できる。
  • NFSとちがってAFSではプロトコルでキャッシュの挙動が規定されている。
  • AFSのNFSv4のアクセス制御はほぼ同じNTモデル。
  • FreeBSD7,8ではNFSサーバを構成変更して再起動するとfilehandleが変ってしまって(ブロックデバイスに依存してるので)、クライアントがreconnectできない問題があった。
  • AFSはサーバにログインしなくてもクライアントから管理ができる。
  • AFSのセマンティックス:
    • openしたときにサーバからファイルを全コピーする。
    • read/writeはクライアント上で行われる。サーバの負荷が上らないメリットがある。
    • closeでアップロードする。キャッシュは破棄される。
    • 複数クライアントがopenした場合、最後にcloseしたものが残る。
      • 勝手にマージされないのでファイル内の一貫性が保たれるメリットがある。ロック不要。
      • 書き込みはほぼ1箇所からと仮定する。たとえば昼は大学から夜は自宅から。
    • callback: 同じファイルopenするたびにコピーするのは無駄なので、ファイルが更新されたときに通知(サーバ→クライアント)を受け取るしくみ。
  • sequential read: AFSはファイルサイズが大きくなるとキャッシュが効いてきてNFSよりも速くなる。NFSだとキャッシュからあふれる可能性があるため。
  • sequential write: AFSは大きいファイルをちょっとだけ書き換えるときに性能が非常に悪い(open時に全readしたあとclose時に全writeするため)。
    • AFSにDBのファイルを置くのは無理。

[2014-11-13 20:05]

休憩

[2014-11-13 20:11]

  • 設定:
    • Heimdal(ヘイムダル) (Kerberos)
    • BIND (DNS)
      • 昔は/etc/hostsみたいなものが保守されていた。
      • 最初のデータベースサーバに繋ぐのに必要。
      • インターネットに公開してないゾーンサーバを立てればok。
      • _kerberos._tcp SRVレコードをつかう。_kpasswdとか _udpとかも設定する。
      • _kerberos TXTレコードでレルムを書く。
      • サービスディスカバリーになる。
      • セキュリティリスク: DNSのっとられたどうするの? → DNSくらい自分で守れよ!
      • セル名でアクセスできるように @ IN AFSDB 1 xxx.domain. でセル登録
      • _afs3-vlserver._tcp SRV (ボリュームロケーション)
      • _afs3-prserver._tcp SRV (プロテクションサーバ;アクセス制御する;認証はKerberos)
    • OpenAFSサーバ
    • OpenAFSクライアント
  • インストール: cd /usr/ports/net/openafs; make install;
    • 2週間前から壊れてたがが今日直した。カーネルモジュールが関係するので。。。
    • /var/openafsにファイルとかメタデータが入る。ログもここ(デフォルト設定ではsyslogには送らない)。
  • ルートは必ず/afs。その下は /afs/セル名。セル名はドメイン名にする必要はない。
  • /usr/local/etc/openafs の下のファイルはそのままでは使えない。。。
  • AFSができたときはKerberosは発展途上だったので鍵のフォーマットが特殊(AFSKEYFILE)。
  • AFSはいろんなプロセスがあるのでBOS(Basic Overseer Server)がセルを担当する。
  • bos -localauthオプションは認証の設定がおわるまでは必要。
  • /usr/local/etc/openafs/CellServDBは#の後はコメントじゃないので編集しないように。
    • [ ]がついてたらviでもつかって消さないといけない。。。条件は複雑。。。
  • pts createuser ... -id 1 -localhost で指定する-id 1はUIDとは関係ない。ローカルでユニークになってればok。
  • pts adduserはアクセス制御目的でグループにユーザを追加する意味がある。
    • グループsystem:anyuserは全ユーザ(自動的に追加される)、グループsysteem:authuserは認証を受けたユーザ。
  • 設定はBoSConfigに記録される。
  • もしサーママシンでAFS管理コマンドを実行したい場合はクライアントデーモンを起動しておく必要がある。
  • ボリューム名は vicepa,vicepb,.. をつかう。変えるとハードコーディングされてるものがたくさんあって困る。。。pはパーティション。バイス・パーティション・エー。
  • root.afsはいらないんだけど作らないとroot.cellをぶらさげられない。
  • NFSみたいにexportはできなくて、AFSでは独自DBになっているのでコピーする必要がある。ファイルは/vicepaの下に置かれる。
  • kinit ユーザ名/サービス名 が慣例。 e.g. kinit hrs/afs@ALLBSD.ORG
  • cronでつかうときは鍵をあからじめとりだしておく。

デモ

[2014-11-13 21:45]

  • 細かいコマンドがたくさんあってドキュメントが少ないので、とっつきにくい。
  • subversionのリポジトリはバイト・レンジ・ロックできないといけないのでAFSに置けない。。
  • Q: ディレクトリのキャッシュ管理は?
  • A: ファイルと同じ。デモでうまくいかなかったのは回線が細かったため。

[2014-11-13 21:48]

告知

  • Startup Weekend Tokyo Tech

_1240872_1240873

[2014-11-13 21:54]

告知

  • 35回FreeBSD勉強会 12/15 FreeBSD10.1 後藤さん

[2014-11-13 21:55]

  • Q: system:authuser に追加されるタイミングは?
  • A: ビルトインのやつは動的にグループに追加削除され、認証が通った時点で追加される。
  • Q: atimeはどうなってる?
  • A: AFSには時刻は1つしかなくて、mtimeがctime,atimeになる。

_1240875_1240876_1240877

_1240878_1240881_1240886