Tuesday, February 17, 2009

XP doesn't like my OS X SMB share

XP really doesn't like my OS X 10.5.6 SMB share. I tried copying about 50 GBs of files from my XP box to the OS X SMB share over a 100mbps wired connection using xcopy and robocopy. I'd mapped a drive letter to the OS X share.

Problems included:
  1. Time stamps aren't processed correctly. So even though date attributes appeared to copy correctly, both xcopy and robocopy interpreted the dates incorrectly (treated them as older than the XP source files).
  2. After processing for a while the transfer would halt, and I'd lose all network connectivity (no ping responses). The usual error message was "the specified network name is no longer available", sometimes I saw "The semaphore timeout period has expired". It looked like the XP network stack had blown up. If I opened up a second terminal session, and just browsed the distant share things would restart.
  3. Inevitably I'd start getting "Access is denied" messages with some files. They appeared to be file associated, but I could copy them in Windows Explorer. Once I got the message with a file it was persistent.

Wow. Really bad stuff. Following Microsoft's advice for network troubleshooting I tried setting the ethernet limit to 10mbps but the behavior didn't change.

I've had pretty predictitable problems with simply copying large numbers of files between XP machines using Explorer on many machines, but xcopy and robocopy are pretty reliable.

Something's definitely broken here, but danged if I can figure it out. My best guess is that the OS X SMB share is doing something that's cracking Microsoft's fragile SMB stack, but really it could be a network adapter hardware issue too.

I suspect I won't be able to solve this one easily. I'll try copying the files using the OS X machine and see if things work any better.

Update 2/18/09: I had no problems copying the files using the XP machine as a server and the OS X machine as a client. The date stamps on directories were also correct, I don't think the OS X SMB server sets copied directory dates equal to source directory dates.

My best guess is that the miserable behavior I'm seeing is not a hardware or network issue, but rather the result of bugs on both sides. My past looks into Microsoft's networking protocols have convinced me the "Heart of Darkness" has nothing on Redmond's legacy networking infrastructure. On the other side, I doubt Apple is putting a lot of energy into making OS X into a respectable SMB server.

Update 2/21/09: I’m now seeing crashes of the XP network stack, whether I use the OS X machine or the XP machine as the SMB server. Before the crash I sometimes see transfer rates slow. I can restore the stack by disabling my XP LAN connection then re-enabling it. I uses an new cable to directly connect the two machines (no router or switch) with no change – so it’s not a network problem.

I’m now copying files to an external USB drive which I’ll then move to the OS X machine manually. The process is exquisitely slow on the old XP box compared to throughput over 100 mbps LAN. The average real world throughput on the LAN was 6 Megabytes/sec, on my USB 2 XP connection it’s probably less than 1MB/sec.

I’d love to blame all of this on Microsoft’s SMB and Apple’s SMB implementation – that’s what I thought on 2/18. Alas, that’s too easy. This problem is too severe – and now I’m noticing problems restarting my XP box. It could be some nasty bug/virus/etc, but I actually suspect the motherboard itself is failing.

I’m not sure how old this machine is, I’m guessing about 2003. It is the first computer I’ve owned that died of old age while it was still quite useful.

Update 2/21/09: Now that I've moved everything and have been cleaning up the XP box, I notice I had Windows Search 4.0 set to index an iMac SMB share mapped to a local drive letter. Hmmm. That might put some extra stress on SMB. I'll see how things behave after removing Windows Share (I don't need it now for the XP box, I can use Spotlight on the iMac).

Update 2/22/09: I've been pushing GBs across the LAN using Retrospect Pro 7.1 (Windows) without a problem. I think the hardware is fine. I think the OS X SMB support is probably not immensely worse than native Windows SMB. Now I'm thinking I pushed the envelope a bit far when I had Windows Search 4.0 indexing a remote OS X SMB share.

Update 5/6/09: Replaced my NIC and things look much better.

4 comments:

Lindsay's said...

Gordon: You might try "Teracopy". I've had this installed on my XP machine for quite some time, and I've moved many a large fileset to and from my Macs.

http://www.codesector.com/teracopy.php

No guarantee that this will help you overcome what might be network adapter or protocol level issues, but the file transfer resume might at least make a slowed link tolerable.

Charles Lindsay

John Gordon said...

Thanks Charles, that looks like a great tip. My experience has been that SMB file sharing doesn't work all that well in pure XP environments (which is why Microsoft itself wrote robocopy), but when OS X tries to be the server things are even worse.

Really, SMB should be buried with a stake through its heart.

The Dude said...

Apple's implementation of SMB is beyond broken. I gave up on it along time ago and installed NFS on my Winblows machine. That lets me mount it over the network and works like a champ.

John Gordon said...

I agree Dude, except I'd also add that Microsoft's implementation of SMB is broken.

In other words, SMB is just broken.

Apple's SMB though, is even more broken -- so "beyond broken". I don't know how Linux SMB is, but since NAS boxes are supposed to work and I think they run Linux SMB I assume Apple's implementation is uniquely broken.

A good point to remember when one hears of Apple's astounding brilliance. Their brilliance is only relative, and not as obvious as late as it once was.