SMB 3.0 (newer versions)only available in cDot/ONTAP (Precisely cDOT 8.2 and later). Hence, it is not going to work with Data ontap 7-mode (as SMB server, 7-mode OS version doesn't matter, SMB 3.0 is never introduced in 7-mode and will never be b'cos the code development is stopped, cDOT/ONTAP is the only way forward wrt SMB3.0 support).
If you want NetApp (as SMB Server) to serve SMB3.0 version to clients, then you must be on cDOT/ONTAP and client must also support the higher version (For them to negotiate).
To verify max SMB versions supported on your 7-mode Data Ontap, simplest way is to run this command: 7-mode> options cifs.smb
Check the SMB2.0 support on your ontap version, this option must be enabled: filer> cifs.smb2.enable on
Note: When this option is enabled, the Filer uses SMB 2.0, provided client also supports SMB 2.0
You can try this command from Linux host to mount CIFS shares hosted on NetApp 7-mode: [root@redhat /]# mount -t cifs -o username=Administrator,password=<password>,domain=ABC.COM //192.x.x.x/share1 /mnt/smb
Once the command is successful, go to /mnt/smb and check if you are able to see shares.
Then, on the filer side:
filer> cifs sessions -t [This command will tell you which SMB version is currently negotiated]
Note: Also, check the smb version running on your client and the default client smb version mentioned in the smb.conf file.
Looking at a wireshark trace, I see that the client is attempting to negotiate a session using smb v2.0 but the netapp is returning errors, starting with this. I am assuming this there is some setting on the netapp that is not configured correctly. I mean, it's smb version 2, which has been around for ever. the last error msg is "not supported" ???
According to the bug, SMB Dialect = 2 is not supported as 'client' on certain(most) linux kernels, but it is supported as 'SMB server' on redhat/centos 5.x/6.x/7.x and so on.
Cause: B'cos NetApp Storage is acting as 'SMB server' and 'Linux Host (kernels)' as SMBclient, it can only negotiate to SMB1, according to the BUG.
In order to negotiate SMB2.1 or higher protcols use cDOT/ONTAP.
Tried to mount 7-mode using Redhat7/centos7 without specifiying any dialect and met with error.
Error: mount error(22): Invalid argument Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
Error is not very useful, if you google, you will see number of hits, asking to change min protocol versions etc on smb.conf file, however they aren't applicable, b'cos we are using linux as SMB client and not as SMB Server.
To get more useful info, try to read the kernel or "messages" log: [root@redhatcentos7 ~]# tail -f /var/log/messages [This is more useful, as seen below]
Linux kernel version: redhatcentos7 3.10.0-1062.el7.x86_64 Error: Apr 13 20:32:39 redhatcentos7 kernel: Default dialect has changed to a more secure dialect, SMB2.1 or later (e.g. SMB3), from CIFS (SMB1). To use the less secure SMB1 dialect to access old servers which do not support SMB3 (or SMB2.1) specify vers=1.0 on mount.
Therefore, if you wish to have CIFS shares accessible from Linux kernel versions 3.10.x or later then, you are limited to use dialect 1.0.
To mount 1.0 on redhat7 from NetApp 7-mode, try following command: [root@redhatcentos7 ~]# mount -t cifs -o vers=1.0,username=Administrator,password=xxxxx,domain=TEST.COM //192.168.0.5/vol_test /mnt/7mode
Please note: This is specific to linux clients, in this kernel version the minimal supported dialect is 2.1 which apparently was rejected by 7-mode. Hence, had to be mounted via 1.0.
Recommendations based on testing: From linux clients (as SMB Clients) works with dialect 1.0 with 7-mode. From linux clients (as SMB Clients) works with 2.0,2.1 or higher 3.0 with cDOT/ONTAP
7-mode SMB Server shares: mount -t cifs -o vers=1.0,username=Administrator,password=xxx,domain=TEST.COM //192.168.0.5/vol_test /mnt/7mode
cDOT/ONTAP SMB Server shares: mount -t cifs -o vers=2.0,username=Administrator,password=xxx,domain=TEST.COM //192.168.0.7/fin /cdot mount -t cifs -o vers=2.1,username=Administrator,password=xxx,domain=TEST.COM //192.168.0.7/fin /cdot mount -t cifs -o vers=3.0,username=Administrator,password=xxx,domain=TEST.COM //192.168.0.7/fin /cdot
To check SMB dialects: 7-mode: filer> cifs sessions -t
cDOT/ONTAP ::> cifs session show -vserver <vserver> -fields protocol-version,address
For your information, I will try to keep it simple.
7-mode [Which is known as HA Pair, non-clustered] : Is available until 8.2.x only, end of journey for 7-mode NetApp OS. [Data ONTAP 8.3 and later do not include a 7-Mode version]. This 7-mode version supports only SMB2.0 & 2.1 dialects. However, certain versions of "Linux" (Not Windows) as 'SMB Client' can only negotiate SMB1.0. Hence, if even if 7-mode is capable of negotiating SMB2.0/2.1, client fails to connect as we observed in the logs previously.
Cluster Data ONTAP: Until 8.3.x was called cluster Data ONTAP [Cluster-Mode], however since 9.x it is renamed to simply 'ONTAP'. Hence, what I had mentioned as 'cDOT/ONTAP', I was basically referring to 'Clustered Ontap', which we now call 'ONTAP'. In cDOT, since cDOT 8.2, higher SMB dialects are supported such as SMB2.0,2.1,3.0. I mean cDOT 8.2 and not 7-mode 8.2, and there is no 8.4 in either.
Following Linux 'kernel' as SMB Client and ONTAP 9.x as SMB Server works with SMB Dialects 1.0,2.0,2.1 & 3.0. Please note, I haven't tested all the kernels, but this was minimum Centos7 that I downloaded and tested and it seems to work. [root@redhatcentos7 ~]# uname -a Linux redhatcentos7 3.10.0-1062.el7.x86_64