# Sambaでのマイクロソフト分散ファイルシステムのホスティング

# Instructions

分散ファイルシステム（Dfs）は、論理的なファイルやディレクトリの存在を、 ネットワーク上に現実に存在する位置から切り離す機構のことである。これにより、 高い有効性、記憶容量のスムーズな拡張、負荷分散等が行える．Dfsに関するより詳細な 情報は、以下を参照のこと Microsoft documentation.

このドキュメントでは、どのようにしてSambaを利用してUNIXマシン上でDfsツリーを ホストするか（Dfsクライアントからどのように見せるか）を解説する．

SambaでSMB−baseのDFSを有効にするには、`--with-msdfs` パラメータを設定する．いったんビルドすると、Sambaサーバーは`smb.conf` ファイルのグローバルパラメータ `host msdfs` をセットすることで、Dfsサーバーを起動するようになる． Dfsルートとしての提供の有無は、`msdfs root`パラメータで指定することができる． Samba上のDfsのルートディレクトリはシンボリックリンクの形式を使い、他のサーバーを指し示す Dfsリンクを提供できる． たとえば、共有ディレクトリ上のシンボリックリンク`junction->msdfs:storage1\share1`は Dfsジャンクション（接点）として機能する．Dfsクライアントがこのジャンクションにアクセスすると、 実際のストレージ（この場合は￥￥strage1￥share1）にリダイレクトされる．

SambaのDfsツリーはWindows 95から2000までのDfsクライアントをサポートしている。

以下に、SambaサーバーでのＤｆｓツリーの設定例を示す

    # The smb.conf file:
    [global]
    	netbios name = SAMBA
    	host msdfs	 = yes

    [dfs]
    	path = /export/dfsroot
    	msdfs root = yes

/export/dfsrootディレクトリ上で、ネットワーク上の他のサーバーへのリンクを設定する。

`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のルートとして使用しているディレクトリのパーミションとオーナーの設定を行い、 特定のユーザーだけがリンク名をクリエート、削除、変更できるように設定すべきである． リンクで使用できる名前は、すべて小文字であることに留意すること．この制約は、Sambaが リンク名を取得するために、すべての大文字、小文字の組み合わせを試さなければいけない煩雑さを 避けるために設けられている。最後に、ネットワーク上に公開したい位置にシンボリック リンクを張り、Sambaを起動する。

これでDfsを使用するクライアントユーザーは、\\samba\dfsにあるSambaサーバーのDfsツリーを 参照することができる．linka,linkb（クライアントからはディレクトリとしてみることができる）に アクセスすると、ユーザーは直接ネットワーク上の共有資源にアクセスすることになる．

## Notes

- Windowsのクライアントは、以前Dfsでなくマウントされていたものが、 Dfsのルートとしてマウントされたり、その逆を行ったりすると、リブートする必要がある． よりよい解決方法は、この場合、新規の共有として公開し、Dfsのルートとすることである．

- 現状では制約事項として、マイクロソフトDfsのシンボリックリンク名はすべて小文字で 記述される必要がある。

- セキュリティーのために、Dfsツリーのルートディレクトリは、 オーナーとパーミッションを指定し、特定のユーザーのみがディレクトリのシンボリックリンクを 変更できるように設定する必要がある．