ShirishKalele
Samba Team & Veritas Software
samba@samba.org
12 Jul 2000
Hosting a Microsoft Distributed File System tree on Samba
Features and Benefits
The Distributed File System (or DFS) provides a means of separating the logical
view of files and directories that users see from the actual physical locations
of these resources on the network. It allows for higher availability, smoother
storage expansion, load balancing etc.
For information about DFS, refer to
Microsoft documentation at http://www.microsoft.com/NTServer/nts/downloads/winfeatures/NTSDistrFile/AdminGuide.asp.
This document explains how to host a DFS tree on a Unix machine (for DFS-aware
clients to browse) using Samba.
To enable SMB-based DFS for Samba, configure it with the --with-msdfs
option. Once built, a Samba server can be made a DFS server by setting the global
boolean host msdfs
parameter in the smb.conf file. You designate a share as a DFS
root using the share level boolean
msdfs root parameter. A DFS root directory on Samba hosts DFS
links in the form of symbolic links that point to other servers. For example, a symbolic link
junction->msdfs:storage1\share1 in the share directory acts
as the DFS junction. When DFS-aware clients attempt to access the junction link,
they are redirected to the storage location (in this case, \\storage1\share1).
DFS trees on Samba work with all DFS-aware clients ranging from Windows 95 to 200x.
Here's an example of setting up a DFS tree on a Samba server.
# The smb.conf file:
[global]
netbios name = SMOKEY
host msdfs = yes
[dfs]
path = /export/dfsroot
msdfs root = yes
In the /export/dfsroot directory we set up our dfs links to
other servers on the network.
&rootprompt;cd /export/dfsroot
&rootprompt;chown root /export/dfsroot
&rootprompt;chmod 755 /export/dfsroot
&rootprompt;ln -s msdfs:storageA\\shareA linka
&rootprompt;ln -s msdfs:serverB\\share,serverC\\share linkb
You should set up the permissions and ownership of
the directory acting as the DFS root such that only designated
users can create, delete or modify the msdfs links. Also note
that symlink names should be all lowercase. This limitation exists
to have Samba avoid trying all the case combinations to get at
the link name. Finally set up the symbolic links to point to the
network shares you want, and start Samba.
Users on DFS-aware clients can now browse the DFS tree
on the Samba server at \\samba\dfs. Accessing
links linka or linkb (which appear as directories to the client)
takes users directly to the appropriate shares on the network.
Common Errors
Windows clients need to be rebooted
if a previously mounted non-dfs share is made a dfs
root or vice versa. A better way is to introduce a
new share and make it the dfs root.
Currently there's a restriction that msdfs
symlink names should all be lowercase.
For security purposes, the directory
acting as the root of the DFS tree should have ownership
and permissions set so that only designated users can
modify the symbolic links in the directory.