SMB version issue with NTFS junctions

SMB

Working with NTFS junctions (mountpoints) gave us some issues while querying the size of the file share. The OS of the client (Windows XP in this case) returns the size of the disk where the folder resides the mountpoint is created on. So is doesn’t display the real size of the disk that is mounted at that directory but only the size of the parent disk. The server side in this case is a DFS enabled Windows 2008 R2 server with one C:-partition and several disks mounted at different directories.

When creating a network mapping F:\ pointing to a DFS share with Windows XP/Windows 2003 it displays the size of the C:-drive of the fileserver instead of the size of the underlying disk/volume at that mountpoint.
smb_junction1

When doing the same from any other Windows 7/2008 machine it shows the right size.

smb_junction2

 

It seems the time is right again to run into this issue. Surprisingly this is not a new phenomenon. Today we see the effects more clear because we see different behaviour between WindowsXP/Windows 2003 and Windows 7/Windows 2008.

This issue happens to be around for some time now, back in the days of Windows NT we already saw this issue. Microsoft happens to have an implementation of SMB 1.0 in earlier operating systems. Windows server 2008 and/or windows vista/7 or higher have an implementation of SMB version 2.0 which solves the issue. These later OS-version display the right sizes.

Microsoft explains it here: http://support.microsoft.com/kb/177127/en-us

When communicating between different version of the OS there happens to be some sort of handshaking process…

Here’s how SMB is used related to OS versions:

  • When a Windows Server 2008/2008R2/Vista/7 "client" connects to a Windows Server 2008/2008R2/Vista/7 "server", SMB 2.0 is used.
  • When a Windows Server 2008/2008R2/Vista/7 "client" connects to a Windows 2000/XP/2003 "server", SMB 1.0 is used.
  • When a Windows 2000/XP/2003 "client" connects to a Windows Server 2008/2008R2/Vista/7 "server", SMB 1.0 is used.
  • When a Windows 2000/XP/2003 "client" connects to a Windows 2000/XP/2003 "server", SMB 1.0 is used.

So when SMB 1.0 is used only the size of the parent disk that holds the driveletter is shown. SMB 2.0 shows the actual sizes.

Leave a comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.