• 全部
  • 经验案例
  • 典型配置
  • 技术公告
  • FAQ
  • 漏洞说明
  • 全部
  • 全部
  • 大数据引擎
  • 知了引擎
产品线
搜索
取消
案例类型
发布者
是否解决
是否官方
时间
搜索引擎
匹配模式
高级搜索

使用udev解决RedHat AS4.2下裸磁盘设备名称重启后发生改变的问题

2007-04-20 发表
  • 0关注
  • 0收藏 960浏览
粉丝: 关注:

使用udev解决RedHat AS4.2下裸磁盘设备名称重启后发生改变的问题

一、       组网:

服务器上安装RedHat AS 4.2操作系统,后端存储为H3C IX5000或IX1000

二、       问题描述:

RedHat AS 4.2上通过iSCSI协议连接IX5000提供的存储空间,IX5000分了3个卷给服务器,三个卷分别为:volume1, volume12, volume13,在服务器上执行fdisk -l,发现:

v1对应设备名sdb

v2对应设备名sdc

v3对应设备名sdd

执行service iscsi restart后,发现

v2对应设备名sdb

v1对应设备名sdc

v3对应设备名sdd

v1和v2的设备名发生了互换变化,这种情况重启系统后也回发生,即磁盘对应的设备名称无法固定。如果有数据库等应用需要使用磁盘裸设备,势必会出现因为设备名称发生改变而造成应用程序无法正常读取数据的现象。

三、       过程分析:

四、       解决方法:

解决磁盘设备名称不能固定的问题,有两种方法,一种方法是使用Linux系统自带的LVM(逻辑卷管理器)功能,另一种方法是使用Linux下的udev,这里我们使用udev的方法。

Linux下udev类似与硬件即插即用管理器,它能让硬件即插即用。udev可以通过读取事先编辑好的规则对设备进行命名,那么我们就可以根据每个磁盘的特征编辑规则,使得磁盘每次被系统识别后的名称都保持不变。

接下来,我们通过具体的实例来说明如何使用udev解决设备名称无法固定的问题。

先在IX5000上分配两个卷test1(100GB)和test3(130GB),之后在Red Hat AS4.2上通过软件iSCSI initiator连接并识别到磁盘,卷test3(130GB)被识别为sdb,卷test1(100GB)被识别为sdc。对sdb和sdc进行分区,每个磁盘都全部被分为一个主分区,分别是sdb1和sdc1。

我们通过通过udevinfo查看sdb1及sdc1的一些属性(注意蓝色字体部分),通过分析,目前来看只有SYSFS{size}这个值可以用来唯一标识磁盘(前提是IX5000上分配给服务器的各个卷的大小都不同):

[root@as42-113 rules.d]# udevinfo -a -p /sys/block/sdb/sdb1

udevinfo starts with the device the node belongs to and then walks up the

device chain, to print for every device found, all possibly useful attributes in the udev key format.

Only attributes within one device section may be used together in one rule,

to match the device for which the node will be created.

  looking at class device '/sys/block/sdb/sdb1':

    SYSFS{dev}="8:17"

    SYSFS{size}="272622987"

    SYSFS{start}="63"

    SYSFS{stat}="       0        0        0        0"

 

follow the class device's "device"

  looking at the device chain at '/sys/devices/platform/host4/target4:0:0/4:0:0:0':

    BUS="scsi"

   

    SYSFS{detach_state}="0"

    SYSFS{device_blocked}="0"

    SYSFS{model}="IP SAN          "

    SYSFS{queue_depth}="32"

    SYSFS{rev}="1   "

    SYSFS{scsi_level}="5"

    SYSFS{state}="running"

    SYSFS{timeout}="30"

    SYSFS{type}="0"

    SYSFS{vendor}="H3C     "

  looking at the device chain at '/sys/devices/platform/host4/target4:0:0':

    BUS=""

   

    SYSFS{detach_state}="0"

  looking at the device chain at '/sys/devices/platform/host4':

    BUS=""

   

    SYSFS{detach_state}="0"

  looking at the device chain at '/sys/devices/platform':

    BUS=""

   

SYSFS{detach_state}="0"

记录下磁盘的唯一属性后,我们在/etc/udev/rules.d/目录下新建一个规则文件:15-udev.rules

[root@as42-113]# vi /etc/udev/rules.d/15-udev.rules

