[Sysadmins] tape changer udev rules

Michael Shigorin mike на osdn.org.ua
Сб Дек 11 20:03:49 UTC 2010


	Здравствуйте.
Вдруг кому сгодится...

Имеется ленточная библиотека Quantum Scalar i500 и желание
зафиксировать соответствие логических устройств в /dev
физическим стримерам, промаркированным от 1 до 4.

По мотивам
http://reactivated.net/writing_udev_rules.html
http://www.listware.net/201004/bacula-users/96528-bacula-users-label-barcodes-on-quantum-scalar-i500.html
нарисованы следующие правила:

--- /etc/udev/rules.d/80-persistent-streamers.rules
# Autochanger
#BUS=="scsi", KERNEL=="sch0", KERNELS=="7:0:0:1",  NAME="%k", SYMLINK="changer"
#BUS=="scsi", KERNEL=="sg7", KERNELS=="9:0:0:1",  NAME="%k", SYMLINK="changer"
BUS=="scsi", KERNEL=="sg7", ATTRS{vendor}=="ADIC    ", NAME="%k", SYMLINK="changer"                                                                
# tape drives don't show up with serials or such,
# and two reboots with these rules resulted in different layouts
# so for the time being we have to:
#   mtx -f /dev/changer status | head
#   mtx load 1 0
# and then figure out which /dev/nst it is:
#   mt -f /dev/nst0 status
# if it's the drive 0 (and rewound tape), then output should end with:
#   BOT ONLINE IM_REP_EN
# if it's not (still empty), then:
#   DR_OPEN IM_REP_EN
# -- mike on 20100822, see also
# http://sourceforge.net/mailarchive/forum.php?thread_name=1272470577.m2f.333703%40www.backupcentral.com&forum_name=bacula-users                   
# Tape Drive 1
BUS=="scsi", KERNEL=="nst*", ENV{ID_SERIAL}=="35001234567893090", NAME="%k", SYMLINK="tape1"
# Tape Drive 2
BUS=="scsi", KERNEL=="nst*", ENV{ID_SERIAL}=="35001234567893094", NAME="%k", SYMLINK="tape2"
# Tape Drive 3
BUS=="scsi", KERNEL=="nst*", ENV{ID_SERIAL}=="35001234567893000", NAME="%k", SYMLINK="tape3"
# Tape Drive 4
BUS=="scsi", KERNEL=="nst*", ENV{ID_SERIAL}=="35001234567893004", NAME="%k", SYMLINK="tape4"
# in case of a bit different udev...
#BUS=="scsi", KERNEL=="nst*", ATTRS{serial}=="35001234567893004", NAME="%k", SYMLINK="tape4"
---

Серийные номера получены следующим образом:

# udevadm info --query=env -p `udevadm info -q path -n /dev/nst0`

Тестирование:

# udevadm test /sys/class/scsi_tape/nst0 2>&1 | less
# udevadm trigger
# ls -l /dev/tape?
lrwxrwxrwx 1 root root 4 Dec 11 22:16 /dev/tape1 -> nst1
lrwxrwxrwx 1 root root 4 Dec 11 22:16 /dev/tape2 -> nst0
lrwxrwxrwx 1 root root 4 Dec 11 22:16 /dev/tape3 -> nst3
lrwxrwxrwx 1 root root 4 Dec 11 22:16 /dev/tape4 -> nst2

PS: можно было воспользоваться /dev/tape/by-id/*, которые создаёт
/lib/udev/rules.d/60-persistent-storage-tape.rules -- но выходит
не так ясно в эксплуатации :)

-- 
 ---- WBR, Michael Shigorin <mike на altlinux.ru>
  ------ Linux.Kiev http://www.linux.kiev.ua/


Подробная информация о списке рассылки Sysadmins