If you need to export the same iscsi discs to different machines, you may want to name it consistently between various hosts.
When you setup iSCSI drives, Linux names them in the usual and unreliable /dev/sdX way (to get started with iSCSI use Michelangelo’s post http://vaunaspada.babel.it/blog/?p=596 )
Standard SCSI disks have a serial identifier: you can get it querying the /sys/block filesystem:
#udevadm info --path=/sys/block/sdb --query=all | grep ID_SERIAL=
or checking them via their name
#udevadm info --name=/dev/mapper/oraqdisk1 --query=all | grep DM_UUID=
And use it to identify the disk with an udev rule:
#cat > /etc/udev/rules.d/99-disk.rule <<EOF KERNEL=="sd*", ENV{ID_SERIAL}=="the_disc_unique_id", NAME="disk0", OWNER="storage", GROUP="storage", MODE="0660" EOF
To make sure the iscsi discs you export via tgtd have an unique serial id, you have to set it in /etc/tgt/targets.conf
<target iqn.2013-10.1.it.babel:be1> <backing-store /dev/mapper/VolGroup-lv_storage_0> scsi_id babel_testplant_s0 </backing-store> <backing-store /dev/mapper/VolGroup-lv_storage_1> scsi_id babel_testplant_s1 </backing-store> vendor_id iSCSI ACME Inc. </target>
At this point you just have to create the following:
#cat > /etc/udev/rules.d/99-iscsi.rule <<EOF KERNEL=="sd*", ENV{ID_SERIAL}=="babel_testplant_s0", NAME="iscsi0", OWNER="storage", GROUP="storage", MODE="0660" KERNEL=="sd*", ENV{ID_SERIAL}=="babel_testplant_s1", NAME="iscsi1", OWNER="storage", GROUP="storage", MODE="0660" EOF
And reload udev
#udevadm trigger
You can even do bulk-naming using globbing (aka “*” ) and environment variables (aka %E).
# # Discover multipath devices named "oraq*" and create the corrisponding device in /dev/oraqdisk1 # for DM_NAME check /etc/multipath.conf SUBSYSTEM=="block", ENV{DM_NAME}=="oraq*", NAME="%E{DM_NAME}", OWNER="grid", GROUP="oinstall", MODE="0600"