映射iSCSI形式克隆卷至Linux时产生卷组冲突的处理办法

对于具备快照机制或者支持源卷克隆的iSCSI块存储卷,在进行非覆盖式恢复(即生成一个克隆卷)并映射给Linux时,若使用了LVM对卷进行管理,Linux会将其判断成原始卷,导致卷组冲突无法使用。要使该克隆卷可被重新读写,需要修正LVM中的卷组信息。

处理办法

1. 重新扫描iSCSI设备,以发现新映射的卷:

$ iscsiadm -m session --rescan
或
$ /usr/bin/rescan-scsi-bus.sh
或
$ echo "- - -" > /sys/class/scsi_host/hostX/scan

以上三种方式都可以重新扫描,推荐第一个及第二个扫描方式,对多路径支持较好。

注:rescan-scsi-bus.sh包含在sg3_utils工具包中,需要先安装该依赖包才可使用该命令。

scsi_host后的host设备号(hostX)可以通过如下命令查询:

$ cat /proc/scsi/scsi

输出中的Host: scsi1即为对应的host设备号。一般有几条映射路径,就有几个host。

2. 确认产生了卷组冲突:

$ pvs
$ vgs

观察到如下报错信息:

WARNING: Not using lvmetad because duplicate PVs were found.
WARNING: Use multipath or vgimportclone to resolve duplicate PVs?
WARNING: After duplicates are resolved, run "pvscan --cache" to enable lvmetad.
WARNING: Not using device /dev/mapper/mpathb1 for PV XXXX-XXXX-XXXX-XXXX.
WARNING: PV XXXX-XXXX-XXXX-XXXX prefers device /dev/mapper/mpatha1 because device is used by LV.

该报错表明快照卷和源卷使用了相同的卷组信息产生冲突,系统未使用克隆卷。

3. 将克隆卷移动至新的卷组中:

$ vgimportclone --basevgname VolGroup_clone /dev/mapper/mpathb1

4. 此时新卷组中的逻辑卷还处于未激活(inactive)状态,尝试激活该逻辑卷:

$ lvchange -a y /dev/VolGroup_clone/datalv

5. 重新扫描逻辑卷,确认卷已激活(active):

$ lvscan

6. 挂载卷至指定挂载点即可使用:

$ mount /dev/VolGroup_clone/datalv /mnt

注:相同的挂载点不会导致逻辑卷和源卷冲突。

至此,在不影响原卷读写的情况下,可以灵活地使用克隆卷,进行内容恢复等操作。

END