Skip to main content
NetApp Knowledgebase

How to set up and troubleshoot Widelinks on a Netapp 7-mode Storage Controller

Views:
578
Visibility:
Public
Votes:
0
Category:
data-ontap-8
Specialty:
cifs
Last Updated:

Applies to

  • Data ONTAP 8.2 7-Mode
  • Data ONTAP 8.1 7-Mode
  • Data ONTAP 8 7-Mode
  • Data ONTAP 7 and earlier

Answer

  • Creating Symlink from Volume to qtree on the same filer.
  • Creating Symlink from Volume to Volume on different filers.
  • Problems setting up widelinks.

A symbolic link is a special file created by NFS clients that points to another file or directory. Widelink entries are a way to redirect absolute symbolic links on the filer. they allow the symbolic link destination to be a share on the same filer or on another filer. The following examples illustrate how to create a symlink from volume to qtree on the same filer, and from volume to volume on different filers. 
 
Creating Symlink from Volume to qtree on the same filer 

  1. Create the volume that will contain the symlink (/vol/source) and the qtree that will contain the target file (/vol/widelink/temp_restore).
    filer1> vol create source <hosting-aggr-name> <size>[k|m|g|t]
    filer1> qtree create /vol/widelink/temp_restore
    filer1> qtree status
    Volume   Tree     Style Oplocks  Status
    -------- -------- ----- -------- ---------
    vol0              unix  enabled  normal
    widelink          unix  enabled  normal
    widelink temp_restore unix  enabled  normal
    source            unix  enabled  normal

     
  2. Share the qtree for the CIFS client, turn on support for widelinks in the share which will contain the symlink:
    filer1> cifs shares -add temp_restore /vol/widelink/temp_restore
    The share name 'temp_restore' will not be accessible by some MS-DOS workstations
    Are you sure you want to use this share name? [n]:y

    filer1> cifs shares -add source /vol/source -widelink

    filer1> cifs shares
    Name         Mount Point               Description
    ----         -----------               -----------
    HOME         /vol/vol0/home
                            everyone / Full Control
    ETC$         /vol/vol0/etc                     Remote Administration
                            everyone / Full Control
    C$           /vol/vol0                         Remote Administration
                            everyone / Full Control
    temp_restore /vol/widelink/temp_restore
                            everyone / Full Control
    source       /vol/source
                 ... widelinks supported
                            everyone / Full Control

    Note: Enable widelink support on the CIFS share hosting the symlink.

     
  3. Create the symlinks. Use a UNIX client to create the target file and to create the symlink which will be used to point to it.
    1. Start by mounting the directories
      Unix> mount filer1:/vol/widelink /filer1/widelink
      Unix> mount filer1:/vol/source /filer1/source

       
    2. Now, put some data out on the destination (the temp_restore qtree)...
      Unix> cp /etc/init.d/apache /filer1/widelink/temp_restore/
       
    3. Verify the data is available in the target:
      Unix> ls -l /filer1/widelink/temp_restore/
      total 8
      -rwxr-xr-x   1 root     other        687 Oct 21 22:15 apache

       
    4. Create the symlink from /filer1/source to the directory /filer1/widelink/temp_restore...
      Note: The syntax is: ln -s <TARGET> <LINK_NAME>
      Unix> ln -s /filer1/widelink/temp_restore/ /filer1/source/symlink

       
    5. Verify the symlink is there:
      Unix> pwd
      /filer1/source
      Unix> ls -l
      total 0
      lrwxrwxrwx 1 root other 29 Oct 21 22:18 symlink -> /filer1/widelink/temp_restore

       
    6. If the symlink exists, make sure it works:
      Unix> pwd
      /filer1/source
      Unix> cd symlink/
      Unix> ls -la
      total 24
      drwxrwxrwx   2 root     root        4096 Oct 21 22:17 .
      drwxr-xr-x   6 root     root        4096 Oct 21 22:10 ..
      -rwxr-xr-x   1 root     other        687 Oct 21 22:15 apache
      Unix>


      The above output shows that there is a link (symlink) in /filer1/source that points to the directory /filer1/widelink/temp_restore
       
  1. Edit symlink.translations.
    1. Create symlink.translations in the /vol/vol0/etc/ folder of the filer either using vi or wrfile.
      # vi /filer1/vol0/etc/symlink.translations
      widelink /filer1/widelink/temp_restore/* \\<IP_ADDRESS_OR_HOST_NAME>\temp_restore\*


      In the above example, "<IP_ADDRESS_OR_HOST_NAME>" will be the IP Address or host name of the CIFS server that hosts the destination share.

      Having the asterisks ("*") there is important.  If you leave it off, you will get messages like the one below:
      filer1> Thu Oct 21 22:36:13 PDT [cifs.symlinkTrans.badEntry:error]: CIFS: invalid entry in symbolic link mapping file /etc/symlink.translations at line 1: Switching to unoptimized lookup.
       
    2. Map source to a drive in Windows.
      Note: This worked going between volumes. If /vol/source were a qtree under /vol/widelinks, it would work the same. 

Creating Symlink from Volume to Volume on different filers

The source directory in this example is still /filer1/source . The destination will be on filer2:/vol/destination

  1. Create qtrees and volume
    First, create the destination directory as shown below:
    filer2> vol create destination <hosting-aggr-name> <size>[k|m|g|t] 
  2. Create shares and exports 
    1. Create a CIFS share for it.
      filer2> cifs shares -add destination /vol/destination
      The share name 'destination' will not be accesible by some MS-DOS workstations
      Are you sure you want to use this share name? [n]:y
      filer2>
    2. Verify that the destination directory is there as shown below: 
      filer2> cifs shares
      Name         Mount Point                       Description
      ----         -----------                       -----------
      ETC$         /etc                              Remote Administration
                              BUILTINAdministrators / Full Control
      HOME         /vol/vol0/home                    Default Share
                              everyone / Full Control
      C$           /                                 Remote Administration
                              BUILTINAdministrators / Full Control
      test         /vol/vol0/test
                              everyone / Full Control
      destination  /vol/destination
                              everyone / Full Control
      filer2>
    3. Add it to the export file so that the symlink can be created:
      filer2> exportfs -io root=10.41.16.181 /vol/destination
      filer2> exportfs
      /vol/destination    -root=puerco.hq.netapp.com
      /vol/vol0
      /vol/vol0/home
      filer2>
    4. Mount the destination directory.
      Unix> mount :/vol/destination /t/114
      Copy a file in it so you know it is there:
      Unix> cp /etc/init.d/network /t/114/
      Unix> ls -l /t/114
      total 48
      -rwxr--r--  1 root  other  20593 Oct 22 14:58 network
      Unix>
    5. Create a new symlink to point to the /t/114 directory
      Unix> ln -s /t/114 /filer1/source/symlink2
      Unix>
    6. Verify that it works:
      Unix> cd /filer1/source
      Unix> ls -l
      total 0
      lrwxrwxrwx 1 root other 29 Oct 21 22:33 symlink -> /filer1/widelink/temp_restore
      lrwxrwxrwx 1 root other 6 Oct 22 15:00 symlink2 -> /t/114
      Unix> cd symlink2
      Unix> ls -l
      total 48
      -rwxr--r-- 1 root other 20593 Oct 22 14:58 network
      Unix> 
  3. Edit symlink.translations.

    Edit the /etc/symlink.translations for this new widelink. 
    Note: You do not have to remove the earlier one created for the symlink from Volume to qtree on the same filer.
    widelink /filer1/widelink/temp_restore/* \\<filer1_IP_address>\temp_restore*
    widelink /t/114/* \\<filer2_IP_address>\destination*
 

Troubleshooting Widelinks:

Widelink failures fall into two categories:

  1. Incorrect configuration
  2. Inability to access widelink destination


Incorrect Configuration
The following steps should be performed to confirm the configuration of widelinks.

  1. Collect cifs shares output from the source filer and verify the share path has widelinks enabled:
    filer1> cifs shares
    Name         Mount Point               Description
    ----         -----------               -----------
    HOME         /vol/vol0/home
                            everyone / Full Control
    ETC$         /vol/vol0/etc                     Remote Administration
                            everyone / Full Control
    C$           /vol/vol0                         Remote Administration
                            everyone / Full Control
    temp_restore /vol/vol1/temp_restore
                            everyone / Full Control
    source       /vol/source
                            everyone / Full Control


    If 'widelinks supported' does not show for the share, add it with the following command:
    filer1> cifs shares -change source /vol/source -widelink

    The output should now look like:
    filer1> cifs shares
    Name         Mount Point               Description
    ----         -----------               -----------
    HOME         /vol/vol0/home
                            everyone / Full Control
    ETC$         /vol/vol0/etc                     Remote Administration
                            everyone / Full Control
    C$           /vol/vol0                         Remote Administration
                            everyone / Full Control
    temp_restore /vol/vol1/temp_restore
                            everyone / Full Control
    source       /vol/source

                 ... widelinks supported
                            everyone / Full Control
  2. Collect an ls -al of the widelink path:
    Unix> ls -al
    total 1
    drwxr-x---  14 root root   4096 Aug 12 19:04 .
    drwxrwxrwx  33 root root   4096 Mar 30 13:08 ..
    lrwxrwxrwx  1 root root      9 Aug 12 19:04 mylink -> /my_cifs_link/


    It is important to note that based on this configuration, from Windows perspective when working, it will see a folder called 'mylink'.  The path /my_cifs_link/ does not have to work because Windows has no understanding of symlinks/widelinks. The only time /my_cifs_link/ has to be vaild is if end users will also be accessing data through the symlink using UNIX. Therefore the /my_cifs_link/ value can be anything you want to make it in a 100% Windows environment.
  3. Collect the /etc/symlink.translations output from the source filer:
    Filer1*> rdfile /etc/symlink.translations
    widelink /filer1/my_cifs_link/* \\10.61.84.180\vol1*


    The widelink path in the above example is invalid and should be changed to the following:
    widelink /my_cifs_link/* \\10.61.84.180\vol1*
  4. Since the Widelink implementation uses DFS, there might be times that changes are made to the symlink or symlink.translations file that do not appear to work right away. By default, the timeout value for a DFS referral is 10 minutes. To clear the cache manually, download DFSUtil, which is part of the Microsoft Support Tools. Once downloaded, flush the DFS cache by running pktflush and purgemupcache:

    C:\Windows\system32> dfsutil /pktflush
    DfsUtil command completed successfully.


    C:\Windows\system32> dfsutil /purgemupcache
    DfsUtil command completed successfully.


Inability to access widelink destination
After the configuration has been verified, the next step in troubleshooting widelink failures is to verify widelink destination access by following the following steps:

  1. Collect the symlink.translations file:
    Filer1*> rdfile /etc/symlink.translations
    widelink /my_cifs_link/* \\10.61.84.180\vol1*


    An important field of this output is '\\10.61.84.180\vol1*'
  2. From the client that is unable to traverse the widelink, have them do the following:
    Start > Run > \\10.61.84.180
    This will verify that they can actually access the storage controller and can authenticate successfully.
  3. If Step 2 was successful, have the user navigate into the share. If this step fails, see article How to troubleshoot Microsoft Client permission problems on a NetApp Filer.

    If traversing widelinks continue to fail after verifying the configuration and connectivity to the remote location, please open a support case and provide the following data:
    • Trigger an autosupport
      Filer1*>  options autosupport.doit now
    • Collect cifs shares output
      Filer1*> cifs shares
    • Collect the symlink.translations output
      Filer1*> rdfile /etc/symlink.translations
    • Collect the ls -al output of the symlink
      Unix> ls -al

 

Additional Information

additionalInformation_text

 

CUSTOMER EXCLUSIVE CONTENT

Registered NetApp customers get unlimited access to our dynamic Knowledge Base.

New authoritative content is published and updated each day by our team of experts.

Current Customer or Partner?

Sign In for unlimited access

New to NetApp?

Learn more about our award-winning Support