Linux获取磁盘的UUID和序列号WWID的方法

 更新时间:2026年04月21日 08:51:33   作者:Lucifer三思而后行  
本文介绍了在Linux系统中,由于磁盘标识符(sd*)可能会在重启后发生变化,特别是在Oracle RAC环境下需要稳定性,文章详细阐述了WWID和UUID的概念,它们都是用于独特标识磁盘的标识符,需要的朋友可以参考下

前言

背景描述,在Linux系统中,如果添加了新的SCSI磁盘或者映射SAN存储LUN操作,重启操作系统之后会出现磁盘标识符(sd*)错乱的情况。

介绍

例如之前添加的SAN存储LUN的磁盘标识符为/dev/sdd,重启之后发现变成/dev/sdh,特别是oracle RAC环境下我们是不希望出现这样的情况的。

解决这个问题之前,需要先搞清楚Linux系统中的 wwiduuid 号。

WWID

根据SCSI标准,每个SCSI磁盘都有一个WWID,类似于网卡的MAC地址,要求是独一无二。

通过WWID标示SCSI磁盘就可以保证磁盘路径永久不变,Linux系统上/dev/disk/by-id目录包含每个SCSI磁盘WWID访问路径。

查看磁盘设备wwid方法:

Linux 6:

scsi_id -g -u /dev/sda

Linux 7/8:

/usr/lib/udev/scsi_id -g -u /dev/sda

UUID

UUID是有文件系统在创建时候生成的,用来标记文件系统,类似WWID一样也是独一无二的。

因此使用UUID来标示SCSI磁盘,也能保证路径是永久不变的。Linux上/dev/disk/by-uuid可以看到每个已经创建文件系统的磁盘设备以及与/dev/sd*之间的映射关系。

自内核 2.15.1 起,libuuid 就是 util-linux-ng 包中的一部分,它被默认安装在 Linux 系统中。UUID 由该库生成,可以合理地认为在一个系统中 UUID 是唯一的,并且在所有系统中也是唯一的。

UUID 以 32 个十六进制的数字表示,被连字符分割为 5 组显示,总共的 36 个字符的格式为 8-4-4-4-12(32 个字母或数字和 4 个连字符)。

作为一个 Linux 系统管理员,你应该知道如何去查看分区的 UUID 或文件系统的 UUID。因为现在大多数的 Linux 系统都使用 UUID 挂载分区。你可以在 /etc/fstab 文件中可以验证。

有许多可用的实用程序可以查看 UUID。本文我们将会向你展示多种查看 UUID 的方法,并且你可以选择一种适合于你的方法。

例如: d92fa769-e00f-4fd7-b6ed-ecf7224af7fa

磁盘的 UUID 是唯一且不随主机重启改变,因此绑定磁盘时需要用到 UUID,那么如何获取 UUID呢?

我们可以使用下面的 7 个命令来查看。

  • blkid 命令:定位或打印块设备的属性。
  • lsblk 命令:列出所有可用的或指定的块设备的信息。
  • hwinfo 命令:硬件信息工具,是另外一个很好的实用工具,用于查询系统中已存在硬件。
  • udevadm 命令:udev 管理工具
  • tune2fs 命令:调整 ext2/ext3/ext4 文件系统上的可调文件系统参数。
  • dumpe2fs 命令:查询 ext2/ext3/ext4 文件系统的信息。
  • by-uuid 路径:该目录下包含有 UUID 和实际的块设备文件,UUID 与实际的块设备文件链接在一起。

查看磁盘设备uuid方法:

blkid

以上简单介绍了 UUID 和 WWID 的区别,以及如何查看!

Linux6、7查询、修改磁盘UUID

一、获取磁盘UUID

Linux6:

#a b c 等为磁盘sda,sdb,sdc盘符
for i in  a b c ;
do
   echo "\"sd$i\" UUID= \"`/lib/udev/scsi_id -g -u -d /dev/sd$i`\""
done

Linux7:

#a b c 等为磁盘sda,sdb,sdc盘符
for i in  a b c ;
do
   echo "\"sd$i\" UUID= \"`/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/sd$i`\""
done

scsi_id --help 查看更多参数
注:若是在VMware中生成的虚拟磁盘,在操作系统中可能查不到磁盘uuid,需要在配置文件中追加以下参数:配置文件文件的路径和名字为:" \ 虚拟机家目录虚拟机名字.vmx " 文件

#控制uuid参数
disk.EnableUUID = "TRUE"

二、获取磁盘分区或逻辑卷的 “文件系统类 型” 及其 “分区uuid”

获取分区或逻辑卷信息:
1、blkid 
#输出结果相对详细
#批量查询分区信息或逻辑卷如下:
#sda1,sda2等为磁盘sda分区,mapper/centos-home为磁盘逻辑卷
for i in  sda1 sda2 mapper/centos-lv_data;
do
   echo " \"`blkid /dev/$i`\""
