共计 7329 个字符,预计需要花费 19 分钟才能阅读完成。
提醒:本文最后更新于2015-11-25 00:03,文中所关联的信息可能已发生改变,请知悉!
一、实验说明
本文档为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 server:Ubuntu 11.10 IP:192.168.128.3 添加两块 8GB的虚拟iSCSI硬盘
serves server:Ubuntu 11.10 IP:192.168.128.4 添加四块 8GB的虚拟iSCSI硬盘
二、iSCSI的安装与配置
2.1.mirror 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.2.Services 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-admin让tgtadm命令执行了什么样的操作; |
-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 | Broadcom的iscsi设备驱动监测、调试器; |
/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 | 打印调试等级,等级可从0至8; |
-h, –help | 显示帮助信息; |
-I, –interface[iface] | 接口绑定操作; |
-k, –killiscsid | 如同命令"killall iscsid"; |
-D, –discover | 只能使用在discoverydb模式下,用来探测target信息; |
-l, –login | 登录,该选择只能用在discovery和node模式,若在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: 通过服务定位协议SLP(Service Location Protocol)发现可用target资源; iSNS: 通过iSNS (Internet 存储名称服务协议)发现可用target资源; Fw: 写在固件中的程序; |
参考:
Iscsi简介及linux下实现.pdf
相关文章:












正文完