我们正在考虑更改所有 Linux fstab 配置以使用 UUID,而不是当前配置
部分磁盘为非 RAID,部分磁盘为 RAID10
我在 google 中搜索并发现有关使用 UUID 进行 RAID1 的抱怨:
“不幸的是,如果您使用软件 RAID1,则不得在 /etc/fstab 中使用 UUID。为什么?因为 RAID 卷本身和镜像的第一个元素将显示为具有相同的文件系统 UUID。如果镜像损坏或由于任何其他原因md 设备不会在启动时启动,系统将安装任何随机的底层磁盘,从而破坏您的镜像,然后您将需要完全重新同步。”
所以我只是想知道我们是否可以将 UUID 用于 RAID10?
在什么情况下(RAID配置)不使用UUID?
第二 - 在几行中使用 UUID 有什么好处?
答案1
添加@dr01回答:关于RAID问题,您还可以在RAID设置中使用UUID。
如果使用 mdadm,UUID 将存储在本地文件系统中,如果使用硬件 RAID,它将呈现为虚拟物理磁盘,该磁盘也将具有 UUID。
答案2
我思考仅当 RAID 设备上的数据也同样出现在底层设备(或至少其中一些设备)上的相同位置时,这才是问题。实际上,这意味着 RAID 超级块(元数据)位于分区末尾的 RAID 格式。
由于 UUID 是文件系统(*)的一部分,因此系统必须首先在设备上找到支持的文件系统。文件系统是通过读取设备上的某些设置位置(通常是在开头)并查找识别签名来识别的。如果相同的数据在原始磁盘(如/dev/sda
)和 raid 设备( )中的相同位置可见,/dev/md0
则可以在两个设备中找到相同的 UUID。或者更多,如果其他设备(即镜像的另一侧)上有数据副本。
(* GPT分区的UUID是另一回事)
Linux软件RAID系统了解的两种主要的超级块格式,原始(v.0.90)格式将超级块放在末尾,当前(v.1)针对超级块的不同位置具有三种子格式。由于超级块格式 1.1 和 1.2 将超级块放在开头,因此它们应该可以安全使用。 0.9 和 1.0 将超级块放在设备的末尾,因此它们是您可能遇到问题的地方。/proc/mdstat
应该显示每个设备的超级块格式。
RAID wiki 页面还包含有关将超级块放置在设备末尾的警告。
使用 RAID 0 或 RAID 10,很难通过底层磁盘读取文件系统,因为数据是条带化的。但 UUID 可能仍然可以检测到,因此在任何情况下最好使用 1.2 格式 RAID 超级块。
对于 ext2/3/4 文件系统,tune2fs -l $device
如果可以找到的话,也许能够向您显示文件系统 UUID(blkid
可能会找到 RAID UUID。)
请注意,我是根据我对文档的理解来写这篇文章的,最后我没有明确使用 RAID 超级块进行测试。
答案3
回答你的第二个问题:UUID 允许你唯一地标识一个设备。
设备被分配为/dev/sda
、/dev/sdb
等,具体取决于系统发现它们的顺序。虽然系统启动的驱动器始终是第一个,但对于其他驱动器,其名称分配取决于发现顺序,并且在重新启动后可能会发生变化。
另外,假设您有驱动器/dev/sdc
和/dev/sdd
,并且您物理上删除了第一个驱动器;重新启动后,原来的名称/dev/sdd
现在称为/dev/sdc
.
这使得设备的识别变得不明确。 UUID 避免了所有歧义;由于 UUID 存储在超级块(对于块设备)中,因此它属于设备本身。