已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
udev一、概述1. 为什么要使用udevl 1. 系统通过卷标的功能来实现识别这个设备。而在集群的环境里面,不可能再使用卷标来识别设备的唯一性。应用程序不可能直接挂载卷标,而/etc/fstab可以通过卷标来挂载设备。(有些应用程序也没有办法识别卷标)。l 2. 为什么要使用udev机制,因为当我们在做前方集群,不同机器挂载后方的存储,有可能不同的机器所识别出的名字不同,则造成设备的不唯一性。l 3. 当系统读到rc.sysinit这个脚本的时候开始激活udev机制。2. udev监控:#udevmonitorl rootlocalhost #ls /dev/sdb #未插入U盘时ls: /dev/sdb: 没有那个文件或目录l rootlocalhost #udevmonitor #插入U盘,通过udevmonitor监控udevmonitor prints the received event from the kernel UEVENTand the event which udev sends out after rule processing UDEVUEVENT1316403060.858053 add/devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-1UEVENT1316403060.858856 add/devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-1/usbdev1.4_ep00UEVENT1316403060.859400 add/devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-1/1-1:1.0UEVENT1316403060.860661 add/class/scsi_host/host3UEVENT1316403060.862507 add/devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-1/1-1:1.0/usbdev1.4_ep81UEVENT1316403060.862816 add/devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-1/1-1:1.0/usbdev1.4_ep02UEVENT1316403060.863135 add/class/usb_device/usbdev1.4UDEV 1316403060.864574 add/devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-1UDEV 1316403060.901102 add/devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-1/usbdev1.4_ep00UDEV 1316403060.929950 add/devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-1/1-1:1.0UDEV 1316403060.949849 add/class/scsi_host/host3UDEV 1316403060.965811 add/devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-1/1-1:1.0/usbdev1.4_ep81UDEV 1316403060.976979 add/devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-1/1-1:1.0/usbdev1.4_ep02UDEV 1316403060.991296 add/class/usb_device/usbdev1.4UEVENT1316403067.887071 add/devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-1/1-1:1.0/host3/target3:0:0/3:0:0:0UEVENT1316403067.887106 add/class/scsi_disk/3:0:0:0UEVENT1316403067.906185 add/block/sdbUEVENT1316403067.906219 add/block/sdb/sdb4UEVENT1316403067.906230 add/class/scsi_device/3:0:0:0UEVENT1316403067.906239 add/class/scsi_generic/sg1UDEV 1316403067.913648 add/devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-1/1-1:1.0/host3/target3:0:0/3:0:0:0UDEV 1316403067.933016 add/class/scsi_disk/3:0:0:0UDEV 1316403067.949991 add/block/sdbUDEV 1316403067.992497 add/class/scsi_device/3:0:0:0UDEV 1316403067.998881 add/class/scsi_generic/sg1UDEV 1316403068.040513 add/block/sdb/sdb4l rootlocalhost #ll /dev/sdbbrw-r- 1 root disk 8, 16 09-19 11:31 /dev/sdb #找到U盘,当再次拔出:则设备/dev/sdb也会消失。这就是udev机制。3. /sys/和/proc/目录区别:l 1. /sys/ :这个目录就是用来显示设备的状态的目录(文件类型),/sys/是根据不同设备架构进行分类的,并且可以做一些调优l 2. /proc/ :也能显示设备的状态,/proc/一般只是进行查看。4. udev功能l 1. 动态管理:当设备添加/删除时,udev 的守护进程侦听来自内核的 uevent,以此添加或者删除/dev下的设备文件,所以udev只为已经连接的设备产生设备文件,而不会在/dev下产生大量虚无的设备文件。l 2. 提供设备持续名称不变的能力l 3. 使用相关用户程序来查询设备的名称l 4. 编辑设备名称策略到内核中l 5. 即可遵循LSB设备名称标准也可自定义设备名称(LSB:linux设备名称标准化)l 6. udev消耗系统资源小l 7. udev不关心设备主/辅设备号5. udev工作过程当一个设备添加/移除的时候,这时候udev就会做一下事情:l 1. 读取/etc/udev/rules.d中策略文件 l 2. 执行策略中的命令l 3. 将信息输出到/sys/中二、Udev配置1. udev的全局配置文件(/etc/udev/udev.conf)rootstation55 # vim /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_root = /dev #将设备文件存放位置,一般都是放在/dev下的udev_rules = /etc/udev/rules.d/ #udev策略存放位置,默认/etc/udev/rules.d/2. udev策略文件l 1 .策略文件格式:/etc/udev/rules.d/.ruleseg:99-myusb.rules #必须.rules结尾;序号不能超过100,最好写99,序号越大,udev读取时间越晚,这样序号大的会覆盖序号小的策略。l 2. 策略格式:value , . value , . eg:BUS=usb, SYSFSserial=20043512321411d34721, NAME=usb_backup #= 代表:如果是 3. 查询udev匹配key valuel 1. cat /proc/bus/usb,pci,./devicesl 2. #udevinfo -a -p $(udevinfo -q path -n /dev/sda) #-a:产看所有属性,(/sys/下) #-:路径eg:rootstation5 # udevinfo -a -p $(udevinfo -q path -n /dev/sdb)Udevinfo starts with the device specified by the devpath and thenwalks up the chain of parent devices. It prints for every devicefound, all possible attributes in the udev rules key format.A rule to match, can be composed by the attributes of the deviceand the attributes from one single parent device. looking at device /block/sdb: KERNEL=sdb SUBSYSTEM=block SYSFSstat= 29 228 607 58 0 0 0 0 0 58 58 SYSFSsize=15701759 SYSFSremovable=1 SYSFSrange=16 SYSFSdev=8:16 looking at parent device /devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-1/1-1:1.0/host1/target1:0:0/1:0:0:0: ID=1:0:0:0 BUS=scsi DRIVER=sd SYSFSioerr_cnt=0x0 SYSFSiodone_cnt=0xd7 SYSFSiorequest_cnt=0xd7 SYSFSiocounterbits=32 SYSFStimeout=180 SYSFSstate=running SYSFSrev=8.01 SYSFSmodel=Cruzer SYSFSvendor=SanDisk SYSFSscsi_level=3 SYSFStype=0 SYSFSqueue_type=none SYSFSqueue_depth=1 SYSFSdevice_blocked=0 SYSFSmax_sectors=240 looking at parent device /devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-1/1-1:1.0/host1/target1:0:0: ID=target1:0:0 BUS= DRIVER= looking at parent device /devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-1/1-1:1.0/host1: ID=host1 BUS= DRIVER= looking at parent device /devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-1/1-1:1.0: ID=1-1:1.0 BUS=usb DRIVER=usb-storage SYSFSmodalias=usb:v0781p5151d0200dc00dsc00dp00ic08isc06ip50 SYSFSbInterfaceProtocol=50 SYSFSbInterfaceSubClass=06 SYSFSbInterfaceClass=08 SYSFSbNumEndpoints=02 SYSFSbAlternateSetting= 0 SYSFSbInterfaceNumber=00 looking at parent device /devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-1: ID=1-1 BUS=usb DRIVER=usb SYSFSconfiguration= SYSFSserial=026680028451965C SYSFSproduct=Cruzer Micro SYSFSmanufacturer=SanDisk SYSFSmaxchild=0 SYSFSversion= 2.00 SYSFSdevnum=2 SYSFSspeed=480 SYSFSbMaxPacketSize0=64 SYSFSbNumConfigurations=1 SYSFSbDeviceProtocol=00 SYSFSbDeviceSubClass=00 SYSFSbDeviceClass=00 SYSFSbcdDevice=0200 SYSFSidProduct=5151 SYSFSidVendor=0781 SYSFSbMaxPower=200mA SYSFSbmAttributes=80 SYSFSbConfigurationValue=1 SYSFSbNumInterfaces= 1 looking at parent device /devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1: ID=usb1 BUS=usb DRIVER=usb SYSFSconfiguration= SYSFSserial=0000:02:03.0 SYSFSproduct=EHCI Host Controller SYSFSmanufacturer=Linux 2.6.18-194.el5 ehci_hcd SYSFSmaxchild=6 SYSFSversion= 2.00 SYSFSdevnum=1 SYSFSspeed=480 SYSFSbMaxPacketSize0=64 SYSFSbNumConfigurations=1 SYSFSbDeviceProtocol=01 SYSFSbDeviceSubClass=00 SYSFSbDeviceClass=09 SYSFSbcdDevice=0206 SYSFSidProduct=0000 SYSFSidVendor=0000 SYSFSbMaxPower= 0mA SYSFSbmAttributes=e0 SYSFSbConfigurationValue=1 SYSFSbNumInterfaces= 1 looking at parent device /devices/pci0000:00/0000:00:11.0/0000:02:03.0: ID=0000:02:03.0 BUS=pci DRIVER=ehci_hcd SYSFSbroken_parity_status=0 SYSFSenable=1 SYSFSmodalias=pci:v000015ADd00000770sv000015ADsd00000770bc0Csc03i20 SYSFSlocal_cpus=ffffffff SYSFSirq=51 SYSFSclass=0x0c0320 SYSFSsubsystem_device=0x0770 SYSFSsubsystem_vendor=0x15ad SYSFSdevice=0x0770 SYSFSvendor=0x15ad looking at parent device /devices/pci0000:00/0000:00:11.0: ID=0000:00:11.0 BUS=pci DRIVER= SYSFSbroken_parity_status=0 SYSFSenable=1 SYSFSmodalias=pci:v000015ADd00000790sv00000000sd00000000bc06sc04i01 SYSFSlocal_cpus=ffffffff SYSFSirq=0 SYSFSclass=0x060401 SYSFSsubsystem_device=0x0000 SYSFSsubsystem_vendor=0x0000 SYSFSdevice=0x0790 SYSFSvendor=0x15ad looking at parent device /devices/pci0000:00: ID=pci0000:00 BUS=DRIVER=rootstation5 #vim /etc/udev/rules.d/99-myusb.rulesBUS=usb,SYSFSserial=026680028451965C,NAME=myusb#键值只要是能代表这个设备的唯一性就可以rootstation5 # ls /dev/myusb /dev/myusb#udev自动生成/dev/myusb设备l 3. #scsi_id -g -x -s /block/sdN #scsi_id scsi设备信息参看工具rootstation3 # scsi_id -g -x -s /block/sdaID_VENDOR=SEAGATEID_MODEL=ST973402SSUN72GID_REVISION=0603ID_SERIAL=35000c5000b9c626fID_TYPE=diskID_BUS=scsi#U盘或其他硬件设备使用udevinfo进行查询,硬盘和存储使用的scsi_id进行查询。rootstation3 #vim /etc/udev/rules.d/99-myusb.rulesPROGRAM=/lib/udev/scsi_id -g -x -s /block/sda,RESULT=ID_MODEL=ST973402SSUN72G,ID_SERIAL=35000c5000b9c626f,SYMLINK+=mydisk1#判断运行程序及其结果是否匹配,根据此结果给键赋值。三、策略中各键值说明1. 匹配键值l = 是否等于l != 不等于eg:ACTIONadd #执行添加操作KERNEL=saa-z1 #系统识别标识BUS=scsi #总线类型为scsiDRIVER!=ide-cdrom #驱动不是ide-cdromSYSFSserial=20043512321411d34721 #系统标识PROGRAM=custom_app.pl,RESULT=some return string #执行某一脚本或程序并返回值#支持通配符*、?、a-z、!a2.给键分配键值l = 给键赋值l += 给键增加一个值,即给设备文件创建一个链接文件l := 无法改变的赋值,后面的策略无法覆盖该值eg:NAME=usb_cryptoSYMLINK+=data1OWNER=studentMODE=0600LABEL=test_rules_endGOTO=test_rules_endRUN=myapp3. 实例eg:l rootstation5 # vim /etc/udev/rules.d/99-myusb.rules BUS=usb,SYSFSserial=026680028451965C,OWNER=netsword,GROUP=netsword,MODE=0600,NAME=myusb,RUN+=/tmp/test.sh#建议将创建设备改为创建软连接,即将NAME=myusb改为SYMLINK+=myusbl rootstation5 # vim /tmp/test.sh#!/bin/bash/usr/bin/wall hello拔掉U盘,重新插入U盘root
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 精神分裂症心理护理
- 电销数据团队建设与运营体系
- 2025版高血压症状诊断及生活护理培训
- 老年痴呆症患者大便护理方法
- 人道主义补偿协议书
- 2025-2026学年北京市初三物理上册期中考试试卷及答案
- 2025-2026学年安徽省亳州市八年级物理上册期中考试试卷及答案
- 2025版心衰常见症状及护理原则培训
- 生产员工安全意识培训
- 员工培训流程图制作指南
- 空调滤芯专业知识培训课件
- 2025北师大版九年级英语全册单词默写表(汉译英)
- 左传中古代修辞手法介绍与鉴赏教学方案
- 2025年农发行招聘面试高频题及答案
- 法院生态环境知识培训课件
- 检验科危化品课件
- 2024年高校辅导员素质能力大赛试题(附答案)
- 虚拟数字人身份识别技术-洞察及研究
- 太阳能光伏市场增长预测报告
- 第四季度公司2025年安全生产工作会议纪要
- 2025年部编版新教材语文七年级上册教学进度安排表
评论
0/150
提交评论