[Samba] Looking for a set of definitive answers (long)

Avery Payne apayne at pcfruit.com
Wed May 21 18:47:52 GMT 2008


Question:

We recently moved to a Samba-based file server, which holds mission-
critical data on it (.dbf files used by our Accounting software, etc.)  
The goal was to create a file server that had excellent performance while 
providing Volume Management, but we felt that something like Veritas was 
overkill for our needs.  

Design Goals:
- Redundant Hardware
- Manual Failover (this was an acceptable solution)
- Very large storage capacity (minimum 1 Terabyte)
- Better than 100Mbyte/sec throughput
- Volume Management, Journaled Filesystem
- Drop-In Replacement for aging Win2k file server
- Use existing admin tools to avoid retraining


The proposed solution was a Samba file server running on a pair of 
redundant servers, with one connected to an eSATA raid box, with LVM and 
Ext3 providing volume management and journaling.  Our transition was a 
bit rough, but in the end it has been very stable and fast.  We have been 
really pleased with the performance of the hardware/software combo, 
seeing sustained throughput of about 250Mbyte/sec with peaks as high as 
300Mbyte/sec.  But along the way, we encountered some oddities, and I 
have some remaining questions.

First, the oddities (long-time Samba devs and admins, take this with a 
grain of salt, when I say oddity I mean it from the perspective of an 
experienced Windows administrator):

- File permissions do not behave as expected (from the viewpoint of other 
staff working with the server).

The *nix permission bits cause a user, group, and "Everyone" entry to 
become permanent and persistent.  There was some initial grousing over 
this fact as our long-time Windows admin scratched his head over why he 
couldn't remove these entries as he saw fit.  After explaining that there 
would always be three settings no matter what, that they could never be 
deleted, and that they represented actual filesystem-level bits that 
wouldn't go away, it was accepted.  I didn't notice if this was in the 
docs or not, but I certainly didn't find it.  It also meant enabling ACLs 
on all of the filesystems and doing some creative thinking with the 
permissions.  The closest I could do was to map all files as owner root, 
group set to Domain Admins, and Everyone set to disallowed; members of 
the IT staff would be mapped with the "admin users" parameter; from 
there, any additional permissions would be mapped via ACLs.  We've found 
that this method has the closest behavior to a "real" Windows server and 
has satisfied everyone.

- Permissions don't propigate through the filesystem.

On a Real Windows Box(tm) you would be able to set permissions at the 
parent level of a directory and have them show up for each child object.  
Because the filesystem semantics are not the same in *nix-land, you need 
to go into the directly and manually propigate the permissions, or if 
you're stuck trying to administer permissions through a windows session 
(like the other IT staffers in my department), using the Advanced setting 
to force-reset all permissions on all child objects.  This has also 
caused a bit of grousing as we have several nested directories with a 
heiarchy of permissions; getting one parent directory wrong means 
rebuilding permissions for several child directories as well.  I have 
never been able to get a satisfactory answer as to how to resolve this 
issue, other than the process I described above (which I had to resolve 
for myself without documentation).

- To oplock or not to oplock: that is the question

The documentation is not entirely clear about when you should and 
shouldn't use oplocks on shared files.  It would have been much simplier 
(IMHO) to simply say "use your best judgement, BUT if you are using 
shared data files like Access or Excel or DBF's, you will want to disable 
them or you'll have problems!".  Yes those words show up on newsgroups, 
but it should also show up in the documentation clearly.

- Office file locking workaround(s) were not immediately obvious

Buried in the nice (but large) Official Samba Reference and HOWTO is a 
fix for sharing Word and Excel files through Samba, which involves using 
the sticky bit for group permissions.  While the fix was adequate and 
works well, it should have been I think a little more prominently 
displayed in the documentation.

- What?  You want me to unlock that file?

