博客
关于我
RHEL 8 VDO重复数据删除和压缩存储-第4章持久命名属性概述
阅读量:527 次
发布时间:2019-03-08

本文共 2591 字,大约阅读时间需要 8 分钟。

第4章 持久命名属性概述

作为系统管理员,您需要正确引用存储设备,以确保在多次系统启动时存储设置的可靠性。传统的非持久性设备命名方式存在以下问题:设备检测顺序的变化可能导致设备名或相关文件系统标识符发生变化,从而引发数据丢失或访问错误的问题。例如,设备探测顺序的更改可能导致现有设备名被重命名或丢失。因此,使用持久性命名属性是绝对必要的。

4.1 非持久性设备命名的缺点

Red Hat Enterprise Linux提供了多种识别存储设备的方法,但正确识别设备至关重要,尤其是在驱动器安装或重新格式化时。传统上,Linux使用设备主次编号和关联名称(如/dev/sdX中的X)来标识设备。然而,这种命名方式存在以下问题:

  • 设备探测顺序更改:每次系统启动时,设备探测过程可能以不同的顺序检测存储设备。若探测顺序变化,设备主要编号、次编号及关联名称也随之改变。

  • 设备未响应或初始化失败:如果SCSI控制器无法初始化或某些设备未响应,探测顺序的更改可能导致设备名发生变化。例如,原设备sdX可能被重新命名为sdY。

  • HBA初始化顺序更改:不同类型的HBA在初始化时可能按不同的顺序探测磁盘。此外,HBA的位置变化(如PCI插槽更换)也会导致设备命名发生变化。

  • 光纤通道故障恢复后:光纤通道驱动程序可能在故障恢复时无法确保存储阵列设备的电源供应,导致设备探测顺序变化。

  • 这些问题表明:在引用存储设备时,应避免使用设备主次编号或关联名称,因为它们可能随着设备探测顺序或系统状态变化而改变。

    4.2 文件系统与设备标识符

    文件系统标识符与设备标识符有本质区别:

    • 文件系统标识符:与特定文件系统关联,存储在文件系统的元数据中。若文件系统被重写或复制到其他设备,标识符会发生变化。文件系统标识符包括UUID和标签。

    • 设备标识符:与块设备(如磁盘或分区)关联。设备标识符包括WWID和分区 UUID,且在重写设备后仍保留不变。

    推荐建议:对于跨设备的逻辑卷,应使用文件系统标识符,而非设备标识符来引用文件系统。因为设备标识符可能因设备重新探测导致变化,而文件系统标识符保持不变。

    4.3 udev机制提供的持久性命名属性

    udev服务通过/dev/disk/目录下的特殊目录提供不同持久性命名属性。红帽企业版 Linux 首先支持以下属性:

    • UUID:通过设备存储内容中的唯一标识符引用存储设备。例如:

      /dev/disk/by-uuid/3e6be9de-8139-11d1-9106-a43f08d823a6
    • 标签(Label):通过设备存储内容中的标签引用存储设备。例如:

      /dev/disk/by-label/引导
    • WWID:作为SCSI标准要求的全球标识符,唯一且与访问路径无关。例如:

      /dev/disk/by-id/scsi-3600508b400105e210000900000490000 → /dev/sda

    4.3.1 UUID属性示例:将 UUID 引用到 /etc/fstab 时,可以使用以下格式:

    UUID=3e6be9de-8139-11d1-9106-a43f08d823a6

    4.3.2 WWID属性示例:在 /dev/mapper/ 目录中的伪设备用于多路径配置。例如:

    dev/mapper/3600508b400105df70000e00000ac0000

    4.3.3 PARTUUID属性:

    /dev/disk/by-partuuid/4cd1448a-01 → /dev/sda1

    4.3.4 Path属性不推荐使用,因为硬件路径可能不可靠。

    4.4 多路径支持的全球标识符

    在多路径配置中(使用 DM Multipath),WWID用于检测到路径并在 /dev/mapper/ 目录中创建伪设备。例如:

    dev/mapper/wwid → /dev/mapper/wwid

    multipath -l命令可列出非持久性设备名称及其映射关系。例如:

    3600508b400105df70000e00000ac0000 dm-2 供应商 产品 [size=20G] _轮询0 [prio=0] [正在使用]  _5:0:1:1 sdc 8:32 [有效] [未定义]  _6:0:1:1 sdg 8:96 [有效] [undef] _轮询0 [prio=0] [启用]  _5:0:0:1 sdb 8:16 [有效] [未定义]  _6:0:0:1 SDF 8:80 [有效] [未定义]

    4.5 udev命名约定的局限性

    虽然udev命名约定提供了持久性命名属性,但需要注意以下缺点:

  • 无法确保存储设备在查询时可用,特别是光纤通道、iSCSI或 FCoE设备可能无法被及时探测到。

  • 内核与用户空间的udev服务可能存在延迟,导致命名属性更新不及时。

  • blkid规则所调用外部程序可能会临时打开设备,影响其他进程的存储访问。

  • 4.6 列出持久性命名属性

    要查看存储设备的持久性命名属性,可以使用以下命令:

  • 查看 UUID 和标签:

    lsblk --fs /dev/sda1

    示例输出:

    NAME FSTYPE TAG UUID MOUNTPOINTsda1 xfs 引导 afa5d5e3-9050-48c3-acc1-bb30095f3dc4 /引导
  • 查看 PARTUUID:

    lsblk --output +PARTUUID /dev/sda1
  • 查看 WWID:

    $文件 / dev / disk / by-id /
  • 4.7 修改持久性命名属性

    要更改 UUID 或标签属性,可以使用以下工具:

  • 对于 XFS 文件系统:

    # xfs_admin -U new_uuid -L new_label /dev/device
  • 对于 ext 系列文件系统:

    # tune2fs -U new_uuid -L new_label /dev/device
  • 对于交换卷(swap):

    # swaplabel --uuid new_uuid --label new_label /dev/swap-device
  • 注意:使用udevadm settle命令后台处理更改,以确保新属性被注册。

    通过以上方法,您可以有效地管理存储设备的持久性命名属性,并确保系统稳定运行。

    转载地址:http://xtciz.baihongyu.com/

    你可能感兴趣的文章
    Openlayers高级交互(2/20):清除所有图层的有效方法
    查看>>
    Openlayers高级交互(20/20):超级数据聚合,页面不再混乱
    查看>>
    Openlayers高级交互(3/20):动态添加 layer 到 layerGroup,并动态删除
    查看>>
    Openlayers高级交互(4/20):手绘多边形,导出KML文件,可以自定义name和style
    查看>>
    Openlayers高级交互(5/20):右键点击,获取该点下多个图层的feature信息
    查看>>
    Openlayers高级交互(6/20):绘制某点,判断它是否在一个电子围栏内
    查看>>
    Openlayers高级交互(7/20):点击某点弹出窗口,自动播放视频
    查看>>
    Openlayers高级交互(8/20):选取feature,平移feature
    查看>>
    Openlayers高级交互(9/20):编辑图形(放缩、平移、变形、旋转),停止编辑
    查看>>
    Openlayers:DMS-DD坐标形式互相转换
    查看>>
    openlayers:圆孔相机根据卫星经度、纬度、高度、半径比例推算绘制地面的拍摄的区域
    查看>>
    OpenLDAP(2.4.3x)服务器搭建及配置说明
    查看>>
    OpenLDAP编译安装及配置
    查看>>
    Openmax IL (二)Android多媒体编解码Component
    查看>>
    OpenMCU(一):STM32F407 FreeRTOS移植
    查看>>
    OpenMCU(三):STM32F103 FreeRTOS移植
    查看>>
    OpenMCU(三):STM32F103 FreeRTOS移植
    查看>>
    OpenMCU(二):GD32E23xx FreeRTOS移植
    查看>>
    OpenMCU(五):STM32F103时钟树初始化分析
    查看>>
    OpenMCU(四):STM32F103启动汇编代码分析
    查看>>