最近再做存储Multipath 以及/etc/fstab挂载得时候遇到需要查询磁盘得uuid得情况,查找到如下得信息,可以提供一起学习,交流
前言介绍
描述:通用唯一识别码(英语:Universally Unique Identifier,简称UUID)是一种软件建构的标准是在计算机系统中用来标识信息的一个 128 位(比特)的数字,最初被用在阿波罗网络计算机系统(NCS)中,亦为自由软件基金会组织会(OSF)在分散式计算环境领域境(DCE)的一部份。
UUID的目的是让分散式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。如此一来每个人都可以创建不与其它人冲突的UUID。在这样的情况下就不需考虑数据库创建时的名称重复问题
。
目前最广泛应用的UUID:
Linux UUID的作用及意义
UUID版本 UUID1:从主机ID、序列号和当前时间生成UUID。它基于硬件地址和一个随机的14位序列号。 UUID3:根据名称空间标识符(即UUID)和名称(即字符串,此站点使用UUID1作为字符串)的MD5哈希值生成UUID。 UUID4:生成一个随机UUID。 UUID5:根据名称空间标识符(即UUID)和名称(即字符串,本站点使用UUID1作为字符串)的SHA-1散列生成UUID。
UUID格式 UUID 以 32 个十六进制的数字表示,被连字符分割为 5 组显示,总共的 36 个字符的格式为 8-4-4-4-12(32 个字母或数字和 4 个连字符)。
例如:d92fa769-e00f-4fd7-b6ed-ecf7224af7fa
获取与生成uuid
获取UUID
Linux 中获取硬盘分区或文件系统的 UUID 的七种方法 描述:Linux 系统管理员你应该知道如何去查看分区的 UUID 或文件系统的 UUID,因为现在大多数的 Linux 系统都使用 UUID 挂载分区,你可以在 /etc/fstab 文件中可以验证。
cat /etc/fstab UUID=b379c221-7e3d-42ff-b5ae-bf1d2dfe9ffb /boot xfs defaults 0 0
UUID它可以帮助 Linux 系统识别一个磁盘分区而不是块设备文件。
#使用下面的 7 个命令来查看 #blkid 命令:定位或打印块设备的属性。 $blkid /dev/sda1: UUID="b379c221-7e3d-42ff-b5ae-bf1d2dfe9ffb" TYPE="xfs" /dev/sda2: UUID="WYci3Y-yQO9-eU0R-Dzmu-ccUH-Lhns-rLhVnJ" TYPE="LVM2_member" #lsblk 命令:列出所有可用的或指定的块设备的信息。 $lsblk -o name,mountpoint,size,uuid NAME MOUNTPOINT SIZE UUID sda 40G |-sda1 /boot 1G b379c221-7e3d-42ff-b5ae-bf1d2dfe9ffb `-sda2 39G WYci3Y-yQO9-eU0R-Dzmu-ccUH-Lhns-rLhVnJ |-centos-root / 37G bf08ef5c-d394-4893-86ad-a3c8025daa85 `-centos-swap [SWAP] 2G b27b7ddb-1f8b-43cb-aaed-0365d1e2e450 #hwinfo 命令:硬件信息工具,是另外一个很好的实用工具,用于查询系统中已存在硬件。 hwinfo --block | grep by-uuid | awk -F "," '{print $1,"-",$3}' Device Files: /dev/sda1 - /dev/disk/by-uuid/b379c221-7e3d-42ff-b5ae-bf1d2dfe9ffb #udevadm 命令:udev 管理工具 udevadm info -q all -n /dev/sda1 | grep -i by-uuid | head -1 S: disk/by-uuid/b379c221-7e3d-42ff-b5ae-bf1d2dfe9ffb #tune2fs 命令:调整 ext2/ext3/ext4 文件系统上的可调文件系统参数。 tune2fs -l /dev/sdc1 | grep UUID Filesystem UUID: d17e3c31-e2c9-4f11-809c-94a549bc43b7 #dumpe2fs 命令:查询 ext2/ext3/ext4 文件系统的信息。 tune2fs -l /dev/sdc1 | grep UUID Filesystem UUID: d17e3c31-e2c9-4f11-809c-94a549bc43b7 #by-uuid 路径:该目录下包含有 UUID 和实际的块设备文件,UUID 与实际的块设备文件链接在一起。 ls -lh /dev/disk/by-uuid/ ls -lh /dev/disk/by-id/ #能看见扩展分区磁盘的UUID lrwxrwxrwx 1 root root 10 Aug 2 17:09 b379c221-7e3d-42ff-b5ae-bf1d2dfe9ffb -> ../../sda1 lrwxrwxrwx 1 root root 10 Aug 2 17:09 b27b7ddb-1f8b-43cb-aaed-0365d1e2e450 -> ../../dm-1 lrwxrwxrwx 1 root root 10 Aug 2 17:09 bf08ef5c-d394-4893-86ad-a3c8025daa85 -> ../../dm-0
Linux 中获取网卡的UUID方法
#示例1.Linux中网卡的UUID,可利用此uuid修改网卡的配置文件; uuidgen eth0 e784d3f5-54ef-48f4-a5e0-4ee2d670e8b #示例2.查看网卡的UUID与网卡名称对应的设备名称 [[email protected] ~]$ nmcli con NAME UUID TYPE DEVICE br-9bc175e03197 e784d3f5-54ef-48f4-a5e0-4ee2d670e8b bridge br-9bc175e03197
生成UUID
描述:UUID 由该库生成可以合理地认为在一个系统中 UUID 是唯一的,生成的UUID并且在所有系统中也是唯一的。
方式1:采用Python使用了UUID模块生成uuid1/3/4/5等版本的UUID字符串,位于Lib/uuid.py之中;
import uuid class uuid.UUID(hex=None, bytes=None, bytes_le=None, fields=None, int=None, version=None, *, is_safe=SafeUUID.unknown) UUID('{12345678-1234-5678-1234-567812345678}') UUID('12345678123456781234567812345678') UUID('urn:uuid:12345678-1234-5678-1234-567812345678') UUID(bytes=b'\x12\x34\x56\x78'*4) UUID(bytes_le=b'\x78\x56\x34\x12\x34\x12\x78\x56' +b'\x12\x34\x56\x78\x12\x34\x56\x78') UUID(fields=(0x12345678, 0x1234, 0x5678, 0x12, 0x34, 0x567812345678)) UUID(int=0x12345678123456781234567812345678) #SPACESNAME常量 (可作为uuid3/5 的 namespace 值) uuid.getnode() #通用管理的MAC地址优于本地管理的MAC地址 uuid.NAMESPACE_OID UUID('6ba7b812-9dad-11d1-80b4-00c04fd430c8') >>> uuid.NAMESPACE_DNS UUID('6ba7b810-9dad-11d1-80b4-00c04fd430c8') >>> uuid.NAMESPACE_URL UUID('6ba7b811-9dad-11d1-80b4-00c04fd430c8') >>> uuid.NAMESPACE_X500 UUID('6ba7b814-9dad-11d1-80b4-00c04fd430c8')
基础示例:
#!/usr/bin/env python # python有一个模块叫做uuid,导入它就可以使用它的四个方法了 import uuid print uuid.uuid1() #bf1dfacf-67d8-11e8-9a23-408d5c985711 print uuid.uuid3(uuid.NAMESPACE_DNS, 'yuanlin') #UUID using an MD5 hash of a namespace UUID and a name #ddb366f5-d4bc-3a20-ac68-e13c0560058f print uuid.uuid4() #144d622b-e83a-40ea-8ca1-66af8a86261c print uuid.uuid5(uuid.NAMESPACE_DNS, 'yuanlin') #UUID using a SHA-1 hash of a namespace UUID and a name #4a47c18d-037a-5df6-9e12-20b643c334d3
方式2:Linux中shell采用uuidgen进行生成
uuidgen fcfe9f3e-1edc-43fe-8b29-c2a92958ce41
方式3:采用JS生成uuid
function uuid() { return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[0148]/g, c =>(c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16) ) } /** 调用生成 **/ print(uuid()) b3255b0d-ae61-16c6-833f-96c827fd17d8 725ad3d6-6eb1-12a2-855f-5a8a8bb6859d
方式4:采用java的util包里面的UUID类实现
import java.util.UUID; public class createUUID { public static void main(String[] args) { System.out.println(createID()); } public static String createID(){ UUID uuid = UUID.randomUUID(); String id=uuid.toString(); return id.replace("-", ""); } } //调用执行效果 56e41c4d8aa64e3cbf4d1d119004af61 f1d443fcb9564ae7b3fc1993de1680d5 91fe1a1ef54843c08c42ba8c68f98d4b 2f763662d0b24b0f8e18c6f0da4dd643 4bf13006b8324ed8bfe4c194d6cb057e 1947e4ef40cb49c28ecfd2d725815ef8