ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 关于RHEL 5 下scsi_id 无返回值的问题解决(1)

关于RHEL 5 下scsi_id 无返回值的问题解决(1)

原创 Linux操作系统 作者:spectre2 时间:2011-07-08 10:52:45 10 删除 编辑

2014年12月11日修订:本文发布后有很多网友联系咨询和留言,恰逢最近解决了此问题,决定另发表一篇文章继续解析一下scsi_id无返回值的问题,这次应该是完全的解决方案了(建议按顺序阅读)。

关于RHEL 5 下scsi_id 无返回值的问题解决(2) 完全解析 
http://blog.itpub.net/14184018/viewspace-1364944/

根据
http://www.cn.redhat.com/kbase/0808/12118.php(链接已失效20141211中,执行/sbin/scsi_id -g -u -s /block/sdb后会返回scsi的WWID,可以用来给udev使用。但是在实际操作中却发现REHL5里没有/block目录,尝试把/block替换成/dev或/sys/block,执行后均无效,无任何返回值,于是google很长时间,找到问题了。

参考以下:

设备文件:由于本文以较通俗的方式讲解 udev,所以设备文件是泛指在 /dev/下,可被应用程序用来和设备驱动交互的文件。而不会特别地区分设备文件、设备节点或者设备特殊文件。 devfsdevfs是 Linux 早期的设备管理工具,已经被 udev 取代。 sysfssysfs是 Linux 2.6 内核里的一个虚拟文件系统 (/sys)。它把设备和驱动的信息从内核的设备模块导出到用户空间 (userspace)。从该文件系统中,Linux 用户可以获取很多设备的属性。 devpath:本文的 devpath是指一个设备在 sysfs文件系统 (/sys)下的相对路径,该路径包含了该设备的属性文件。udev 里的多数命令都是针对 devpath操作的。例如:sdadevpath/block/sda,sda2 的 devpath/block/sda/sda2内核设备名称:设备在 sysfs里的名称,是 udev 默认使用的设备文件名。

RHEL 4 . 8下 udev 的配置文件

[root@RHEL4 dev]# cat /etc/udev/udev.conf

# udev.conf

# The main config file for udev

#

# This file can be used to override some of udev's default values

# for where it looks for files, and where it places device nodes.

#

# WARNING: changing any value, can cause serious system breakage!

#

# udev_root - where in the filesystem to place the device nodes udev_root="/dev/"

# udev_db - The name and location of the udev database. udev_db="/dev/.udev.tdb"

# udev_rules - The name and location of the udev rules file udev_rules="/etc/udev/rules.d/"

# udev_permissions - The name and location of the udev permission file udev_permissions="/etc/udev/permissions.d/"

# default_mode - set the default mode for all nodes that have no

# explicit match in the permissions file default_mode="0600"

# default_owner - set the default owner for all nodes that have no

# explicit match in the permissions file default_owner="root"

# default_group - set the default group for all nodes that have no

# explicit match in the permissions file default_group="root"

# udev_log - set to "yes" if you want logging, else "no" udev_log="no"

 


Linux 用户可以通过该文件设置以下参数:

udev_root:udev 产生的设备所存放的目录,默认值是 /dev/。建议不要修改该参数,因为很多应用程序默认会从该目录调用设备文件。 udev_db:udev 信息存放的数据库或者所在目录,默认值是 /dev/.udev.tdbudev_rules:udev 规则文件的名字或者所在目录,默认值是 /etc/udev/rules.d/udev_permissions:udev 权限文件的名字或者所在目录,默认值是 /etc/udev/permissions.d/default_mode/ default_owner/ default_group:如果设备文件的权限没有在权限文件里指定,就使用该参数作为默认权限,默认值分别是:0600/root/rootudev_log:是否需要 syslog记录 udev 日志的开关,默认值是 no。
清单 4. RHEL5.3 下 udev 的配置文件

[root@RHEL5 ~]# cat /etc/udev/udev.conf

# udev.conf

# The initial syslog(3) priority: "err", "info", "debug" or its

# numerical equivalent. For runtime debugging, the daemons internal

# state can be changed with: "udevcontrol log_priority=". udev_log="err"

 

udev_logsyslog记录日志的级别,默认值是 err。如果改为 info 或者 debug 的话,会有冗长的 udev 日志被记录下来。

实际上在 RHEL5.3 里,除了配置文件里列出的参数 udev_log外,Linux 用户还可以修改参数 udev_rootudev_rules( 请参考上面的“RHEL4.8 的 udev 配置文件”),只不过这 2 个参数是不建议修改的,所以没显示在 udev.conf 里。

可见该版本的 udev.conf 改动不小:syslog默认会记录 udev 的日志,Linux 用户只能修改日志的级别 (err、info、degub 等 );设备的权限不能在 udev.conf 里设定,而是要在规则文件 (*.rules) 里设定。

 

所以,根据如上红色所示部分,http://www.cn.redhat.com/kbase/0808/12118.php中的/block/sdb指的是相对路径,直接使用就可以,据对路径是/sys/block,推测scsi_id只支持相对路径,直接使用绝对路径会因为找不到设备属性文件而无返回值。直接执行/sbin/scsi_id -g -u -s /block/sdb后,返回WWID。

P.S.  如本文没有解决你的问题,请继续阅读:
关于RHEL 5 下scsi_id 无返回值的问题解决(2) 完全解析 
http://blog.itpub.net/14184018/viewspace-1364944/


本文乃spectre2原创文章,请勿转载。如须转载请详细标明转载出处。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14184018/viewspace-701675/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-02-27

  • 博文量
    196
  • 访问量
    1845076