如何在Linux中确认两个或多个服务器之间的共享磁盘?

如何在Linux中确认两个或多个服务器之间的共享磁盘?

我想知道一种方法来检查一台服务器中的磁盘是否与第二台服务器中的磁盘(共享磁盘)相同。

这种方式正确吗? (比较主要:次要数字)。

服务器01:

[root@server01 ~]# ls -l /dev/dm-90
brw-rw----. 1 root disk 253, 90 Apr 10 03:41 /dev/dm-90
[root@server01 ~]#

服务器02:

[root@server02 ~]# ls -l /dev/dm-90
brw-rw---- 1 root disk 253, 90 Apr 10 04:09 /dev/dm-90
[root@server02 ~]#

答案1

恕我直言 - 不,主设备号可以,它给你设备的类型(基于驱动程序的数量,在内核中定义),但次设备号可以不同,具体取决于特定服务器上有多少这种类型的设备。所以它们可能有所不同。

您可以尝试比较每台服务器上前 1MB 的哈希值:

dd if=/dev/dm-90 bs=512 count=2048|sha1sum

但如果这些磁盘非常“动态”(大量写入操作),这可能会给出错误结果

如果这些磁盘上有文件系统(并且已安装),另一种可能的方法是创建(一次)一个文件:

dd if=/dev/urandom of=/mount/point/of/disk/1MBfile bs=512 count=2048

然后在两台服务器上比较文件的哈希值:

sha1sum /mount/point/of/disk/1MBfile

答案2

主要/次要编号是非持久性的,由操作系统在本地动态分配,因此它们是绝对不适合用于跨服务器识别磁盘。

更好的解决方案是验证磁盘本身的假定唯一特征,例如磁盘序列号、磁盘 WWID(如果可用),以及磁盘是否使用文件系统初始化、文件系统 UUID(或等效项)。

在现代 Linux 系统上:

lsblk -o +MODEL,SERIAL,WWN,UUID

应该显示足够的信息,以便对大多数磁盘类型具有相当强的信心。

请注意,仅验证文件系统 UUID 是不够的,因为磁盘/LUN 实际上可能不相同,而是原始磁盘的存储系统级快照或克隆。

如果共享磁盘是多路径的,则device-mapper-multipath工具显示的WWIDmultipath -ll也是识别存储系统LUN的好方法。

(据我了解,WWID 是 device-mapper-multipath 用于识别哪些磁盘设备实际上是同一 LUN 的冗余路径以及哪些是不同 LUN 的主要方式。)

相关内容