Linux添加SCSI磁盘或者SAN存储LUN时,重启系统后磁盘标识符(sd*)可能会变动错乱的情况,因此,大部分场景,这个问题需要解决,这就涉及到Linux存储相关的WWID和UUID。
1.WWID
SCSI标准中,每个SCSI磁盘都会有一个WWID,与网卡的MAC地址很相似,其在全世界唯一的。磁盘的WWID永久不变,Linux上可以通过如下方法查看SCSI磁盘WWID及其相应的磁盘标识。
1)查看/dev/disk/by-id目录
# ll /dev/disk/by-id/
lrwxrwxrwx 1 root root  9 Jul 31 15:21 ata-VMware_Virtual_IDE_CDROM_Drive_10000000000000000001 -> ../../sr0
lrwxrwxrwx 1 root root 10 Jul 31 15:21 dm-name-centos-root -> ../../dm-0
lrwxrwxrwx 1 root root 10 Jul 31 15:21 dm-name-centos-swap -> ../../dm-1
lrwxrwxrwx 1 root root 10 Jul 31 15:21 dm-uuid-LVM-3OjHXTXbzkti6QVgqjuTyWxQBxme66kbc4WXnfIhp8VRRIt8Q4m7JFs6ynPgLocQ -> ../../dm-1
lrwxrwxrwx 1 root root 10 Jul 31 15:21 dm-uuid-LVM-3OjHXTXbzkti6QVgqjuTyWxQBxme66kbvrfVBHPI1mG6W378d3f3dz9ITQZMQcmT -> ../../dm-0
lrwxrwxrwx 1 root root 10 Jul 31 15:21 lvm-pv-uuid-3v5mtg-Um4p-sVnh-xQFp-7KKY-IPiU-m90qf2 -> ../../sda3
lrwxrwxrwx 1 root root 10 Jul 31 15:21 lvm-pv-uuid-CE13I2-LKFg-jxf0-ushp-LnIf-TXNS-mlAu5f -> ../../sda2
2)scsi_id命令
# scsi_id -g /dev/sda
36000c29e9260a38c44dbbbd4469a52f1

# scsi_id --whitelist /dev/sda 
36000c29e9260a38c44dbbbd4469a52f1

# scsi_id -g /dev/sd*
36000c29e9260a38c44dbbbd4469a52f1

--注:
1)Linux上device-mapper-multipath通过WWID对SCSI磁盘路径进行探测,可将同一设备的多条路径合并,并在/dev/mapper/下面创建新的设备路径,通过multipath –ll命令可查看磁盘别名、WWID、设备名和相应磁盘路径等的信息。
2)scsi_id命令结果中,只有磁盘、存储盘才会显示WWID,存储盘的多个路径显示相同的WWID;本地磁盘分区和存储盘分区都没有WWID;存储盘分区不会使其本身的WWID变化,存储盘分区且格式化不会使其本身的WWID变化。

2.UUID
UUID是创建文件系统时生成的,用于标记该文件系统,与WWID类似,UUID也是唯一的。因此,UUID用来标识SCSI磁盘,也能保证磁盘路径的不变。Linux中/dev/disk/by-uuid目录下,包含所有已创建文件系统的磁盘设备及其UUID间的对应关系。
# ll /dev/disk/by-uuid/
lrwxrwxrwx 1 root root 10 Aug  3 18:26 7054388f-d4c1-4070-8c09-1cd01d5c110d -> ../../sda1
lrwxrwxrwx 1 root root 10 Aug  3 18:26 d2dc2acf-621a-43b6-9a51-45165d9f4e97 -> ../../dm-1
lrwxrwxrwx 1 root root 10 Aug  3 18:26 d8cd03b7-58cf-4e11-98d7-938c80f7d4d1 -> ../../dm-0

为了实现Linux系统重启后系统上的目录和文件系统间的绑定关系不变,/etc/fstab文件中应使用uuid进行标识,因为/etc/fstab中记录的是文件系统信息,因此,其中只能使用UUID而不能使用WWID,例如:
# cat /etc/fstab
/dev/mapper/vg_rac1-lv_root /                       ext4    defaults        1 1
UUID=7054388f-d4c1-4070-8c09-1cd01d5c110d /boot                   ext4    defaults        1 2
/dev/mapper/vg_rac1-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

UUID进行文件系统挂载时,可通过blkid查看分区UUID,通过UUID挂载文件系统时,需指定-t文件系统类型。 mount文件系统时需要指定-t文件系统类型
# blkid
/dev/mapper/vg_rac1-lv_root: UUID="d8cd03b7-58cf-4e11-98d7-938c80f7d4d1" TYPE="ext4" 
/dev/sda1: UUID="7054388f-d4c1-4070-8c09-1cd01d5c110d" TYPE="ext4" 
/dev/sda2: UUID="dgzMYd-INKd-Qeux-9A5m-kpej-EhXJ-mhK8u6" TYPE="LVM2_member" 
/dev/mapper/vg_rac1-lv_swap: UUID="d2dc2acf-621a-43b6-9a51-45165d9f4e97" TYPE="swap" 
/dev/sdb1: UUID="7054388f-d4c1-4070-8c09-1cd01d5c130w" TYPE="ext4" 

# mount uuid="7054388f-d4c1-4070-8c09-1cd01d5c130w" /data_dir -t xfs

3.multipath
服务器端,同一个LUN或WWID或UUID通常对应多个路径,这为服务器访问同一设备提供了多个路径选择,即可提高磁盘设备访问的性能,同时也提供了磁盘设备的高可用性。一般地,一个存储LUN配置路径数的算法为
LUN绑定某台服务器的HBA数*存储机头数*光纤交换机数
通常情况下,存储的一个LUN会绑定服务器的两块HBA,而同一存储服务器里有两台机头,为了冗余也会配备两台交换机,这样,一个LUN的访问路径数为:
2*2*2=8
因此,多路径映射后,/dev目录下会有8个/dev/sd*磁盘设备对应同一WWID,对于Lunix自带的multipath,可以通过如下命令查看多路径:
# multipath -ll