≡ Menu

unix system

Linux udev tip: Assign Static SCSI Device Name

So how do you assign static names for SCSI device using udev under Linux? Simply use the scsi_id and other udev tools such as :

[a] scsi_id - retrieve and generate a unique SCSI identifier.
[b] udev_start - script to initialize /dev by using udev
[c] udevtest - simulate a udev run and print the action to the console.

What the hell is udev?

udev is the device manager for the Linux 2.6 kernel series. Its primary function is managing device nodes in /dev. Old UNIX system creates device in the /dev with static files. udev dynamically provides only the nodes for the devices actually present on a system.

Note following configuration is only tested on Gentoo / RHEL 5.x / CentOS 5.x Linux server systems but it should work with other distros with udev support.

Step # 1: Get WWID of the SCSI device

To get the WWID of /dev/sdd, type:
# scsi_id -g -u -s /block/sdd

  • -g : Treat the device as white listed
  • -u : Reformat the output
  • -s /bock/sdd : Generate an id for the /block/sdd (/dev/sdd). The mount point must not be included. For example, use /block/sdd, not /sys/block/sdd.

Step # 2: Create /etc/udev/rules.d/25-names.rules file

Open /etc/udev/rules.d/25-names.rules and append following text (replace WWID with actual id obtained from above command):

KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s %p", RESULT=="WWID", SYMLINK+="scsiharddisk%n"

Above rule will create /dev/scsiharddisk (a symlink - select any other meaningful name as per your proecjet ) for the SCSI device with a given WWID. Please note that partitions on this device will be assigned the device names like /dev/scsiharddisk1, /dev/scsiharddisk2 and so on. Next, verify that everything is correct order, enter:
# udevtest
Start initialize /dev for new devices:
# start_udev
Verify symbolic links are created, enter:
# ls -l /dev/scsiharddisk*

Read the man pages for more information:
man scsi_id
man udevtest
man 7 udev

Quagga: Linux Dynamic Routing Software

I've already written about Linux static routing configuration. However, sometime you need to configure Linux routers dynamically to get changes of network connections by communicating information about which networks each router can reach and how far away those networks are. These days most network admin prefer to use OSPF or BGP over RIP. Linux and UNIX system can act as router using special software.

Quagga Software

Quagga is a network routing suite providing implementations of OSPF (v2 & v3), RIP (v1, v2 & v3) and BGP (v4) for Unix-like platforms, particularly FreeBSD, Linux, Solaris and NetBSD. Quagga is a fork of GNU Zebra. Quagga is intended to be used as a Route Server and a Route Reflector. It is not a toolkit, it provides full routing power under a new architecture.

Zebra IP Routing Manager

zebra is an IP routing manager. It provides kernel routing table updates, interface lookups, and redistribution of routes between different routing protocols. zebra is included with quagga software.

Install quagga

Debian / Ubuntu Linux user type the following command:
$ sudo apt-get install quagga
RHEL , Fedora, CentOS Linux user type the following command:
# yum install quagga

quagga Software Configuration

quagga configuration is beyond the scope of this blog post; I recommend reading official configuration documentation for further information.

How to: Monitor UNIX User Usage

I've already written about when a user logs in what files are updated in UNIX / Linux.

In this article, you will learn more about UNIX login process such as what happens when you log in, how the logins are recorded into the UNIX system, and how you can use that information to determine who is logged on currently and who has been logged on in the past. You could use a modified version of the Perl script, for example, to provide total user-time information and charge it back to a user or department. From the article:

Explore new ways to record UNIX logins and other system activities in a number of different logs, and take advantage of this information to monitor user usage. This can be helpful from a number of perspectives, either to use for chargeback reporting or just to get an idea of how busy and active individual users are on the system to help when planning and allocating resources.

=> Systems Administration Toolkit: Monitor user usage

February 6, 2007 : nixCraft FAQ Roundup

Recently updated/posted Linux and UNIX FAQ:

=> Shell command or script to write simple output on screen under Linux and UNIX

=> Delete a log files in Linux or UNIX

=> VSFTPD limit the number of simultaneous vsftpd connections for a single IP address

=> Gnome Desktop Keyboard Shortcut Keys

=> Disable Advanced power management (APM) on Linux

=> Locate files on linux, FreeBSD and UNIX system

=> List installed packages on Linux or FreeBSD / OpenBSD system

=> Howto: Use mysql or run mysql queries from shell script

=> Linux configure batch jobs using at command

=> Solaris add a new swap file for database

=> Apache server view performance status with mod_status configuration

=> Howto Secure portmap service using iptables and TCP Wrappers under Linux

All files accessible in a Linux (and UNIX) system are arranged in one big tree, the file hierarchy, rooted at /. These files can be spread out over several devices. The mount command serves to attach the file system found on some device to the big file tree.

Use the mount command to mount remote windows partition or windows share under Linux as follows:

Procedure to mount remote windows partition (NAS share)

1) Make sure you have following information:
==> Windows username and password to access share name
==> Sharename (such as //server/share) or IP address
==> root level access on Linux

2) Login to Linux as a root user (or use su command)

3) Create the required mount point:
# mkdir -p /mnt/ntserver
4) Use the mount command as follows:
# mount -t cifs //ntserver/download -o username=vivek,password=myPassword /mnt/ntserver

Use following command if you are using Old version such as RHEL <=4 or Debian <= 3: # mount -t smbfs -o username=vivek,password=D1W4x9sw //ntserver/download /mnt/ntserver

5) Access Windows 2003/2000/NT share using cd and ls command:
# cd /mnt/ntserver; ls -l

  • -t smbfs : File system type to be mount (outdated, use cifs)
  • -t cifs : File system type to be mount
  • -o : are options passed to mount command, in this example I had passed two options. First argument is password (vivek) and second argument is password to connect remote windows box
  • //ntserver/download : Windows 2000/NT share name
  • /mnt/ntserver Linux mount point (to access share after mounting)

See also:

Updated for accuracy on Aug-8-2007, 8:19PM.