tilg 发表于 2013-9-12 09:17:10

iscsi实现存储的多路经访问

iSCSI实现存储的多路经访问

                  / eth0 ------- eth0 \应用节点               iscsi                  \ eth1 ------- eth1 /

应用节点:      eth0       192.168.29.11      eth1       192.168.89.11
iscsi网卡1   192.168.29.1网卡2   192.168.89.1
一、配置存储
本例子使用宿主机实现iscsi存储,导出一个target# vim/etc/tgt/targets.conf...<target iqn.2013-01.com.upl:mysqldata>   backing-store /dev/sda7</target>

#service tgtd start

二、配置应用节点
实验前,把该应用节点之前发现过、登录过的target删除掉,免得影响实验# iscsiadm -m node -o delete

1、给iscsi客户端建立两个不同的接口# iscsiadm -m iface -I iface0 -o new#iscsiadm -m iface -I iface1 -o new
给这两个接口分别绑定不同网络的物理网卡# iscsiadm -m iface -I iface0 -n iface.net_ifacename -v eth0 -oupdate#iscsiadm -m iface -I iface1 -n iface.net_ifacename -v eth1 -o update
作用:用于指导iscsi客户端分别使用不同的网卡去发现、登录targer(存储)
2、从不同的接口去发现存储# iscsiadm -m discovery -t st -p 192.168.29.1 -I iface0192.168.29.1:3260,1iqn.2013-01.com.upl:mysqldata
# iscsiadm -mdiscovery -t st -p 192.168.89.1 -I iface1192.168.89.1:3260,1iqn.2013-01.com.upl:mysqldata
3、登录#iscsiadm -m node -l
你会发现本机多了两个scsi硬盘sdasdb
执行删除登录过的target目的:下次启动iscsi服务的时候,不会自动登录这些target       # iscsiadm -m node -u       # iscsiadm -m node -o delete(删除所有发现过的target)4、配置多路经服务
原理:根据存储设备的vdp(产品关键数据)             sda -----\                  mpatha(默认生成的设备名字)             sdb -----/
#yum install device-mapper-multipath -y
# cp /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf /etc/multipath.conf
启动服务# service multipathd start
#ls /dev/mapper/mpatha*            我在此步失败 中不到原因/dev/mapper/mpatha(硬盘) /dev/mapper/mpathap1(分区)
#multipath -ll            提示DM multipath kernel driver not loaded 找不核驱动
mpatha (1IET   00010001) dm-2 IET,VIRTUAL-DISK (高可用模式)size=2.0Gfeatures='0' hwhandler='0' wp=rw|-+-policy='round-robin 0' prio=1 status=active| `- 2:0:0:1 sda8:0   active ready running(活动)`-+-policy='round-robin 0' prio=1 status=enabled `- 3:0:0:1 sdb 8:16active ready running(备用)
需要修改multipahtd.conf配置,实现负载均衡模式(两条链路同时使用)
# vim /etc/multipath.conf
defaults {       udev_dir                /dev       polling_interval      10       # selector                "round-robin 0"<---注释掉,语法错误的       path_grouping_policy    multibus       getuid_callout          "/lib/udev/scsi_id --whitelisted--device=/dev/%n"       # prio                  alua       path_checker            readsector0       rr_min_io               100       max_fds               8192       rr_weight               priorities       failback                immediate       no_path_retry         fail       user_friendly_names   yes}

multipaths {       multipath {               wwid                  "1IET   00010001"               alias                   mysqldata<---自定义多路经设备文件的名字               path_grouping_policy    multibus               # path_checker            readsector0# 注释掉,语法错误               path_selector         "round-robin 0"               failback                manual               rr_weight               priorities               no_path_retry         5       }
}
重新启动服务#service multipathd restart如果看不到多路经设备文件的信息,那么重新登录iscsi存储,就能触发硬件发现事件。# service iscsi restart
# multipath -llmysqldata(1IET   00010001) dm-2 IET,VIRTUAL-DISKsize=2.0Gfeatures='0' hwhandler='0' wp=rw`-+-policy='round-robin 0' prio=1 status=active (负载均衡模式) |- 4:0:0:1 sda 8:0   active ready running `- 5:0:0:1 sdb 8:16active ready running
# ll/dev/mapper/mysqldatamysqldata    mysqldatap1

实时挂载去验证多路经的特点:负载均衡的IO,链路故障# mount -o sync/dev/mapper/mysqldatap1 /mnt



例子2:在共享存储上实现集群文件系统
本实验要求使用rhel5的操作系统
             node1         node2            |-------|--------|共享存储
必须做好的准备:静态IP      FQDN主机名设定网关@@@@      hosts文件绑定集群节点的主机名(包括自己和其余节点)
node1.upl.com    192.168.89.11node2.upl.com    192.168.89.12

设定yum源name=core-0baseurl=ftp://10.1.1.21/el5/Serverenabled=1gpgcheck=0
name=core-1baseurl=ftp://10.1.1.21/el5/VTenabled=1gpgcheck=0
name=core-2baseurl=ftp://10.1.1.21/el5/ClusterStorageenabled=1gpgcheck=0
name=core-3baseurl=ftp://10.1.1.21/el5/Clusterenabled=1gpgcheck=0

# yum groupinstall"Clustring" "Cluster Storage"-y

安装源:ftp://10.1.1.21/el5

集群文件系统必须使用在集群环境中,所以必须先把集群环境搭建。

一、配置存储
导出一个target: 略
二、集群节点连接存储
说明:如果之前已经登录过target,先把旧的target删除掉      # iscsiadm-m node -o delete
强烈建议使用udev规则固定设备的路径      /etc/udev/rules.d/55-iscsi.rules      /etc/udev/scripts/iscsidev.sh《---755权限1、发现# service iscsistart# iscsiadm-m discovery -t st -p 192.168.89.12、登录# iscsiadm-m node -l
生产环境可以让机器开机自动启动iscsi服务,这样就能自动登录target# ls/dev/iscsi/mysqldata/part1

三、在其中一个节点上配置集群,然后同步配置文件到另外的节点
#system-config-cluster
建立集群,名字随意,但不能有特殊字符,不能太长: ShareStorage
添加集群节点添加节点的时候必须填写节点的主机名,而且主机名必须已经绑定在hosts文件
保存配置文件,并且同步到另外的节点# scp/etc/cluster/cluster.conf 192.168.89.12:/etc/cluster/

所有节点依次同时启动cman服务      cman作用: 读取配置文件,建立集群关系
# service cmanstartStarting cluster:Loading modules... doneMounting configfs... doneStarting ccsd... doneStarting cman... doneStarting daemons... doneStarting fencing... done                                                         [确定]如果启动该服务失败:失败原因:没有绑定主机名,没有设定网关解决:                  ctrl + c 停止启动                  # service cman stop如果停止也卡住了                  # cman_tool leaveforce强制离开集群如果强制离开集群都卡中,只能硬重启计算机
# clustat -i2Cluster Status forShareStorage @ Sun Sep8 07:09:18 2013Member Status:Quorate
Member Name                        ID   Status------ ----                        ---- ------node1.upl.com                        1 Onlinenode2.upl.com                        2 Online, Local


四、其中一个节点去格式化存储为gfs2(集群文件系统)
# mkfs.gfs2 -j 2-p lock_dlm -t ShareStorage:upl /dev/iscsi/mysqldata/part1Device:                  /dev/iscsi/mysqldata/part1Blocksize:               4096Device Size                2.01 GB (525992 blocks)FilesystemSize:         2.01 GB (525991 blocks)Journals:                  2ResourceGroups:         9LockingProtocol:          "lock_dlm"Lock Table:                "ShareStorage:upl"UUID:                      D7222C8F-B205-7EF1-FA9F-E426A0FC350D
      -j 2 最多同时允许两个节点挂载该文件系统
      -t 集群名字:随意

格式化完毕,所有节点都可以同时挂载使用。
==========================================================================
MFS分布式存储文件系统

查看文件信息# mfsgetgoal/mnt/mfs/*/mnt/mfs/fstab: 1/mnt/mfs/hosts: 1
# mfsfileinfo/mnt/mfs/*/mnt/mfs/fstab:      chunk 0: 0000000000000002_00000001 /(id:2 ver:1)             copy 1: 10.1.1.20:9422/mnt/mfs/hosts:      chunk 0: 0000000000000003_00000001 /(id:3 ver:1)             copy 1: 10.1.1.7:9422
设定文件副本数# mfssetgoal 2/mnt/mfs/hosts/mnt/mfs/hosts: 2
# mfsfileinfo/mnt/mfs/*/mnt/mfs/fstab:      chunk 0: 0000000000000002_00000001 /(id:2 ver:1)             copy 1: 10.1.1.20:9422/mnt/mfs/hosts:      chunk 0: 0000000000000003_00000001 /(id:3 ver:1)             copy 1: 10.1.1.7:9422             copy 2: 10.1.1.20:9422

查看文件被删除后的回收时间# mfsgettrashtime/mnt/mfs/*/mnt/mfs/fstab:86400<---文件被删除后会保留在回收站一天,然后才会被彻底删除/mnt/mfs/hosts:86400
# mfssettrashtime300 /mnt/mfs/hosts/mnt/mfs/hosts:300<--- 删除后,300秒后如果不会它进行恢复,文件就会被彻底删除

如何恢复被删除的文件1、元数据服务器要允许挂载和访问元数据# vim/usr/local/mfs/etc/mfsexports.cfg*                     .       rw,password=123
# mfsmaster stop# mfsmaster start
2、客户端挂载元数据,对文件进行恢复# mfsmount -m -H 10.1.1.5/mnt/metadata/ -pMFS Password:

# ls/mnt/metadata/trash/ <---所有被删除的文件都存放在此目录下00000002|hosts00000003|fstabundel
恢复某个文件# mv/mnt/metadata/trash/'00000003|fstab' /mnt/metadata/trash/undel/# ls /mnt/mfs/fstab恢复成功


对mfs分布式文件系统进行灾难恢复:
每次启动元数据服务器的进程的时候,都会读取/usr/local/mfs/var/mfs/metadata.mfs 元数据文件,把该文件加载到内存。并且把该文件重命名为metadata.mfs.back. 元数据服务器在工作的过程中,如果元数据发生变化,变化都是在内存上发生、生效的。但是这些变更同时也会记录到该目录下的变更日志中changelog.??.mfs。元数据日志服务器会不断去实时下载这些变更日志,然后会定时下载元数据备份文件metadata.mfs.back。如果元数据服务正常关闭,会把内存中元数据文件保存为metadata.mfs文件中,把之前的备份文件删除。
一、简单的故障      mfs元数据服务器意外的关机,或者意外的结束相关进程,导致再次启动服务的时候出错会导致没有能够即使地把最新的元数据从内存中保存到metadata.mfs文件中,所以再次启动的时候就会报错:找不到元数据文件恢复的原理:让旧的元数据备份文件应用变更日志恢复到最新的元数据文件
模拟故障# skill -9mfsmaster
启动报错# mfsmaster startworking directory:/usr/local/mfs/var/mfslockfile createdand lockedinitializingmfsmaster modules ...loading sessions... oksessions file hasbeen loadedexports file hasbeen loadedloading metadata...can't openmetadata file找不到元数据if this is newinstalation then rename metadata.mfs.empty as metadata.mfsinit: file systemmanager failed !!!error occuredduring initialization - exiting

恢复#mfsmetarestore-a
重启启动服务# mfsmaster start

二、严重的故障元数据服务器彻底崩溃,整机数据无法恢复,无法取出原来的元数据备份文件和日志文件。
恢复依据:只要有元数据日志服务器,而且日志服务器上有一个旧的元数据备份文件# ls/usr/local/mfs/var/mfs/changelog_ml.0.mfsmetadata.mfs.back(这个文件必须要有,默认是服务启动24小时候才会从元数据服务器上下载)   sessions_ml.mfschangelog_ml.1.mfsmetadata.mfs.empty
恢复原理:备份文件 +应用变更日志

从日志服务器把备份文件和日志文件同步到元数据服务器的数据目录# rsync -alvR/usr/local/mfs/var/mfs/ 10.1.1.5:/
在元数据服务器上执行恢复操作# cd/usr/local/mfs/var/mfs/# mfsmetarestore-m metadata.mfs.back -o metadata.mfs changelog_ml.*
# mfsmaster start

西大 发表于 2013-9-13 10:10:47

过来看看的

yuxing 发表于 2013-9-15 20:49:06

我妈常说,我们家要是没有电话就不会这么穷。

julley 发表于 2013-9-16 21:33:56

我妈常说,我们家要是没有电话就不会这么穷。

asfsd 发表于 2013-9-18 06:13:01

看尽天下A片,心中自然无码~

蓝晶灵 发表于 2013-9-19 07:02:20

.其实我是一个天才,可惜天妒英才!

della0887 发表于 2013-9-20 02:27:57

如果跟导师讲不清楚,那么就把他搞胡涂吧!
页: [1]
查看完整版本: iscsi实现存储的多路经访问