SAN 存储于RedHat上的lvm热迁移【HW主机】

SAN 存储于RedHat上的lvm热迁移【HW主机】

  • 适用场景
  • 准备工作
  • 示例解释
  • multipathd 配置
    • 配置信息部分1
    • 配置信息部分2
  • 扫描SCSI-Bus / 刷新multipath配置
  • *扩容已有LUN(新添加LUN的情况跳过)
  • 迁移(Migration)
  • 迁移后工作
  • *集群场景(Cluster)
  • 保护SCSI路径(scsi-path)

适用场景

本文讨论场景基于以下条件:

  • 硬件服务器
  • 操作系统 Redhat/Centos 6/7
  • LVM存储管理架构
  • SAN 存储架构
  • 使用multipath 多径 daemon
  • 集群(或多个主机可以看到同一个一san设备)
  • 新增LUN设备替换旧LUN设备 / 旧LUN设备扩容

准备工作

  • 磁阵存储分配好LUN号,wwid,以及规划号alias。
  • SAN 交换机完成Mapping映射。

示例解释

首先规定一下后面用到的例子中设备名称

  • 旧pv: /dev/mapper/dev01_OLD
  • 新pv: /dev/mapper/dev01_NEW
  • vg: VG01
  • lv: LV01

multipathd 配置

配置信息部分1

首先在 /etc/multipath.conf 文件中配置设备信息。
如下例:

device {
	# 3par configuration
	vendor "3PARdata"
	product "VV"
	path_grouping_policy group_by_prio
	path_selector "round-robin 0"
	path_checker tur
	features "0"
	hardware_handler "1 alua"
	prio alua
	failback immediate
	rr_weight uniform
	no_path_retry 18
	rr_min_io_rq 1
	detect_prio yes
	fast_io_fail_tmo 10
	dev_loss_tmo 14
}

配置信息部分2

第二段设备配置信息包括wwid以及alias假名,如下例:

multipaths {
	multipath {
		# storage: sto-3par-xx-xx, LUN: 01
		wwid 36000342345466342343522
		alias san_lun_001
	}
}
  1. 将此配置段写在 /etc/multipath.conf 中,或者 /etc/multipath/conf.d/devices.conf 中 ;

扫描SCSI-Bus / 刷新multipath配置

 for i in $(ls /sys/class/scsi_host/); do echo "- - -"> /sys/class/scsi_host/$i/scan; done #发现新的scsi设备
 multipath -F; multipath #加载multipath配置

*扩容已有LUN(新添加LUN的情况跳过)

磁盘容量改变后,在multipath刷新SAN硬盘信息

multipath -ll /dev/mapper/dev01_OLD
for i in $(ls /sys/class/scsi_device/); do echo 1> /sys/class/scsi_device/$i/device/rescan; done #扫描所有LUN
multipathd resize map /dev/mapper/dev01_OLD
pvresize /dev/mapper/dev01_OLD

迁移(Migration)

通过pvmove命令,替换老的LUN,建议明确之定lv,可以实现热迁移:

pvmove -n LV01 /dev/mapper/dev01_OLD /dev/mapper/dev01_NEW

迁移前后可以通过以下命令进行查看lv与vg的关系

lvs -a -o +devices

pvmove命令非常可靠,如果中途暂停 pvmove -abort ,可以重新通过上面的pvmove命令继续未完成的任务。

迁移后工作

  1. 将旧pv从vg中脱离
vgreduce VG01 /dev/mapper/dev01_OLD
  1. 删除旧pv
pvremove /dev/mapper/dev01_OLD

*集群场景(Cluster)

集群场景下,在主节点(node)执行迁移操作(保证主节点的vg是active状态并已挂载),其它节点在主节点操作其前必须将vg置于inactive状态,防止迁移过程中其它节点对文件系统的读写操作。

主节点迁移前,在从节点上

vgchange -a n VG01

主节点迁移完成后

pvscan && vgscan & lvscan

重新激活并刷新其它节点 mapper设备

vgchange -a y VG01

保护SCSI路径(scsi-path)

由于下一步会执行dmsetup remove, 设备将从multipath中删除,所以应当通过暂存路径号来保护scsi路径(dmsetup删除后将无法查看scsi路径号)。

multipath -ll /dev/mapper/dev01_OLD | grep : | expand | tr -s ' ' | cut -d ' ' -f 3 | sed 's/:/ /g'>> /tmp/san_path

从dmsetup 中删除设备

dmsetup remove /dev/mapper/dev01_OLD #磁盘和分区都要删掉

如果在删除scsi路径前不删除dmsetup,主机会尝试访问这些已经不存在的设备,从而导致io-wait激增问题。

删除 scsi路径(scsi-path)

这里就需要用到上面暂存的 tmp/san_path文件,用来获取scsi路径号。

while read F; do echo "scsi remove-sigle-device $F"> /proc/scsi/scsi; done </tmp/san_path

完成此步骤以后可以在san交换机上作Unmapping.
注意:Unmapping前千万不可rescan。否则设备会被重新发现。

你可能感兴趣的:(SAN 存储于RedHat上的lvm热迁移【HW主机】)