我们正在考虑更改所有 Linux fstab 配置以使用 UUID 而不是当前配置
部分磁盘为非 RAID,部分磁盘为 RAID10
我在谷歌搜索并发现抱怨使用 UUID 为 RAID1 :
" 不幸的是,如果您使用软件 RAID1,则不得在 /etc/fstab 中使用 UUID。为什么?因为 RAID 卷本身和镜像的第一个元素似乎具有相同的文件系统 UUID。如果镜像损坏或出于任何其他原因md 设备未在启动时启动,系统将改为挂载任何随机底层磁盘,从而破坏您的镜像。然后您将需要完全重新同步。糟糕的 juju。
所以我只想知道我们是否可以将 UUID 用于 RAID10 ?
以及在哪些情况下(RAID 配置)不使用 UUID?
第二,在几行中使用 UUID 有什么好处?
添加到@dr01 答案:关于 RAID 问题,您还可以在 RAID 设置中使用 UUID。
如果使用 mdadm,UUID 将存储在本地文件系统中,如果使用硬件 RAID,它将呈现为虚拟物理磁盘,它再次具有 UUID。
我认为这只是在 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 超级块进行测试。
回答您的第二个问题:UUID 允许您唯一标识设备。
根据系统发现它们的顺序,设备被分配为
/dev/sda
、等。/dev/sdb
虽然系统引导的驱动器始终是第一个驱动器,但对于其他驱动器,它们的名称分配取决于发现的顺序,并且可能在重新引导后发生变化。另外,假设您有驱动器
/dev/sdc
和/dev/sdd
,并且您从物理上移除了第一个驱动器;重新启动后,/dev/sdd
现在称为/dev/sdc
.这使得设备的标识不明确。UUID 避免了所有的歧义;由于 UUID 存储在超级块中(对于块设备),它与设备本身有关。