LVM+iSCSI磁盘远程镜像配置步骤

一、实验说明
本文档为LVM+iSCSI配置远程磁盘的LVM镜像实验。
实验设计思路:
在VMware workstation上安装两台linux Ubuntu虚拟机,其中一台mirror server作为镜像服务器,另一台servesserver作为业务服务器。使用iSCSI将镜像服务器上的一块磁盘挂载到业务服务器上,然后配置为lvm镜像磁盘。
软件及配置:
在windows系统上安装虚拟机软件,并新建安装两台ubuntu虚拟机。使用NAT方式联网(参考:VMware下linux Ubuntu10.04使用NAT共享主机IP上网方式的设置),大致配置如下。
Vmware workstation 7.01
Mirror serverUbuntu 11.10  IP:192.168.128.3  添加两块 8GB的虚拟iSCSI硬盘
serves serverUbuntu 11.10  IP:192.168.128.4  添加四块 8GB的虚拟iSCSI硬盘
二、iSCSI的安装与配置
2.1mirror server 服务器端上的操作
2.1.1安装iscsi-target
#sudo apt-get install iscsitarget
注:也可下载iscsi-target软件包,自行编译并安装,方法如下
2)编译安装
很简单,解包、编译、安装即可
#tar zxvf iscsitarget-1.4.19.tar.gz
#cd iscsitarget-1.4.19/
#make
#make install
2.1.2. 创建要输出的设备
可输出的设备有如下几种:
1)、 lvmlvmlvm卷设备;
2)、 由文件组成的块设备(经过tgtimg工具处理过的);
3)、 单一的分区;
4)、 整个磁盘;
5)、 RAID组成的卷设备;
我们使用创建lvm卷来做演示。这里使用磁盘sdb创建pv,然后创建VG卷组LVM1,并在其上创建LV逻辑卷LVM1
#pvcreate /dev/sdb
#vgcreate LVM1 /dev/sdb
#lvcreate –n data1 –L 8G vg0
2.1.3.建立target device
1)新增iqn名为iqn.2012-05.cn.lanexpert:iscsi-data1的target device [iscsi qualified name] (简称iqn),格式通常如下:
格 式
意 义
范 例
Yyyy-mm
年-月
2012-05
Reversed domain name
把域名反过来写
Cn.lanexpert
identifier
识别字,通常描述这个储存空间的用途
Iscsi-data1
新增target device
#tgtadm –lld iscsi –op new –mode target –tid 1 -T iqn.2012-05.cn.lanexpert:iscsi-data1
执行后,可以利用以下命令查看target device:
# tgtadm –lld iscsi –op show –mode target
2)将target server 新建的LV逻辑卷data1(/dev/LVM1/data1)加入target device
#tgtadm –lld iscsi –op new –mode logicalunit –tid 1 –lun 1 -b /dev/LVM1/data1
将逻辑卷加入target device后,利用下列命令查看target device的信息:
# tgtadm –lld iscsi –op show –mode target
3)允许initiator主机services server(192.168.128.4)可以存取此target device
#tgtadm –lld iscsi –op bind –mode target –tid 1 -I 192.168.128.4
创建完毕后,再利用下面的命令查看target device:
 # tgtadm –lld iscsi –op show –mode target