done
2、lsscsi --scsi_id -g
#显示磁盘类型,分区等相关信息(Linux6没有此命令)
3、ll /dev/disk/by-uuid
#不好用,不推荐

注:分区或逻辑卷只有在格式化文件系统后才有uuid

三、修改分区UUID

1、重新生成磁盘uuid

#硬盘分区为sdc1 
uuidgen | xargs tune2fs /dev/sdc1 -U

示例:

# blkid /dev/sdc1											  ##查询sdc1分区uuid
/dev/sdc1: UUID="e26881ee-73ba-46b1-bcf8-94b6833b58dc" TYPE="ext4" 
# uuidgen | xargs tune2fs /dev/sdc1 -U		  				  ##重新生成sdc1分区uuid
tune2fs 1.41.12 (17-May-2010)
# blkid /dev/sdc1											  ##再次查询sdc1分区uuid
/dev/sdc1: UUID="4ae4a650-0f58-4e99-8d89-4dc3332a45c6" TYPE="ext4" 

2、将sdc1分区原来的uuid重新写入分区(前提是有备份过)

tune2fs -U e26881ee-73ba-46b1-bcf8-94b6833b58dc /dev/sdc1

示例:

# blkid /dev/sdc1									  		  ##查询sdc1分区uuid
/dev/sdc1: UUID="4ae4a650-0f58-4e99-8d89-4dc3332a45c6" TYPE="ext4" 
# tune2fs -U e26881ee-73ba-46b1-bcf8-94b6833b58dc /dev/sdc1   ##将sdc1分区原来的uuid重新写入分区
tune2fs 1.41.12 (17-May-2010)
# blkid /dev/sdc1 											  ##再次查询sdc1分区uuid
/dev/sdc1: UUID="e26881ee-73ba-46b1-bcf8-94b6833b58dc" TYPE="ext4" 

以上就是Linux获取磁盘的UUID和序列号WWID的方法的详细内容,更多关于Linux获取磁盘UUID和WWID的资料请关注脚本之家其它相关文章!

相关文章

  • haproxy软件的日志如何输出到指定文件

    haproxy软件的日志如何输出到指定文件

    本文介绍了如何将haproxy的日志从系统syslog中分离出来,并独立记录到不同的日志文件中,通过修改rsyslog配置文件和haproxy配置文件,可以实现这一目标,并便于后期的日志管理和分析
    2024-12-12
  • centos7系统nginx服务器下phalcon环境搭建方法详解

    centos7系统nginx服务器下phalcon环境搭建方法详解

    这篇文章主要介绍了centos7系统nginx服务器下phalcon环境搭建方法,结合具体实例形式详细分析了centos7的nginx服务器搭建phalcon的具体操作步骤与相关设置技巧,需要的朋友可以参考下
    2019-09-09
  • 在 Linux 上用 DNS 实现简单的负载均衡的方法

    在 Linux 上用 DNS 实现简单的负载均衡的方法

    这篇文章主要介绍了在 Linux 上用 DNS 实现简单的负载均衡的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • CentOS系统下安装及配置JDK介绍

    CentOS系统下安装及配置JDK介绍

    大家好,本篇文章主要讲的是CentOS系统下安装及配置JDK介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • ubuntu/deepin制作快捷启动图标的方法

    ubuntu/deepin制作快捷启动图标的方法

    这篇文章主要介绍了ubuntu/deepin制作快捷启动图标的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-02-02
  • LINUX中关于mkdir命令语法和实例解读

    LINUX中关于mkdir命令语法和实例解读

    Linux系统中,mkdir命令用于创建新的目录,支持多种选项如权限设置、递归创建等,对于新手和管理员都非常有用,命令的灵活性可以通过各种选项来实现不同的功能,包括设置权限、创建多级嵌套目录和处理隐藏目录等,掌握mkdir命令对于提高Linux操作效率和管理文件系统至关重要
    2024-10-10
  • 使用Kubeadm在CentOS7.2上部署Kubernetes集群的方法

    使用Kubeadm在CentOS7.2上部署Kubernetes集群的方法

    本篇文章主要介绍了使用Kubeadm在CentOS7.2上部署Kubernetes集群的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • 17个Linux tar命令实用示例

    17个Linux tar命令实用示例

    这篇文章主要为大家详细介绍了Linux 中 17 个tar命令实用示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • 基于Linux环境的进度条实现方法

    基于Linux环境的进度条实现方法

    在Linux环境下,C语言的输入输出控制有其独特的魅力和实际应用场景,本文将从回车换行和缓冲区的基础知识讲起,带领大家探索如何在Linux环境中实现一个动态倒计时功能,并进一步完成一个具有交互感的进度条,需要的朋友可以参考下
    2025-01-01
  • linux rsync的安装与配置

    linux rsync的安装与配置

    rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了--remote sync
    2013-06-06

最新评论