前言
背景描述,在linux系统中,如果添加了新的scsi磁盘或者映射san存储lun操作,重启操作系统之后会出现磁盘标识符(sd*)错乱的情况。
介绍
例如之前添加的san存储lun的磁盘标识符为/dev/sdd,重启之后发现变成/dev/sdh,特别是oracle rac环境下我们是不希望出现这样的情况的。
解决这个问题之前,需要先搞清楚linux系统中的 wwid 和 uuid 号。
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的资料请关注代码网其它相关文章!
发表评论