长期支持版本

    社区创新版本

      使用说明

      本章介绍 devmaster的使用方法,包括常驻进程配置、客户端工具、规则使用说明和网卡配置。

      常驻进程配置

      常驻进程 devmaster启动后会读取配置文件,并根据配置文件内容,调整日志级别、设置规则加载路径等等。devmaster拥有唯一的配置文件,路径为 /etc/devmaster/config.toml,文件内容采用 toml格式。

      配置选项

      目前 devmaster配置文件中支持的配置选项如下:

      • rules_d: 指定规则加载路径,默认配置中设置为 ["/etc/devmaster/rules.d", "/lib/devmaster/rules.d", "/etc/udev/rules.d", "/run/udev/rules.d", "/lib/udev/rules.d"],该配置项未显式指定时,默认值为 ["/etc/devmaster/rules.d", "/run/devmaster/rules.d", "/usr/local/lib/devmaster/rules.d", "/usr/lib/devmaster/rules.d"]devmaster当前不支持规则加载优先级,不同规则路径下的同名规则文件不会发生覆盖。规则文件的加载顺序按照 rules_d配置项中指定的目录顺序,相同目录下按照规则文件的字典序进行加载。
      • max_workers: 指定最大 worker线程并发数,默认配置文件中设置为3,该配置项未设置时默认为3。手动设置该配置项时,不能超过 cpu核数。
      • log_level: 指定日志级别,支持 errordebuginfo级别,默认配置中设置为 error级别,未设置时默认为 info级别。
      • network_d: 指定网卡配置加载路径,默认配置中设置为 ["/etc/devmaster/network.d"],未指定时无默认加载路径。网卡配置用于控制 devmaster的内置命令 net_setup_link的行为,具体可参考网卡配置说明
      • log_targets: 指定日志输出对象,支持 fileconsolesyslog,默认值为 ["syslog"]。设置 file时,日志会保存在 /var/log/devmaster/devmaster.log文件中。设置 console时,日志直接在控制台显示。设置 syslog时,日志输出到 /dev/log套接字并由相关日志服务,比如 rsyslog间接管理,如果未配置日志服务,则日志直接在控制台显示。可以指定多个日志输出对象。

      客户端工具

      devctl是常驻进程 devmaster的客户端工具,用来控制 devmaster的行为、模拟设备事件、调试规则等等。以下介绍一些常用的 devctl使用命令:

      查看设备数据库信息

      查看设备的 sysfs属性和数据库信息,或清理数据库:

      # devctl info [OPTIONS] [DEVICES]...
      

      监听设备事件

      监听内核上报的 uevent事件和 devmaster处理完设备后发出的事件,分别以 KERNELUSERSPACE作为前缀进行区分:

      # devctl monitor [OPTIONS]
      

      触发设备事件

      模拟一个设备动作,使内核上报对应的uevent事件,用于重放内核初始化过程中的冷插(coldplug)设备事件:

      # devctl trigger [OPTIONS] [DEVICES]...
      

      测试内置命令

      测试内置命令在某个设备上的执行效果,目前支持的内置命令包括 blkidinput_idkmodnet_idnet_setup_linkpath_idusb_id,可以触发的事件类型包括 addchangeremovemoveonlineofflinebindunbind

      # devctl test-builtin [OPTIONS] <BUILTIN> <SYSPATH>
      

      规则使用说明

      devmaster的规则由一组规则文件组成, devmaster常驻进程启动后会根据配置文件中指定的规则加载目录,按字典序依次加载各个规则文件。

      说明 说明:

      增加、删除、修改规则或配置文件后,均需要重启 devmaster使之生效。

      重启 devmaster需要执行 sctl stop devmastersctl start devmaster,不能使用 sctl restart devmaster

      常用规则案例

      以下介绍几种常见的规则应用案例,规则语法详见官方文档中的devmaster手册

      示例1: 创建块设备软链接

      通过 blkid内置命令,读取块设备的 uuid,并基于 uuid创建块设备的软链接。

      触发拥有文件系统的某块设备的事件后,在 /dev/test目录下生成该设备对应的软链接。

      sda1分区块设备为例,测试规则效果:

      1. 创建规则文件 /etc/devmaster/rules.d/00-persist-storage.rules,内容如下:

        SUBSYSTEM!="block", GOTO="end"
        
        IMPORT{builtin}=="blkid"
        
        ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="test/$env{ID_FS_UUID_ENC}"
        
        LABEL="end"
        
      2. 重启 devmaster

        # sctl stop devmaster
        # sctl start devmaster
        
      3. 触发 sda1设备的事件:

        # devctl trigger /dev/sda1
        
      4. 查看 /dev/test/目录下存在指向 sda1的软链接,表示规则生效:

        # ll /dev/test/
        total 0
        lrwxrwxrwx 1 root root 7 Sep  6 15:35 06771fe1-39da-42d7-ad3c-236a10d08a7d -> ../sda1
        

      示例2: 网卡重命名

      使用 net_id内置命令,获取网卡设备的硬件属性,再使用 net_setup_link内置命令,基于网卡配置选择某个硬件属性作为网卡名,最后通过 NAME规则重命名网卡。

      ens33网卡为例,测试网卡重命名规则的效果:

      1. 创建规则文件 /etc/devmaster/rules.d/01-netif-rename.rules,内容如下:

        SUBSYSTEM!="net", GOTO="end"
        
        IMPORT{builtin}=="net_id"
        
        IMPORT{builtin}=="net_setup_link"
        
        ENV{ID_NET_NAME}=="?*", NAME="$env{ID_NET_NAME}"
        
        LABEL="end"
        
      2. 重启 devmaster

        # sctl stop devmaster
        # sctl start devmaster
        
      3. 创建网卡配置/etc/devmaster/network.d/99-default.link,内容如下:

        [Match]
        OriginalName = "*"
        
        [Link]
        NamePolicy = ["database", "onboard", "slot", "path"]
        
      4. 先将网卡设备下线:

        # ip link set ens33 down
        
      5. 将网卡名临时命名为 tmp

        # ip link set ens33 name tmp
        
      6. 触发网卡设备的 add事件:

        # devctl trigger /sys/class/net/tmp --action add
        
      7. 查看网卡名称,发现重新命名为 ens33,表示规则生效:

        # ll /sys/class/net/| grep ens33
        lrwxrwxrwx 1 root root 0 Sep  6 11:57 ens33 -> ../../devices/pci0000:00/0000:00:11.0/0000:02:01.0/net/ens33
        
      8. 激活网卡后恢复网络连接:

        # ip link set ens33 up
        

      说明 说明:

      网卡设备处于激活状态下无法重命名,需要先将其下线。另外 devmaster仅在网卡设备的 add事件下对网卡重命名才会生效。

      在内核参数中添加 net.ifnames=0net.ifnames=false参数会关闭网卡重命名功能。

      示例3: 修改设备节点的用户权限

      OPTIONS+="static_node=<devnode>规则会使 devmaster启动后,立即将本规则行中的用户权限应用在 /dev/<devnode>设备节点上。重启 devmaster后立即生效,无需设备事件触发。

      1. 创建规则文件/etc/devmaster/rules.d/02-devnode-privilege.rules,内容如下:

        OWNER="root", GROUP="root", MODE="777", OPTIONS+="static_node=tty5"
        
      2. 重启 devmaster

        # sctl stop devmaster
        # sctl start devmaster
        
      3. 观察 /dev/tty5的用户、用户组和权限,变更为 rootrootrwxrwxrwx,表示规则生效:

        # ll /dev/tty5
        crwxrwxrwx 1 root root 4, 5 Feb  3  2978748 /dev/tty5
        

      网卡配置

      devmaster的网卡重命名功能由内置命令 net_idnet_setup_link和网卡配置文件配合完成。在规则文件中,通过 net_id获取网卡的硬件属性,再使用 net_setup_link选择某个网卡属性作为新的网卡名。net_setup_link命令基于网卡配置,针对特定网卡设备,控制网卡命名的风格。本章主要介绍网卡配置文件的使用方法,网卡重命名的实施方法可参考网卡重命名规则案例

      默认网卡配置

      devmaster提供了如下默认网卡配置:

      [Match]
      OriginalName = "*"
      
      [Link]
      NamePolicy = ["onboard", "slot", "path"]
      

      网卡配置文件中包含 [Match]匹配节和 [Link]控制节,每节中包含若干配置项。匹配节的配置项用于匹配网卡设备,当网卡满足所有匹配条件时,将控制节中的所有配置项作用在网卡上,比如设置网卡名选取策略、调整网卡参数等等。

      以上列举的默认网卡配置表示将该配置作用在所有网卡设备上,并依次检查 onboardslotpath风格的网卡命名风格,如果找到一个可用的风格,就以该风格对网卡进行命名。

      网卡配置的详细说明可以参考 sysMaster官方手册中的devmaster手册

      说明 说明:

      在内核参数中添加 net.ifnames=0net.ifnames=false参数会关闭网卡重命名功能。

      如果发现网卡重命名未生效,可以检查内核参数中是否配置了这两项。

      文档捉虫

      “有虫”文档片段

      问题描述

      提交类型 issue

      有点复杂...

      找人问问吧。

      PR

      小问题,全程线上修改...

      一键搞定!

      问题类型
      规范和低错类

      ● 错别字或拼写错误;标点符号使用错误;

      ● 链接错误、空单元格、格式错误;

      ● 英文中包含中文字符;

      ● 界面和描述不一致,但不影响操作;

      ● 表述不通顺,但不影响理解;

      ● 版本号不匹配:如软件包名称、界面版本号;

      易用性

      ● 关键步骤错误或缺失,无法指导用户完成任务;

      ● 缺少必要的前提条件、注意事项等;

      ● 图形、表格、文字等晦涩难懂;

      ● 逻辑不清晰,该分类、分项、分步骤的没有给出;

      正确性

      ● 技术原理、功能、规格等描述和软件不一致,存在错误;

      ● 原理图、架构图等存在错误;

      ● 命令、命令参数等错误;

      ● 代码片段错误;

      ● 命令无法完成对应功能;

      ● 界面错误,无法指导操作;

      风险提示

      ● 对重要数据或系统存在风险的操作,缺少安全提示;

      内容合规

      ● 违反法律法规,涉及政治、领土主权等敏感词;

      ● 内容侵权;

      您对文档的总体满意度

      非常不满意
      非常满意
      提交
      根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
      文档捉虫
      编组 3备份