本文共 2591 字,大约阅读时间需要 8 分钟。
作为系统管理员,您需要正确引用存储设备,以确保在多次系统启动时存储设置的可靠性。传统的非持久性设备命名方式存在以下问题:设备检测顺序的变化可能导致设备名或相关文件系统标识符发生变化,从而引发数据丢失或访问错误的问题。例如,设备探测顺序的更改可能导致现有设备名被重命名或丢失。因此,使用持久性命名属性是绝对必要的。
Red Hat Enterprise Linux提供了多种识别存储设备的方法,但正确识别设备至关重要,尤其是在驱动器安装或重新格式化时。传统上,Linux使用设备主次编号和关联名称(如/dev/sdX中的X)来标识设备。然而,这种命名方式存在以下问题:
设备探测顺序更改:每次系统启动时,设备探测过程可能以不同的顺序检测存储设备。若探测顺序变化,设备主要编号、次编号及关联名称也随之改变。
设备未响应或初始化失败:如果SCSI控制器无法初始化或某些设备未响应,探测顺序的更改可能导致设备名发生变化。例如,原设备sdX可能被重新命名为sdY。
HBA初始化顺序更改:不同类型的HBA在初始化时可能按不同的顺序探测磁盘。此外,HBA的位置变化(如PCI插槽更换)也会导致设备命名发生变化。
光纤通道故障恢复后:光纤通道驱动程序可能在故障恢复时无法确保存储阵列设备的电源供应,导致设备探测顺序变化。
这些问题表明:在引用存储设备时,应避免使用设备主次编号或关联名称,因为它们可能随着设备探测顺序或系统状态变化而改变。
文件系统标识符与设备标识符有本质区别:
文件系统标识符:与特定文件系统关联,存储在文件系统的元数据中。若文件系统被重写或复制到其他设备,标识符会发生变化。文件系统标识符包括UUID和标签。
设备标识符:与块设备(如磁盘或分区)关联。设备标识符包括WWID和分区 UUID,且在重写设备后仍保留不变。
推荐建议:对于跨设备的逻辑卷,应使用文件系统标识符,而非设备标识符来引用文件系统。因为设备标识符可能因设备重新探测导致变化,而文件系统标识符保持不变。
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属性不推荐使用,因为硬件路径可能不可靠。
在多路径配置中(使用 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 [有效] [未定义]
虽然udev命名约定提供了持久性命名属性,但需要注意以下缺点:
无法确保存储设备在查询时可用,特别是光纤通道、iSCSI或 FCoE设备可能无法被及时探测到。
内核与用户空间的udev服务可能存在延迟,导致命名属性更新不及时。
blkid规则所调用外部程序可能会临时打开设备,影响其他进程的存储访问。
要查看存储设备的持久性命名属性,可以使用以下命令:
查看 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 /
要更改 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/