分散ファイルシステム (DFS) はネットワーク上にある資源について実際の物理的な配置 から、ユーザーが見ているファイルとディレクトリの論理的ビューを切り離す手 段を提供する。 高い可用性と円滑なストレージ拡張、負荷分散などを可能にする。
DFS の情報について、Microsoft documentationを参照のこと。 この文書は、 Samba を利用している UNIX で (DFS対応クライアントがブラウズするため) DFS ツリーを どのようにホスティングするか説明する。
Samba サーバーは、smb.conf
ファイルのグローバル Boolean パラメーター
host msdfsを設定することで DFS サーバーにできる。
共有レベルの論理値パラメーターmsdfs rootによっ
て共有を DFS ルートとして指定できる。
Samba 上の DFS ルートディレクトリはシンボリックリンクの形式で DFS リンクを提供
できる。例えば、共有ディレクトリ内のシンボリックリンク
junction->msdfs:storage1\share1
は DFS ジャン
クション (接点) として機能する。 DFS 対応クライアントがジャンクションリ
ンクにアクセスしようとするとき、それらは実際のストレージ ( この場合
は \\storage1\share1
) にリダイレクトされる。
Samba 上の DFS ツリーは、 Windows 95 から Windows 200x までの DFS 対応クライア
ントをサポートしている。
以下の設定例は、 Samba サーバーでどのよう
に DFS ツリーを設定するかを示す。
ディレクトリ/export/dfsroot
内で、他のネットワーク上のサー
バへの DFS リンクを設定する。
root#
cd /export/dfsroot
root#
chown root /export/dfsroot
root#
chmod 755 /export/dfsroot
root#
ln -s msdfs:storageA\\shareA linka
root#
ln -s msdfs:serverB\\share,serverC\\share linkb
DFS ルートとして使用しているディレクトリのパーミションと所有者の設定を行い、 特定のユーザーだけが msdfs リンクを作成、削除、変更できるように設定すべきであ る。 シンボリックリンク名は、すべて小文字にすべきことに留意すること。この制約は、 Samba が、リンク名を取得するために、すべての大文字、小文字の組み合わせを試 すことを避けるために設けられている。 最後に、ネットワーク上の共有したいところへシンボリックリンクを張り、Sambaを起動する。
これで DFS 対応クライアントは、 \\samba\dfs
にある Samba
サーバー上の DFS ツリーをブラウズすることができる.
リンクa,リンクb(クライアントからはディレクトリとしてみることができる)
に アクセスすると、ユーザーは直接ネットワーク上の共有資源にアクセスす
ることになる。
Windows クライアントは、以前 DFS でなくマウン トされていたものが、 DFS ルートとしてマウントされたり、その逆 を行ったりすると、 リブートする必要がある. よりよい解決方法は、新規の共有として 公開し、DFS ルートとすることである。
現状では制約事項として、msdfs シンボリックリン ク名はすべて小文字で記述される必要がある。
セキュリティのために、DFS ツリーのルートとな るディレクトリは、特定のユーザーのみがそのディレクトリ内でシンボ リックリンクを変更できるように所有者とパーミッションを設定する 必要がある。
あるネットワーク管理者は何故 DFS が機能しなかったかを究明しようとした長い会議 の後に Samba メーリングリストにアドバイスを送った。 彼のアドバイスには注意する価値がある。
「 私の特定の DFS ルートが機能しない理由を解明するためにいくらかの時間を費やした。 私はシンボリックリンクはすべて小文字で記述するべきであると文書に書かれているこ とに気がついた。シンボリックリンクへのフルパスをも小文字で書き直すことにした。 」
「設定例: 以下のように定義された共有がある」
[pub] |
path = /export/home/Shares/public_share |
msdfs root = yes |
「そして (DFS クライアントがインストールされた) Windows で、以下のシンボリックリンクをたどることができなかった。 」
damage1 -> msdfs:damage\test-share
「デバッグレベルを10にして実行して明らかになったこと」
[2003/08/20 11:40:33, 5] msdfs/msdfs.c:is_msdfs_link(176) is_msdfs_link: /export/home/shares/public_share/* does not exist.
「気になる。 私はディレクトリ名
を .../Shares/...
から
.../shares/...
に変更した。 (サービス定義
に伴って) そして、機能するようになった!」