映射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 —