Tuesday, July 26, 2011

Configuring Persistent Bindings on Solaris 10


If you have tape devices attached to your Solaris 10 host and you often find that after a reboot of the host, the tape devices are no longer in the same order they were before, you can use the following Perl script to configure the /etc/devlink.tab file to make the tape devices persist.  Script is below:
#!/usr/bin/perl ################################################################# # This script maps fiber attached tape drives to persistently # # bind to the same device across reboots. # # (C) 2011 Benjamin Schmaus # ################################################################# use strict; my($junk,$path,$devices,$dev,$file); my(@devices,@file); my $date = `date +%m%d%Y`; $file = `/usr/bin/cp /etc/devlink.tab /etc/devlink.tab.$date`; @file = `cat /etc/devlink.tab`; @file = grep !/type=ddi_byte:tape/, @file; open (FILE,">/etc/devlink.tab.new"); print FILE @file; close (FILE); @devices = `ls -l /dev/rmt/*cbn|awk {'print \$9 \$11'}`; open (FILE,">>/etc/devlink.tab.new"); foreach $devices (@devices) { chomp($devices); ($dev,$path) = split(/\.\.\/\.\./,$devices); $dev =~ s/cbn//g; $dev =~ s/\/dev\/rmt\///g; $path =~ s/:cbn//g; ($junk,$path) = split(/st\@/,$path); print FILE "type=ddi_byte:tape;addr=$path;\trmt/$dev\\M0\n"; } close (FILE); $file = `/usr/bin/mv /etc/devlink.tab.new /etc/devlink.tab`; exit