How to set up and troubleshoot Widelinks on a Netapp 7-mode Storage Controller
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
- 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
- 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.
- 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.
- Start by mounting the directories
Unix> mount filer1:/vol/widelink /filer1/widelink
Unix> mount filer1:/vol/source /filer1/source
- Now, put some data out on the destination (the temp_restore qtree)...
Unix> cp /etc/init.d/apache /filer1/widelink/temp_restore/
- 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
- 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
- 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
- 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
- Start by mounting the directories
- Edit symlink.translations.
- 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.
- 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.
- Create symlink.translations in the
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
.
- Create qtrees and volume
First, create the destination directory as shown below:
filer2> vol create destination
<hosting-aggr-name> <size>[k|m|g|t] - Create shares and exports
- 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> - 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> - 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> - 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> - Create a new symlink to point to the
/t/114
directory
Unix> ln -s /t/114 /filer1/source/symlink2
Unix>
- 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>
- Create a CIFS share for it.
- 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:
- Incorrect configuration
- Inability to access widelink destination
Incorrect Configuration
The following steps should be performed to confirm the configuration of widelinks.
- 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
- 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. - 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*
- 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
andpurgemupcache
:
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:
- 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*' - 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. - 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
- Trigger an autosupport
Additional Information
additionalInformation_text