5修改/etc/rc.local,设置开机自动加载target device配置
因为以上命令的配置结果,重新开机后便会消失,而且现版本的target server,Redhat尚未修改成System V服务,如果需要系统重新启动后上述配置仍然有效,只能将以上配置写入/etc/rc.local,让系统每次开机都自动执行一次
#vi/etc/rc.local
然后编辑输入如下信息:
# ISCSI target device setting -lzw 2012/05/25
#target 1(Space 8GB)
tgtadm –lld iscsi –op new –mode target –tid 1 -T iqn.2012-05.cn.lanexpert:iscsi-data1
tgtadm –lld iscsi –op new –mode logicalunit –tid 1 –lun 1 -b /dev/LVM1/data1
tgtadm –lld iscsi –op bind –mode target –tid 1 -I 192.168.128.4
2.2Services server客户机端上的操作
2.2.1 安装iscsi-initiator
#sudo apt-get install open-iscsi
启动iscsi-initiator
service open-iscsi start
2.2.2 查看镜像服务器(mirror server)的设备(/dev/LVM1/data1)输出
iscsiadm -m discovery -t sendtargets -p 192.168.128.3
此时即会探测到镜像服务器上的资源iqn.2012-05.cn.lanexpert:iscsi-data1
2.2.3 链接设备
得到了target名称后,使用下面命令建立连接
# iscsiadm -m node -T iqn.2012-05.cn.lanexpert:iscsi-data1 -p 192.168.128.3 –login
这时应该可以看到映射到的逻辑磁盘名号(此试验中应为/dev/sde),使用fdisk -l 可以看到有关逻辑磁盘的详细内容,可以象使用本地硬盘一样对其进行分区、创建文件系统、挂载、卸载等操作。
注:断开连接的方法
如果逻辑磁盘已经挂载,断开连接前应先卸载,然后使用下面命令
iscsiadm -m node -T target名称 -p targetIP地址:端口号 –logout
关机之前应该正确的卸载和断开逻辑磁盘,否则会在target服务器上留下僵死的进程,造成服务器资源的浪费。
三、LVM镜像创建与测试
3.1 创建LVM镜像
创建4个LV逻辑卷
#pvcreate /dev/sdb /dev/sdc /dev/sdd /dev/sde
创建卷组vg0
#vgcreate vg0 /dev/sdb /dev/sde /dev/sdc
#创建大小为1G名称为mirror的镜像。这个镜像包括三部分:nbd0和sdb5为副本和数据,#sdb6为日志。注意nbd0在服务器上,sdb5和sdb6在本地。
#lvcreate –L 8G -m1 -n mirror vg0 /dev/sde  /dev/sdb /dev/sdc
格式化LVM镜像并挂载
#mkfs.ext3 /dev/vg0/mirror
#mkdir /mirror
#mount /dev/vg0/mirror /mirror
#cd /mirror
#ls
这时就可以操作这个镜像了。
可以在mirror上建立一个文件目录:
#mkdir test
#ls
3.2 LVM镜像测试
破坏本地的/dev/sdb数据磁盘,然后用本地磁盘/dev/sdd来恢复。
1)破坏/dev/sdb
# dd if=/dev/urandom of=/dev/sdb
2)查看显示设备状态
#lvs -a -o +devices
此时系统显示无法找到磁盘/dev/sdb
3)移除破坏的磁盘(/dev/sdb
#vgreduce –removemissing –force vg0
4)将/dev/sdd加入到vg0
#vgextend vg0 /dev/sdd 
5)用/dev/sdd替代sdb恢复镜像
lvconvert -m1 /dev/vg0/mirror /dev/sdd /dev/sde /dev/sdc
这时sde和sdd为副本和数据,sdc为日志。
6)再次查看镜像目录,会发现test这个文件夹仍然存在
#ls /mirror
 
附表:
表一:服务器端主要命令及配置文件
位置
作用
/etc/rc.d/init.d/tgtd
Target服务控制脚本
/etc/sysconfig/tgtd
可以指定target的配置文件位置
/etc/tgt/targets.conf
Target的配置文件
/usr/sbin/tgt-admin
perl语言写的脚本,主要调用tgtadm命令,简化了操作参数,使管理员用起来更为方便
/usr/sbin/tgt-setup-lun
设置iscsi逻辑单元号的程序
/usr/sbin/tgtadm
管理target的工具,通过它,可以直接修改配置文件里面的内容
/usr/sbin/tgtd
Target的服务守护程序,当服务开启时,该服务的进程由它创建及提供
/usr/sbin/tgtimg
把磁带创建成target可用的镜像文件
表二:服务器端命令tgt-admin用法
Tgt-admin命令语法
-e, –execute
读取/etc/tgt/targets.conf文件中的配置信息,根据配置内容,通过tgtadmin命令来添加或删除target,若target已存在,则不处理该记录,可以参考—update
-d, –delete<value>
可以删除所有或指定的,不被发起者(initiator)链接的target;如果想删除被使用中的target,可以加上—force参数;
Example usage:
–delete ALL           –删除所有targets
–delete tid=4          –删除第四个target (target with tid 4)
–delete iqn.2008-08.com.example:some.target –删除指定target
–offline
使所有的或指定的target处于离线状态;处于离线状态的target,在发起者端(initiator)是无法使用的;
Example usage:
–offline ALL –使所有target离线
–offline tid=4 –使第四个target离线(target with tid 4)
–offline iqn.2008-08.com.example:some.target –让指定target离线
–ready
让所有的或指定的target处于就绪状态(即在线状态),与—offline功能相反;
Example usage:
–ready ALL    –让所有target处于在线状态
–ready tid=4 –让第四个target处于在线状态(target with tid 4)
–ready iqn.2008-08.com.example:some.target –让指定target处于在线状态
–update <value>
更新所有的或指定的不被链接的target配置;用法与—delete相似,若想更新被链接中的target,可以加上—force参数;
Example usage:
–update ALL   -ready all targets
–update tid=4 -ready target 4 (target with tid 4)
–update iqn.2008-08.com.example:some.target-update this target
-s, –show
查看所有target当前的状态;
-c, –conf <configuration file>
指定一个备用的配置文件;
–ignore-errors
跳过所有错误,继续执行;
-f, –force
一般跟在操作动作后面,表示强制执行某操作;
-p,
只显示该操作后的结果信息,并不真的执行该操作,有点像-v选项;
–pretend
一般在执行某个不太确定的操作前,先搭配该选项看看会输出什么样的结果;
Example usage:
Tgt-admin –e –p
–dump
显示targets.conf文件中的有效配置信息;
 
