资讯专栏INFORMATION COLUMN

Linux系统中UUID与UDEV实际意义

IT那活儿 / 1535人阅读
Linux系统中UUID与UDEV实际意义

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!


  
目的:
通过建立知识库管理,积累、保存信息和知识资产,为团队内部信息和知识的传播提供平台,实现团队内知识共享,也使得企业知识得到很好的精炼和沉淀。


知识点描述

UUID 是指Universally Unique Identifier,翻译为中文是通用唯一识别码,UUID 的目的是让分布式系统中的所有元素都能有唯一的识别信息
如此一来,每个人都可以创建不与其它人冲突的 UUID,就不需考虑数据库创建时的名称重复问题。UUID 是由一组32位数的16进制数字所构成,通常我们使用UUID来标识对象或持久化数据如磁盘。

udev 是Linux 的 设备管理器 。它主要的功能是管理/dev目录底下的设备节点。它同时也用来接替devfs及热插拔的功能,这意味着它要在添加/删除硬件时处理/dev目录以及所有用户空间的行为,包括加载固件及Linux 2.6.13内核。

详解与实例

1. 通过uuid识别磁盘
当我们挂载新的磁盘在分布式系统中如下例:
Test服务器有两个节点t1和t2节点,当我们在系统中挂载了三块磁盘磁盘路径为/dev/sda,/dev/sdb,/dev/sdc。且已经将磁盘路径为/dev/sda挂载给了数据库使用,当需要再挂载一块新的磁盘给数据库使用时,我们首先需要进行如下的审查。
查询两个库相同目路径磁盘的uuid是否一致。
例:
  • 在t1节点使用如下指令:

/usr/lib/scsi_id --whitelisted --replace-whitespace --device=/dev/sda
sda的uuid:360001440000000107021*********A
/usr/lib/scsi_id --whitelisted --replace-whitespace --device=/dev/sdb
sdb的uuid:360001440000000107021*********B

/usr/lib/scsi_id --whitelisted --replace-whitespace --device=/dev/sdc
sdc的uuid:360001440000000107021*********C
  • 在t2节点使用如下指令:

/usr/lib/scsi_id --whitelisted --replace-whitespace --device=/dev/sda
sda的uuid:360001440000000107021*********A
/usr/lib/scsi_id --whitelisted --replace-whitespace --device=/dev/sdb
sdb的uuid:360001440000000107021*********B
/usr/lib/scsi_id --whitelisted --replace-whitespace --device=/dev/sdc
sdc的uuid:360001440000000107021*********A

此时发现两个节点的相同磁盘路径下的uuid不一致,这时我们要确认同一块磁盘需要根据uuid进行确认,我们通过观察发现1节点的dev/sda与2节点中dev/sdb的uuid是一致的,所以实际上1节点的sda与二节点sdc为同一块磁盘。当通过目路径挂载磁盘时我们不能使用/dev/sdb进行挂载。这样会导致uuid为360001440000000107021*********A的磁盘文件丢失。

2. udev详解
udev --它能根据系统中硬件设备的状态动态的更新设备文件,包括设备文件的创建,删除,权限等。这些文件通常都定义在/dev 目录下,但也可以在配置文件中指定。udev 必须内核中的sysfstmpfs支持,sysfs 为udev 提供设备入口和uevent 通道,tmpfs 为udev 设备文件提供存放空间。udev是通过对内核产生的设备名增加别名的方式来达到上述目的的。
udev是用户模式程序,不会更改内核的行为,内核依然会我行我素地产生设备名如sda,sdb等。但是,udev可以根据设备的其他信息如总线等不同来区分不同的设备,并产生设备文件。udev只要为这个设备文件取一个固定的文件名就可以解决这个问题。在后续对设备的操作中,只要引用新的设备名就可以了。
例:
内核产生了sda设备名,而根据信息,这个设备对应于是我的内置硬盘,那我就可以制定udev规则,让udev除了产生/dev/sda设备文件 外,另外创建一个符号链接叫/dev/internalHD

我们使用udev将如下三块磁盘按指定的规则创建链接:

  • /dev/sda==>/dev/asmdatadg1
  • /dev/sdb==>/dev/asmdatadg2
  • /dev/sdc==>/dev/asmdatadg3
当我们打算使用磁盘时以防sd*设备名被内核修改,我们只需要调用/dev/asmdatadg*新的设备名即可。

注:

  • fstab:当系统启动的时候,系统会自动地从这个文件读取信息,并且会自动将此文件中指定的文件系统挂载到指定的目录。
  • sysfs:是 Linux 内核中设计较新的一种虚拟的基于内存的文件系统。
  • tmpfs:基于内存的文件系统,可以使用您的内存或swap分区来存储文件。

本文作者:李孝林(上海新炬王翦团队)

本文来源:“IT那活儿”公众号

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129283.html

相关文章

  • Linux驱动实践:你知道【字符设备驱动程序】的两种写法吗?

    摘要:我们就继续以此为基础,用保姆级的粒度一步一步操作,来讨论一下字符设备驱动程序的编写方法。如何使用新的函数来编写字符设备驱动程序,下一篇文章再详细讨论。 作 者:道哥,10+年嵌入式开发老兵,专注于:C/C++、嵌入式、Linux。 关注下方公众号,回复【书籍】,获取 Linux、嵌入式领域经典书籍;回复【PDF】,获取所有原创文章( PDF 格式)。 目录 ...

    Godtoy 评论0 收藏0
  • Linux Udev

    摘要:比如盘插入,电脑是如何即时的做出响应耳机插入又是如何做到自动关闭外部音量这些都跟有关。虽然很强大,功能很多,本来就针对硬盘设备的插拔做一些经验的分享。 在我入门udev的时候,看着各种各样的资料觉得这个东西很高深的时候,突然瞄到一篇文章里面说道: 要树立一个信念:udev很简单,当时不以为然,现在能够理解,其实稍作研究就能理解了,看起来很高端很遥远的Title,比如Linux Kern...

    macg0406 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<