We have had recurring instances where a workstation on the network has 
seized a DBF file and held onto it, not allowing any other workstation or 
server to perform writes to the file.  This locking issue shows up in 
random intervals and always requires that we have the person quit the 
program we are using and log back in.  It is not an application issue 
that we can determine - the rest of the system continues to funciton, it 
just prevents one of our servers (or anyone else) from locking the file.

- Speaking of which - just WHO does have that file lock?

For some reason, using the computer management tool in a windows 
workstation shows stale information.  In our past arrangement, we were 
able to determine who would have the locked file by simply connecting the 
tool to the server, and sorting on the number of locks present; the tool 
would show the data file with a lock count greater than zero.  Apparently 
this doesn't fly when connecting to the Samba server - it shows files 
open, but the lock count is for ALL locks (including reads) and not just 
write locks.

- You sure you still have that file open?  It says you don't even have it!

The computer management tool also has an issue with data appearing to be 
stale.  Workstations that have been powered down still show a file open.  
Or in some cases, the workstation is working with the file, but no file 
handle appears in the tool!  This was (and still is) a major issue for 
our staff, and as a result of this they have learned not to trust this 
once-reliable tool, because from their point of view, it lies to them.  I 
have had to come up with some work-arounds and while they do work they 
are suboptimal in their eyes.

Now, the remaining question(s):

- The vendor initially set up our authentication via tdb files and 
Winbind.  We have been using this combination succesfully for some time, 
but in the Official Samba Guide it talks about regular maintenance of the 
tdb files via tdbbackup.  The department head has asked that I find the 
definitive answer on how to do this, as we cannot afford more than a few 
minutes of scheduled downtime.  The vendor's response was that tdb files 
should not be used because they can be corrupted when applying tdbbackup 
to them (despite the fact that it was the vendor that set us up to use 
them to begin with - go figure).  This has caused even more concern - 
millions of dollars in business and 50+ users are supported by this 
server, running 24/7/365.  So, if we were to loose our file server 
tomorrow, and had to activate the backup server (which we would do by 
plugging in the eSATA array into the new units and starting up the 
system), how could we guarantee that the GUIDs, etc. would be consistent 
and we wouldn't have a complete mess on our hands?  I have seen someone 
else recently mention that they should be using an LDAP authentication 
backend.  So who's correct, the vendor's original setup which uses tdb 
files, or the 2nd vendor response which says don't use them, or should we 
be on LDAP authentication connected to our Win2k3 domain controllers?

- Is there a way to get the Computer Mangement tool to not "lie" to us 
about the state of file handles and locks?  It would be a godsend to not 
have to watch everyone roll their eyes because the "expected" way of 
locating file issues simply doesn't work for them.  This is an ongoing 
issue and I can't really provide a satisfactory answer - even SWAT 
appears to have this issue as well!  I have resorted to shell scripting 
to provide us with the answers we need but this is hardly a long-term 
solution.  Is there some magic setting I need to flip in the registry for 
our Windows XP clients to make this issue just go away?  Is it related to 
protocol changes in the newer versions of the Windows redirectors?  Just 
why does this happen?

A parting thought as well:

It would have been nice to have had a reasonably generic template or 
example somewhere that pointed this out, instead of wasting an incredible 
amount of time (a month!) reading many many many pages of documentation, 
sometimes scattered into different chapters, as well as contacting the 
vendor twice with over a half-dozen messages.  I would think that a 
simple, single smb.conf file named "smb.conf.dom-member.filesserver" with 
a generic looking setup would have resolved many of these issues, by 
having the appropriate settings and comments already in the file while 
pointing out what parts of the template needed to be changed.  Everyone 
that I have talked to outside of my work looks at Samba as a drop-in 
replacement for existing Win2k(3) file servers, and a template with 
settings that come closest to emulating that same behavior would go a 
long ways towards adoption.  I'm not trying to be overly critical, but 
rather, I'm trying to point out a missing part of the software package 
that I think administrators would like to have, especially as more and 
more companies start to operate in mixed environments.



More information about the samba mailing list