Example usage:
Tgt-admin –dump > tgt.conf –若想转存,请使用重定向符号;
-v, –verbose
显示详细信息,可以看到tgt-admintgtadm命令执行了什么样的操作;
-h, –help
查看帮助信息
表三:客户端主要命令及配置文件
位置
作用
/etc/iscsi/iscsid.conf
Iscsi发起者(initiator)配置文件;
/etc/rc.d/init.d/iscsi
登录到target的服务控制程序;
/etc/rc.d/init.d/iscsid
使客户机成为发起者(initiator)的服务控制程序;
/sbin/brcm_iscsiuio
Broadcomiscsi设备驱动监测、调试器;
/sbin/iscsi-iname
Iscsi发起者名称生成工具
/sbin/iscsiadm
发起者端的管理控制程序;
/sbin/iscsid
成为发起者的守护服务程序;
/sbin/iscsistart
Iscsi会话启动程序;
表四:客户端命令iscsiadm用法
iscsiadm -m discoverydb [ -hV ] [ -d debug_level ] [ -P printlevel ] [ -I iface -t type –pip:port [ -lD ] ] | [ [ -p ip:port -t type ] [ -o operation ] [ -n name ] [ -v value ] [ -lD] ]
iscsiadm -m discovery [ -hV ] [ -d debug_level ] [ -P printlevel ] [ -I iface -t type –pip:port [ -l ] ] | [ [ -p ip:port ] [ -l | -D ] ]#探测模式及可用的参数;
iscsiadm -m node [ -hV ] [ -d debug_level] [ -P printlevel ] [ -L all,manual,automatic ] [-U all,manual,automatic ] [ -S ] [ [ -T targetname -p ip:port -I iface ] [ -l | -u | -R | -s] ] [ [ -o operation ] [ -n name ] [ -v value ] [ -p ip:port ] ]#节点模式及可用参数;
iscsiadm-m session [ -hV ] [ -d debug_level ] [ -P printlevel ] [ -r sessionid | sysfsdir [-R ] [ -u | -s ] ]#会话模式及可用参数;
iscsiadm -m iface [ -hV ] [ -d debug_level ] [ -P printlevel ] [ -I ifacename ] [ [ -o operation ] [ -n name ] [ -v value ] ]#接口模式及可用参数;
iscsiadm -m fw [-l]#固件模式;
iscsiadm -m host [ -P printlevel ] [ -H hostno ]#主机模式;
iscsiadm -k priority#如同”killall iscsid”命令;
-d, –debug=debug_level
打印调试等级,等级可从08
-h, –help
显示帮助信息;
-I, –interface[iface]
接口绑定操作;
-k, –killiscsid
如同命令"killall iscsid"
-D, –discover
只能使用在discoverydb模式下,用来探测target信息;
-l, –login
登录,该选择只能用在discoverynode模式,若在discovery模式使用,它将登录所有探测到的target
-L, –loginall==[all|manual|automatic]
只能用在node模式;
-m, –mode
模式选择;
-n, –name=name
指定名称;
-o, –op=op
选项,可以是new新建、delete删除、update更新、show显示等;
-p, –portal=ip[:port]
Target发布地址;
-P, –print=printlevel
-T, –targetname=targetname
Target名称;
-r, –sid=sid | sysfsdir
-R, –rescan
重新扫描;
-s, –stats
显示会话状态;
-S, –show
查看信息,可用于多种模式;
-t, –type=type
指定类型,可以是st,slp,isns fw
-u, –logout
卸载或登出;
-U,
登出所有会话;
–logoutall==[all,manual,automatic]
 
探测类型
 
iSCSI定义了三种探测类型:SendTargets, SLP,iSNS
SendTargets
本地iscsi协议,当发起者端(initiator)向target端询问可用资源时,target端把本地可用的target资源信息发送给它;
SLP
通过服务定位协议SLPService Location Protocol)发现可用target资源;
iSNS
通过iSNS Internet 存储名称服务协议)发现可用target资源;
Fw
写在固件中的程序;
 
参考:
Iscsi简介及linux下实现.pdf
CentOS 5.2+Raid 0+LVM+ISCSI 配置详解.pdf
http://wenku.baidu.com/view/f9a3d85c3b3567ec102d8aec.html
点赞 (1)
  1. fcgao说道:
    Firefox 54.0 Firefox 54.0 Windows 10 x64 Edition Windows 10 x64 Edition

    太感谢了!!! 产品上正需要这个文章介绍的过程! :biggrin: :biggrin:

  2. 这个是新知识,学习啦

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Captcha Code