Network and Storage Protocols

Using Widelinks in a CIFS environment

jwrobertson
20,824 Views

Has anyone ever setup Widelinks in a CIFS only environment?

We have a FAS 3070 cluster, and I'm trying to re-direct users from a volume on one head to a volume on a different head (or possibly even on the same head).  I was able to do this using NFS, but our NFS license was temporary, so to create any new ones, I need to do it using CIFS only.

I've read through the following documents, but they have been no help:

About Widlinks Entries: http://now.netapp.com/NOW/knowledge/docs/ontap/rel723/html/ontap/filesag/7multi53.htm

Definitive Guide to Setting up Widelinks (that's debatable): https://now.netapp.com/Knowledgebase/solutionarea.asp?id=kb7368

A more detailed explanation of what I'm trying to do:

We have several large file systems, over 2 TB each.  The users need to be able to go to a single directory within an already established DFS root (which I'll call \\Domain.com\DFSRoot) and see each of these file systems as a subdirectory of that single directory.  So, I've created a DFS link within the DFS root... we'll call it TopDirectory that points to a CIFS share/volume on Filer A with the same name.  Using NFS, I had to mount that directory to a Unix machine along with all the volumes I wanted to appear as a subdirectory (I'll call them Volume01 - Volume10, and they each reside on Filer B).  From the Unix machine, I then ran the command ln -s /mnt/Volume01 /mnt/TopDirectory/Volume01 for each of the volumes that I want to appear as subdirectories.  This created a symbolic link for each of the directories within the TopDirectory volume.

Then I had to edit the /etc/symlinks.translations file on Filer A so that the symbolic links would point to a share on Filer B.  So, the entries would look like this:

Widelink /mnt/Volume01/* \\FilerB\Volume01\*



Widelink /mnt/Volume02/* \\FilerB\Volume02*\

Widelink /mnt/Volume03/* \\FilerB\Volume03\*

Widelink /mnt/Volume04/* \\FilerB\Volume04\*

Widelink /mnt/Volume05/* \\FilerB\Volume05\*

Widelink /mnt/Volume06/* \\FilerB\Volume06\*

Widelink /mnt/Volume07/* \\FilerB\Volume07\*

Widelink /mnt/Volume08/* \\FilerB\Volume08\*

Widelink /mnt/Volume09/* \\FilerB\Volume09\*

Widelink /mnt/Volume10/* \\FilerB\Volume10\*

This works as advertised.  When I go through DFS to \\Domain.com\DFSRoot\TopDirectory I see all ten directories and can go into them to see their contents.

My question now is, how can I create the symbolic links if I don't have an NFS license?  I've been told that I can use ln.exe to create them, but I can't get it to work.  The copy of ln.exe that I have was apparently created by NetApp, but their help desk says they do not support it.  Apparently there is a version that came with Windows Resource Kit, but I think it was an older version.  I think it was replaced with linkd.exe, which I've tried, but I can't get that to work either.  I've tested linkd by creating a link on windows server to a different directory, but if I try to use a UNC path, it fails.

Can anyone tell me how to do this, or if it can even be done?

Thanks!

1 ACCEPTED SOLUTION

t2mattbrown
15,857 Views

Thanks guys!

Think I got it...

1) On the netapp: Verify/enable that cifs.symlinks.enable is on

options cifs.symlinks.enable

2) Enable widelink for the CIFS share:

cifs shares -change _foo$ -widelink

3) On the netapp: Create the entry in the /etc/symlink.translations file as [note the wild-card filter https://kb.netapp.com/support/index?page=content&id=1011758 ]:

Widelink /vol/VOLUME/_foo/XXXX/* \\CIFSSERVER\CIFSSHARE*

(where XXXX is the name of the symlink file you will create in step 5b)

4) From a windows box (you must obtain a Windows binary port of the ln.exe command so that you can use the UNIX-like path that lives on the filer, or use the ntap_symlink, which seems to use OnTap's RESTful API over HTTP):

5a) Authenticate to the filer by mapping a drive:

net use p: \\FILER\_test$

5b) Create the symbolic link using the windows binary port of ln.exe:

ntap_symlink -l USER FILER /vol/VOLUME/_foo/XXXX/ /vol/VOLUME/_foo/XXXX

Message was edited by: t2mattbrown

View solution in original post

19 REPLIES 19

jwrobertson
20,524 Views

I got some help from our technical sales on this, so I will answer my own question.

Command Line (using ln.exe):
ln /vol/volume09 \\FilerB\TopDirectory\volume09

Where  /vol/volume09 is the path to the volume on the NetApp, and the second part is the UNC path to the volume/share where you want the symbolic link to be created.  Note:  You must map a drive to the destination of the link (i.e. \\FilerB\TopDirectory) and CD to that drive/directory before running the ln command, so the ln.exe will need to be in your path.  The command will create a symbolic link in "TopDirectory" that redirects to the volume on the NetApp.

Add the following line to the symlink.translations file on the NetApp filer that the symbolic link resides on:
Widelink /vol/volume09/* \\FilerB\volume09\*

Interestingly enough, I was also able to get this to redirect to a share on a different server as well.

ln.exe is part of the Windows Resource Kit, but the version I have specifically references NetApp in the help file, so I think I may have gotten a copy of it from our technical sales rep.  I looked for a copy of it on NOW, but I wasn't able to find it anywhere.

cat_towerbe
20,524 Views

I recently did a LOT of testing with Widelinks.  The ONLY version of ln.exe that I could get to work at all is the version written by Oliver Krause of NetApp.  The version I have is dated 2002 and I got it from a friend.

Does anyone know if this utility is being maintained by NetApp?  Is Oliver still with the company?

adamfox
20,525 Views

Oliver's still here.  Here's an SE manager these days.  I'm not sure if he's still maintaining the ln tool. 

I've put one together as well that seems to work well.  It's based on ONTAP APIs and doesn't need to be run from a client with a CIFS connection.

I haven't bundled it in a while, but I can try to get it out...no docs yet.

cat_towerbe
20,525 Views

Please do post your script/tool when you get a chance.  I'd love to see it (and I'm sure others would too).

Thanks in advance

adamfox
20,525 Views

Ok.  Sorry I took so long, but here's the code.  I did a quick README to help with the syntax.

Feel free to use this thread to ask questions about it.  I think it's pretty straight-forward.

All you need is some admin login credentials on the controller in question.  No NAS protocol access is needed as it uses APIs to create the link.

This is not an official tool, it's as-is, best-effort support by me.

If the overall feedback is good, I'll do what I can to get it posted to the ToolChest on NOW.

-- Adam Fox

mhofstet
13,590 Views

Hy adan

Do you know, how I could rename/delete such symbolic links after creation?

If this features are not implemented, are the API available for having them programmed into ntap_symlink.exe?

Marc

jwrobertson
20,524 Views

When I had this problem originally, I opened up a case with NetApp, and they told me that the tool was not supported.  Then they advised me to post something here to see if anyone could help me.

Looks like I'm running the same version of ln.exe that you are.  If I run the command without any parameters I get this in the output:

ln: tool for listing and creating symbolic links on Netapp filers
         (c) 2002-2003 Network Appliance, Inc. v0.1

renault
20,524 Views

Hi all,

I joined the ln.exe from Olivier Krause we use since 7 years I believe. It works since DOT 6.3 I think. It is not supported by netapp.

I post this ln.exe on now communities some years ago, but netapp change  and my thread disapear.

We use it for 2 ways :

In a common share : to create a tree to allow access to every qtrees created on the volumes of the filers of a site + several widelinks to access other common shared localted on filers of differents sites

In "My shared" to create for every user a tree of qtree where a user have access, (it avoid to show to the user leaves where he have no access), on the filer of his site and on the filer of others site in the world.

We have 80 000 users and 100 filers like this.

The common share is also used to show our users, the same view under unix and under Windows. So the widelink we use have a meaning under unix too.

Using wireshark, you see when the workstation access the widelink, the filer send a DFS referal and then, the workstation access only to the target for the next access.

Microsoft on Windows 7/Windows 2008 provide mklink.exe to create a similar function. But if you made an wireshark trace you see that the workstation always access to the "link" before accessing to the target, so you get two requests instead of two. Even if SMB V2 is less chatty globaly, it's not optimized.

So Widelinks + SMB V2 is the best choice.

In fact, widelinks allow to create a global namespace.

t2mattbrown
20,524 Views

I know this is a very old thread, and I don't mean to use the defibulator... but:

I am attempting to create a symbolic link on the Filer to a file server that is serving CIFS.

I figure, since the volume is formatted with NTFS that I can insert a symbolic link to a UNC destination.

How can I do this?

Thanks,

Matt Brown

[EDIT]

Think I found the answer:

http://www.computeranddata.com/doc/vendors/netapp/6.4.1/ontap/filesag/multi6.htm

You must edit

/etc/symlinks.translations

with an entry as detailed in
http://www.computeranddata.com/doc/vendors/netapp/6.4.1/ontap/filesag/multi10.htm#1047334

Message was edited by: t2mattbrown

renault
20,524 Views

Hi

Add an entry like this template in /etc/symlink.translations

widelink /home/filerA/vol1/* \\FILERA\VOL1\*

Then create a qtree for instance : qtree create /vol/vol1/abc

Then, net use a windows share \\filerA\shared and enter

ln /home/filerA/vol1/abc \\FILERA\shared\abc

When you clic on abc, you go through DFS to \\filerA\vol1\abc

t2mattbrown
15,724 Views

Thanks Renault.

I will try this today.

I believe that it's worth noting that the destination UNC will be living on a Windows Server, not on another filer.

This shouldn't matter, correct?

Thanks for your reply,

Matt

jwrobertson
15,724 Views

Matt, I've been able to use Widelinks to redirect to a Celerra share, so a Windows share should work as well.

renault
15,724 Views

A widelink destination can be any Windows share, it uses a DFS referal.

A Windows "mklink.exe" destination can be a filer also.

I forgot to add to "widelink enable" the CIFS share containing the widelinks on the filer, otherwise, the links appears as file.

t2mattbrown
15,858 Views

Thanks guys!

Think I got it...

1) On the netapp: Verify/enable that cifs.symlinks.enable is on

options cifs.symlinks.enable

2) Enable widelink for the CIFS share:

cifs shares -change _foo$ -widelink

3) On the netapp: Create the entry in the /etc/symlink.translations file as [note the wild-card filter https://kb.netapp.com/support/index?page=content&id=1011758 ]:

Widelink /vol/VOLUME/_foo/XXXX/* \\CIFSSERVER\CIFSSHARE*

(where XXXX is the name of the symlink file you will create in step 5b)

4) From a windows box (you must obtain a Windows binary port of the ln.exe command so that you can use the UNIX-like path that lives on the filer, or use the ntap_symlink, which seems to use OnTap's RESTful API over HTTP):

5a) Authenticate to the filer by mapping a drive:

net use p: \\FILER\_test$

5b) Create the symbolic link using the windows binary port of ln.exe:

ntap_symlink -l USER FILER /vol/VOLUME/_foo/XXXX/ /vol/VOLUME/_foo/XXXX

Message was edited by: t2mattbrown

shanehoover
15,725 Views

That was the most useful information I've been able to find anywhere on making Widelinks work! Thank you!

Now the trick question.  Is it at all possible to make the entire CIFS share itself a Widelink?

Let me explain my need, I suppose.

We have a couple of particularly large fileservers with many shares on each server - some as many as 600 shares, including user shares.  We want to migrate these fileservers over to the filer, naturally.  But given the amount of data in question, a single forklift of the entire server and all shares at one time isn't practical. What would be ideal would be initially moving the hostname by DNS alias to the filer, and setting up a Widelink for each share that points back to the old server for the actual data.  Then we go share by share migrating data and replacing the widelinks with actual data.  If a Widelink can be created as the entire root of a filer CIFS share, that would be perfect.  Otherwise, I'll have to create all of the CIFS shares to match the old fileserver, then create a Widelink beneath each share for each and every top level directory target.  That's a bit daunting, but not necessarily a complete showstopper.

Anybody got any insight?

jwrobertson
15,725 Views

Shanehoover, have you had any luck getting this to work?  I can try to help you out if I can, but I'm not sure I completely understand what you're trying to do.  I can tell you that I have been able to create a volume on the NetApp that contained Widelinks to other volumes on the same filer and to a share that I had setup on our Celerra.  So, it looked something like this:

Folder                         (A small volume on the NetApp)

          SubFolder1       (A link created in "Folder" using the ln.exe tool, and redirected to a share on the same filer using the Widelinks entries)

          SubFolder2       (A link created in "Folder" using the ln.exe tool, and redirected to a share on another filer using the Widelinks entries)

          SubFolder3       (A link created in "Folder" using the ln.exe tool, and redirected to a share on a Celerra using the Widelinks entries)

It sounds like you want to have some real subfolders (ones that have been migrated), mixed in with other subfolders that are actually Widelinks back to the original server until they are migrated.  I don't see why you wouldn't be able to do that.

ROBIN_MINSHALL
13,590 Views

Hi Shane. sorry to jump start this. i'm looking to do the same.

i have symlinks working so a folder in a share redirects to another folder in a share. howerver it would be great to have a whole share linked to another share, so that any new folders created at the root level are created at the destination, not the location of the link.

Thanks

penangmis
12,842 Views

OnTap 8.2.3P4 7mode.

 

I have done all the required steps and execute the command. However I am getting the error.

 

C:\Temp\ntap_symlink>ntap_symlink.exe -l root pennetapp5 /vol/penhome2_cifs_fc /vol/penhome2_cifs/User

Enter the password for user root:
Can't use string ("") as a subroutine ref while "strict refs" in use at PERL2EXE_STORAGE/NaServer.pm line 447.

 

Anyone have idea why this error comes out?

 

We have the old box running on 7.3 and 8.1 7mode and we don't have any issue.

 

Any other way we can get the symlink done for the last step.

bordat1111
13,589 Views

Is anyone using wide links  or symbolic links with their  filer in a cifs  environment?Have you experienced any problems?You have any suggestions??

placas solares termicas

*Everything is perfect in the universe – even your desire to improve it*

Public