|
日本 Samba ユーザ会 (Samba Users Group Japan)
Samba 概説 〜 NT との比較を交えてSamba 概説 〜 NT との比較を交えて
佐藤文優 <fumiya@cij.co.jp>
最終更新 1999/12/01(Thu) Windows NT Intranet Solutions における発表の準備として書いた原稿ですが、実際に発表した内容とは多少異なります。ご了承ください。 最後に添付した正誤表に注意。
目次Samba とは?はじめにみなさん初めまして、私、佐藤文優と申します。これから、「Samba 概説」と題した発表を始めたいと思います。 本セミナーのメイン・テーマは、「Intagration UNIX into Windows NT」です。Samba は、そのような要求を満たすことができる、一つの重要な選択肢であると考えます。これから NT と UNIX の統合を迫られている管理者の方、あるいは、特に必要に迫られていないが Samba に興味を抱いている方、そんな方々の取っ掛かりとなるべく、NT との比較を交えながら Samba を解説しようとするものです。 Samba はどんなもの?さて、この Samba という奇妙な名前をもつものは何者で、ユーザにどのような恩恵をもたらすのでしょうか。Samba とは、UNIX で動作する一連のソフトウェア群のことを指したパッケージの名前です。これは、オーストラリア生まれのフリー・ソフトウェア・パッケージで、無償で配布されています。Samba を UNIX に導入することで、UNIX は Windows ネットワーク環境の仲間に加わることができます。もちろん、Windows NT も仲間になります。
Windows と UNIX は見た目が異なり、中身も全然違うようにも思えることがありますが、そこに Samba を足すだけで、相互に助け合うことができるようになるのです。まさに、NT と UNIX の統合にはもってこいの一品ですね。 NetBIOS over TCP/IP以下の図は、Windows ネットワークのプロトコル構成を示したものです。この中では NetBIOS が重要です。 NetBIOS は遙か昔、IBM が PC 間ネットワーク用のプロトコルとして採用したものです。IBM の LAN サーバや OS/2、Microsoft の Windows ファミリでも使われる共通の仕様として普及しました。 その上には SMB - Server Message Block と呼ばれるプロトコルがあります。Windows のネットワーク共有機能は、この SMB で実装されています。このことから、Windows ネットワークのサーバとクライアントは「SMB サーバ」あるいは「SMB クライアント」と呼ぶことがあります。 NetBIOS は当初、NetBEUI という下位プロトコルで実装されましたが、後に IPX/SPX、TCP/IP を使う NetBIOS も開発されました。 Samba は、旧来から UNIX で使われてきた TCP/IP を利用して、NetBIOS と SMB を実装しています。そのため、Windows NT などが Samba と接続するには、Windows ホストに TCP/IP をインストールする必要があります。 アプリケーション層 プレゼンテーション層 セッション層 トランスポート層 ネットワーク層 データリンク層 物理層 対応 OS以下のように、Samba が動作する OS は非常に多いです。有名どころはもちろん、ほとんど聞かれない名前までありますね。変わり種は OS/2 あたりでしょうか。また、Netware とか、私はよくわかりなせんが、いまは亡き DEC の VMS で動作する版もあります。多く用いられているプラットフォームは Linux と SunOS だそうです。
Samba の役割以下に挙げるものは、Windows ネットワークにおいて Samba が果たすことができる機能です。
ディレクトリ/プリンタ共有のサーバ最も多く求められる機能は、やはりディレクトリとプリンタの共有機能だと思います。UNIX から利用できるディスク・スペースとプリンタを、Windows NT から利用することができます。 Samba による共有サーバ機能は、Windows によるサーバと等価な機能を持ちます。Windows ホストは、ほかの Windows の共有を利用するのとまったく同じように、Samba の共有を利用することができます。ユーザが、サーバの違いを意識する必要はありません。 Samba をはじめてこれをやると、結果がわかっていながら、なかなか感動できます。まあ、Windows の共有以上でも以下でもないので、すぐに飽きますけど。それほど互換性が高いということですね。 ブラウズ・サーバWindows ネットワークでは、クライアントはネットワーク上の資源を検索するために、ブラウジングという動作を行います。また、自分自身がほかのホストからブラウズされるように、定期的に自分の存在をネットワークにアナウンスします。ホストのアナウンス情報を集め、資源を提供しているサーバの一覧を提供する役目を負うのが「ブラウズ・サーバ」と呼ばれるものです。マスタ・ブラウザともいいますね。 ブラウザにはいくつか種類があるのですが、解説は割愛させていただきます。Samba はドメイン・マスタ・ブラウザを含む、どんな種類のブラウズ・サーバにもなることができます→正誤表へ。 WINS サーバTCP/IP を利用した Windows ネットワーク環境では、各ホストが WINS サーバにホスト名を登録することで、WINS サーバを利用してホスト名から IP アドレスを求めることができます。制限付きですが、Samba は WINS サーバとして動作させることができます。 制限とは、次のようなものが挙げられます。
共有/ブラウザ/WINS のクライアントSamba はサーバだけではなく、クライアントとしても利用できます。
Samba を使って、UNIX から Windows の共有にアクセスすることができます。しかし、誰もが期待するような、ローカルのファイルシステムと同様に共有をアクセスすることはできません。共有にアクセスするには、専用の
一般的に、ローカルのファイルと同じようにリモートのファイルを扱えるようにするには、OS に手を加える必要があります。SMB のディレクトリ共有を透過的に利用できる UNIX としては、 Linux ぐらいしかありません。 プリンタ共有を利用する場合は、Samba のクライアント・プログラムをフィルタとして UNIX の印刷システムに組み込むことで、UNIX 標準のプリンタ資源と同じように、SMB のプリンタ共有を利用できます。 ドメイン・コントローラ認証サーバである、ドメイン・コントローラ機能を持ちます。しかし限定的なもので、Windows 95/98 しか Samba によるドメインにログオンできません。 Samba は NT 未満?Samba の基本的な機能は以上です。紹介しましたように、現在の Samba にはまだ足りない機能がいくつかあります。しかし、そのほとんどは将来解決されるものです。将来の Samba、バージョン 2.0 については、またのちほど取り上げます。 プログラム構成Samba がどのような構成になっているのか見てみましょう。Samba は主に、次のようなプログラムで構成されています。
NT サーバとの比較Samba を導入する理由としては、NT と UNIX の統合という答えがまっさきに思いつくと思いますが、NT にない Samba の優位点を享受したい、というのも考えられるでしょう。先に述べたように、NT サーバを完全に置き換えるには不十分ではありますが、特定の用途に限れば Samba を検討してみるのもよいかもしれません。 以下の点について、簡単ではありますが比較してみましょう。主に、Samba を共有のサーバとして利用した場合を想定していますが、それ以外の場面でも一部適用できます。
設定・管理Samba は、多くの UNIX のソフトウェアと同様に、設定を単純な構造をしたテキスト・ファイルに記述します。
設定ファイルの例を見てみましょう。構造は単純明解です。
このように、設定は大括弧 `
これ以外のセクション、
となります。 柔軟性Samba の設定パラメータには、実に 190 あまりものパラメータがあります。そのうちの十数個はあるパラメータの別名であったり、いくつかは UNIX と NT の非互換性を吸収するためのものです。さらに、UNIX 特有の機能を利用するためのパラメータもあります。 中には NT には存在しないパラメータが、少なくとも 20 前後あります。
ほかにも、調整用のパラメータが用意されています。いくつかは NT でも標準で設定できたり、レジストリを編集することで設定できる項目もありますが、ここまで細かい項目はないのではないでしょうか。
パフォーマンス二昔前の Samba は NT に比べて遅いと評判でしたが、最近の 2 回のマイナー・バージョンアップにより、NT 並の速度を叩き出せるようになりました。改善されたのは、次のような実装が行われたためです。
「共有モード」とは「拒否モード」とも呼ばれているもので、一種のファイルのロック処理、つまり排他制御を実現するための機能です。クライアントは共有上のファイルをオープンするとき、この共有モードを設定します。そして、ほかのクライアントが同じファイルを読み込んだり、書き込んだり、削除するのを防ぐことができます。 バージョン 1.9.16 までは、この機能をファイルを使ったテーブルで管理していました。1.9.17 では、このテーブルをメモリ上に持つことで、速度アップを計りました。 続いて、1.9.18 では、`opportunistic locking' と呼ばれるクライアントによるキャッシュを許可する機能を実装しました。クライアントがこのロックをサーバに要求すると、サーバはほかのクライアントがロックを行っていないか調べます。誰もロックしていないのであれば、クライアントにロックを許可します。するとクライアントは、ファイルへの読み書きを自分でキャッシュするようになります。 これらの実装により、Samba サーバのファイル共有のパフォーマンスは NT に匹敵するようになったと言われています。 安定性統計を取ったわけではないので正確なことを申し上げられませんが、私の認識では Samba の動作は非常に安定しています。設定の問題や互換性の問題はよく耳にしますが、バグが原因で Samba がクラッシュしたという話は、私自身は聞いたことがありません。データが破壊されたということもありません。 ソフトウェアの宿命で、正式リリースであっても、若いパッチ・レベルのバージョンは、それなりに潜在的なバグが多く含まれているようです。Samba開発チームの対応は早く、致命的なバグは数日のうちに修正されます。細かいバグもちょこちょこと修正され、後期のパッチ・レベルになると安定期に入ります。 ある統計情報によると、Samba サーバ 1 台あたり 1,000 以上ものクライアントを賄っているとか、Samba サーバ 20 台で 100,000 ユーザのデータベースの共有を実現しているという報告もあります。この例は、Samba のパフォーマンスの高さだけでなく、信頼性の高さも表していると言えるでしょう。 コストコストの差を比較してみましょう。まずはじめに言い訳をしておきますが、私は厳密なコストの計算方法を知りもしないし、双方のシステムの運用・管理の経験は、エンドユーザに毛が生えた程度しかありません。そのため、これから述べるコスト計算は、あまり正確でないでしょう。1 ユーザの感想であると受け取ってもらえれば幸いです。 数あるコストのうち、NT と Samba のコストの差が出るのは、資産コスト、管理・運用コストであると考えました。以下にその差と理由を簡単に挙げます。
資産コストSamba はフリー・ソフトウェアです。「フリー」の意味には、「自由」であるとか「束縛されない」という意味あいが強いのではないかと思いますが、Samba は「無料」でもあります。フリーの UNIX OS と組み合わせれば、ソフトウェアにかかるコストはまったくなし。NT のほうは、クライアントの分だけライセンス料が必要です。 さらに、NT に比べ、一般的に UNIX のほうが OS が軽いと言われていますから、より低いハードウェア・リソースでも十分かと思われます。 管理コストトータルの管理コストは、ほぼ同等と判断しました。ただ、NT の仕様の不透明さの分だけ減点しました。ブラックボックスは、うまく動いているときは余計で煩雑なものを隠してくれます。しかし、障害が起きたときには、肝心な部分を見ることができないことがあります。お仕着せの GUI 管理ツールしか用意されていない場合はさらにひどく、何が起こっているのかまったく理解できないこともあります。 仕様がわからないということは、システムの弱点を知り難いし、より高レベルなシステム設計を行ううえでの障害になることもあります。 技術サポート・コスト「フリー・ソフトはサポートがないから…」といった理由で導入をためらったり、あるいは上長に拒否されることもあるでしょうが、これは NT もほとんど同じです。最近知ったのですが、NT Server などの「アドバンストシステム製品」と呼ばれる製品群には、無償サポートがありません。 有償でよければ、NT をサポートしてくれるベンダーは山ほどあります。一方、Samba をサポートしてくれるベンダーは数えられるほどしかないのが弱みです。 「フリー・ソフトは保証がないから…」といった理由でフリー・ソフトが敬遠されるという話もたまに耳にします。しかし、ほとんどの方はお気づきのように、一般的に、ソフトウェアに品質保証などありません。もちろん、NT にも保証はついていません。バグが怖いなら、ソフトウェア・ベンダーに膨大なお金を積んで、特別な契約を結ぶしかないのです。 Samba に欠けているものここまでの NT との比較では、やや Samba が優位に立っていました。公平を期すため、先にも挙げたものも含めて Samba の不完全な部分をまとめておきましょう。
Samba の動向このような一面を見ると、Samba を適用できる場面は以外に限られてしまうのがわかります。しかし、以前パフォーマンスの問題を克服したように、Samba 開発チームが指をくわえているわけがありません! Samba ユーザが熱望する機能を搭載し、バージョン 2.0 としてのリリースが近づいています。 Samba 2.0 の目玉は次の通りです。
8 月 31 日に、2.0 の初のα版がリリースされています。1 週間に 1 度くらいのペースで更新され、現在は 10 月 20 日付けのα 13 が最新版です。過去の例から推測すると、α版は 20 ほど作成されると思われるので、早ければ年内、遅くとも春までには正式版がリリースされるのではないかと期待しています。どんなに遅くても NT 5.0 よりは早いでしょう。
期待を裏切って、一部のサポートを見送って、バージョン 1.9.20 などをリリースする可能性も考えられなくもないです。 完全なドメイン・コントローラNT 互換のドメイン・コントローラ機能です。ようやく NT クライアントをドメインに加えることができます。→正誤表へ Samba には、バックアップ・ドメイン・コントローラにユーザ情報をコピーしたり、自身がバックアップになることはできないようです。予想ですが、作り込めば不可能ではないでしょう。そのような実装を誰かが作成してくれることを期待しましょう。 LDAP サーバ上のユーザ・データベースの参照LDAP (Lightweight Directory Access Protocol) サーバにユーザ情報を管理させ、それを Samba から利用することができるようになります。NT 5.0 には Active Directory と呼ばれる一種の LDAP をサポートするらしいですが、それを意識しての機能だと思われます。 任意のホスト、任意の種類の LDAP サーバを参照することができます。 NT の Active Directory を参照できるかどうかは不明です。Microsoft が仕様を公開すれば、いつかはサポートされることでしょう。 GUI 管理ツール `SWAT'Web ブラウザを介して Samba の設定を行うツールです。既存の Web サーバから CGI として起動したり、ツール自身を Web サーバとして起動することができます。 この手のツールは実装の煩雑さを隠してくれるので、重宝される方もいらっしゃるでしょう。 Samba は NT の代わり?ここまでの解説の通り、Samba は NT と UNIX と統合以外にも、将来は NT サーバを完全に置き換えてしまう目的にも使えるようになります。 それ以外に、UNIX とまったく縁がない Windows ネットワーク環境であっても、Samba に触れることには次のようなメリットがあると考えられます。
実装の勉強エンド・ユーザはともかく、管理者ともなれば実装がどのようになっているかを理解すべきです。実装を熟知していれば、まだ見ぬ障害に迅速に対応できるでしょうし、ユーザの要求をより多く満たすシステムの構築もできます。セキュリティの弱点も抑えられます。 NT は、コストの比較で述べたように実装が不透明な部分が多いです。豊富な解説書に頼ることもできますが、机上の理論だけでは限界があるため、実機での Try & Error を繰り返すことになると思います。 そこで Samba が役立ちます。Samba は NT を模倣した実装です。Samba の実装を理解することで、NT を理解するための道しるべとなるはずです。 Samba の豊富なパラメータは、Windows ネットワークにはどのような条件が影響するのかを解き明かしてくれます。もちろん、パラメータの値を変えることで、様々な条件の動作検証を行うこともできます。 仕様書とテストを行っても解明できなければ、Samba のソース・ファイルを読むことができます。必要であれば、OS のソースを追うのもよいでしょう。 UNIX に触れるよい機会Samba を触れると、おまけとして UNIX にも触れられます。 UNIX は全体像は複雑ですが、個々の基本的な要素は単純です。多くはそれらを組み合わせて実装してあるため、理解するのは NT より容易です。 Samba を知るのと同様に、UNIX を知ることで NT という OS を理解する手助けにもなります。異なるシステムと比較することで、NT の長所と短所を知ることもできます。 情報源 - http://samba.bento.ad.jp/
正誤表発表後に発覚した誤りをお詫びして訂正します。
|