在文件中添加以下两行:

KERNEL="sd*", SYSFS{size}="272622987", NAME="test3"

KERNEL="sd*", SYSFS{size}="209712447", NAME="test1"

在本例中,test3将代表IX5000上分配过来的130GB的test3卷,test1将代表IX5000上分配过来的130GB的test1卷,SYSFS{size}="272622987"是通过udevinfo -a -p /sys/block/sdb/sdb1查看得到的值,SYSFS{size}="209712447"是通过udevinfo -a -p /sys/block/sdb/sdc1查看得到的值。

编辑完规则文件后,通过/sbin/start_udev命令使udev重新读取规则文件

[root@as42-113 ~]# /sbin/start_udev

Starting udev:                                             [  OK  ]

之后通过ls /dev/test*可以查看在/dev目录下有了两个新的设备。

[root@as42-113 ~]# ls -l /dev/test*

brw-------  1 root root 8, 17 Mar 27 20:16 /dev/test1

brw-------  1 root root 8, 65 Mar 27 20:16 /dev/test3

fdisk –l /dev/test3 可以验证/dev/test3表示的就是卷test3(130GB)在服务器上对应的磁盘分区。

[root@as42-113 ~]# fdisk -l /dev/test3

Disk /dev/test3: 139.5 GB, 139582969344 bytes

255 heads, 63 sectors/track, 16969 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/test3 doesn't contain a valid partition table

以后应用程序在使用裸磁盘时,使用设备/dev/test1及/dev/test3即可。

至此我们完成了udev的配置,解决了磁盘名称不固定的问题。

注意使用udev这种方法的前提是RedHat AS 4.2上识别到的各个磁盘的大小是不一样的。

若您有关于案例的建议,请反馈:

作者在2007-04-23对此案例进行了修订
0 个评论

该案例暂时没有网友评论

编辑评论

举报

×

侵犯我的权益 >
对根叔知了社区有害的内容 >
辱骂、歧视、挑衅等(不友善)

侵犯我的权益

×

泄露了我的隐私 >
侵犯了我企业的权益 >
抄袭了我的内容 >
诽谤我 >
辱骂、歧视、挑衅等(不友善)
骚扰我

泄露了我的隐私

×

您好,当您发现根叔知了上有泄漏您隐私的内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到pub.zhiliao@h3c.com 邮箱,我们会尽快处理。
  • 1. 您认为哪些内容泄露了您的隐私?(请在邮件中列出您举报的内容、链接地址,并给出简短的说明)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)

侵犯了我企业的权益

×

您好,当您发现根叔知了上有关于您企业的造谣与诽谤、商业侵权等内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到 pub.zhiliao@h3c.com 邮箱,我们会在审核后尽快给您答复。
  • 1. 您举报的内容是什么?(请在邮件中列出您举报的内容和链接地址)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)
  • 3. 是哪家企业?(营业执照,单位登记证明等证件)
  • 4. 您与该企业的关系是?(您是企业法人或被授权人,需提供企业委托授权书)
我们认为知名企业应该坦然接受公众讨论,对于答案中不准确的部分,我们欢迎您以正式或非正式身份在根叔知了上进行澄清。

抄袭了我的内容

×

原文链接或出处

诽谤我

×

您好,当您发现根叔知了上有诽谤您的内容时,您可以向根叔知了进行举报。 请您把以下内容通过邮件发送到pub.zhiliao@h3c.com 邮箱,我们会尽快处理。
  • 1. 您举报的内容以及侵犯了您什么权益?(请在邮件中列出您举报的内容、链接地址,并给出简短的说明)
  • 2. 您是谁?(身份证明材料,可以是身份证或护照等证件)
我们认为知名企业应该坦然接受公众讨论,对于答案中不准确的部分,我们欢迎您以正式或非正式身份在根叔知了上进行澄清。

对根叔知了社区有害的内容

×

垃圾广告信息
色情、暴力、血腥等违反法律法规的内容
政治敏感
不规范转载 >
辱骂、歧视、挑衅等(不友善)
骚扰我
诱导投票

不规范转载

×

举报说明

提出建议

    +

亲~登录后才可以操作哦!

确定

亲~检测到您登陆的账号未在http://hclhub.h3c.com进行注册

注册后可访问此模块

跳转hclhub

你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作