存储-ISCSI

存储-ISCSI

简介:
由于SAN技术是基于光环境实现的存储;ISCSI是将数据块映射成以太网数据包,从而实现IP协议上运行的指令集。
将SCSI数据块映射成以太网数据包。

此技术不常用。

在centos7环境部署iscsi:

实验1:1个导出端,1个导入端

角色 IP
storage 172.16.0.50
node1 172.16.0.51
node2 172.16.0.52
node3 172.16.0.53

准备工作要完成。

1. 配置存储端

[root@storage ~]# pvcreate /dev/sdb
[root@storage ~]# vgcreate vgs /dev/sdb
[root@storage ~]# lvcreate -L 5G -n iscsi1 vgs

[root@storage ~]# lvs
  LV     VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root   centos -wi-ao---- 20.00g                                                    
  swap   centos -wi-ao----  2.00g                                                    
  iscsi1 vgs    -wi-a-----  5.00g 	<--

[root@storage ~]# lftp 172.16.0.99
lftp 172.16.0.99:~> cd release/     
lftp 172.16.0.99:/release> get epel-release-7-6.noarch.rpm 

[root@storage ~]# rpm -ivh epel-release-7-6.noarch.rpm

[root@storage ~]# yum install -y scsi-target-utils

[root@storage ~]# cd /etc/tgt/
[root@storage /etc/tgt]# ls
conf.d  targets.conf  tgtd.conf
[root@storage /etc/tgt]# vim targets.conf 
	结尾添加
<target iqn.2019-12.com.up.storage:iscsi1>
##IQN号,是存储的唯一标识
	写法:iqn.年-月.主机名倒序:名字
    backing-store   /dev/vgs/iscsi1
##导出的存储设备
    write-cache off
##关闭写缓存
</target>

[root@storage ~]# systemctl start tgtd
[root@storage ~]# systemctl enable tgtd

[root@storage ~]# netstat -antp | grep tgtd
tcp        0      0 0.0.0.0:3260    0.0.0.0:*  LISTEN      1095/tgtd
tcp6       0      0 :::3260         :::*       LISTEN      1095/tgtd

查看导出的存储:

[root@storage ~]# tgtadm --lld iscsi --mode target --op show
Target 1: iqn.2019-12.com.up.storage:iscsi1
        LUN: 1
            Type: disk
            SCSI ID: IET     00010001
            SCSI SN: beaf11
            Size: 5369 MB, Block size: 512
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            SWP: No
            Thin-provisioning: No
            Backing store type: rdwr
            Backing store path: /dev/vgs/iscsi1
            Backing store flags: 

2. 导入端

客户端

[root@node1 ~]# yum install -y iscsi-initiator-utils

发现存储:(IP地址为ISCSI主机的)
[root@node1 ~]# iscsiadm -m discovery -t st -p 172.16.0.50	
172.16.0.50:3260,1 iqn.2019-12.com.up.storage:iscsi1

导入存储:
[root@node1 ~]# iscsiadm -m node -T iqn.2019-12.com.up.storage:iscsi1 -p 172.16.0.50 -l
Logging in to [iface: default, target: iqn.2019-12.com.up.storage:iscsi1, portal: 172.16.0.50,3260] (multiple)
Login to [iface: default, target: iqn.2019-12.com.up.storage:iscsi1, portal: 172.16.0.50,3260] successful.

使用存储:
[root@node1 ~]# ls /dev/sdb
/dev/sdb

可以直接创建pv
可以分区
可以直接格式化

把这个设备看做是本机的第二块硬盘。

两台设备创建的文件,文件号是一致的。不行!!!
[root@node1 /mnt/sdb1]# ls -i f1 
67 f1
[root@node2 /mnt/sdb1]# ls -i f2
67 f2

最终哪个文件会写入存储,未知。

单机环境的文件系统,不适用于iscsi。

解决:集群文件系统

集群文件系统

redhat:
GFS2 全局文件系统第二版
允许所有的节点并行访问,理论上支持8EB的文件系统,实际上支持100TB;节点的最大数量是16个。
如果存储空间不足,支持lvm(C-Cluster lvm)拉伸,

oracle:
OCFS2用户OVM云环境
vmware:
VMFS用于esxi云虚拟化环境


GFS2名词解释:
(1)节点 集群的节点
使用GFS2,需要构建集群环境
centos6用 conga(luci ricci)
centos7用 pacemaker
(2)文件系统数量
约束可以使用集群文件系统的节点数
(3)文件系统名称
集群名:文件系统名
在同一个局域网,集群名不可以重复
(4)日志
用来保存文件系统信息

常用的命令:
mount umount
fsck.gfs2:检查并修复文件系统,要求文件系统必须处于clean状态,比较耗时的。
一定要卸载
一定要在没有业务的时间段进行

mkfs.gfs2:创建文件系统
gfs2_jadd:增加节点数
gfs2_grow:拉伸文件系统

实验2:1个导出端 2个导入端

开始实验:
设置好hosts文件

# tail -4 /etc/hosts
172.16.0.50	storage.up.com	storage
172.16.0.51	node1.up.com	node1
172.16.0.52	node2.up.com	node2
172.16.0.53	node3.up.com	node3

1. 存储端

创建分区
[root@storage ~]# pvcreate /dev/sdb
[root@storage ~]# vgcreate vgs /dev/sdb
[root@storage ~]# lvcreate -L 5G -n iscsi1 vgs

安装需要的程序
[root@storage ~]# lftp 172.16.0.99
lftp 172.16.0.99:~> cd release/ 
lftp 172.16.0.99:/release> get epel-release-7-6.noarch.rpm

[root@storage ~]# rpm -ivh epel-release-7-6.noarch.rpm

[root@storage ~]# yum install -y scsi-target-utils

修改配置文件
[root@storage ~]# vim /etc/tgt/targets.conf
<target iqn.2019-12.com.up.storage:iscsi1>
    backing-store   /dev/vgs/iscsi1
    write-cache off
</target>

启动服务
[root@storage ~]# systemctl start tgtd
[root@storage ~]# systemctl enable tgtd

查看导出的存储:
[root@storage ~]# tgtadm --lld iscsi --mode target --op show
Target 1: iqn.2019-12.com.up.storage:iscsi1

2. 导入端 node1 node2

[root@node1 ~]# yum install -y iscsi-initiator-utils
[root@node2 ~]# yum install -y iscsi-initiator-utils

发现并导入存储:
[root@node1 ~]# iscsiadm -m discovery -t st -p 172.16.0.50
[root@node1 ~]# iscsiadm -m node -T iqn.2019-12.com.up.storage:iscsi1 -p 172.16.0.50 -l

[root@node2 ~]# iscsiadm -m discovery -t st -p 172.16.0.50
[root@node2 ~]# iscsiadm -m node -T iqn.2019-12.com.up.storage:iscsi1 -p 172.16.0.50 -l

[root@node1 ~]# ls /dev/sdb
/dev/sdb
[root@node2 ~]# ls /dev/sdb
/dev/sdb

部署集群环境:

centos7使用pacemaker

[root@node1 ~]# yum install -y pcs pacemaker corosync fence-agents-all
[root@node2 ~]# yum install -y pcs pacemaker corosync fence-agents-all

[root@node1 ~]# systemctl start pcsd
[root@node1 ~]# systemctl enable pcsd
[root@node2 ~]# systemctl start pcsd
[root@node2 ~]# systemctl enable pcsd

[root@node1 ~]# echo "ABC123qwe#" | passwd --stdin hacluster
[root@node2 ~]# echo "ABC123qwe#" | passwd --stdin hacluster

验证节点:

成功后将所有节点关联到一起

[root@node1 ~]# pcs cluster auth node1 node2	<-- node1,node2对应自己的主机名    
Username: hacluster
Password: ABC123qwe#
node1: Authorized
node2: Authorized

创建集群:

在其中任意一个节点中操作即可。
[root@node1 ~]# pcs cluster setup --start --name cluster0 node1 node2
	名字不要重复!!!


启动集群:
[root@node1 ~]# pcs cluster start --all

[root@node1 ~]# pcs cluster enable --all

查看集群的状态:
[root@node1 ~]# pcs cluster status
PCSD Status:
  node1: Online
  node2: Online

构建集群文件系统:

[root@node1 ~]# yum install -y gfs2-utils lvm2-sysvinit lvm2-cluster
[root@node2 ~]# yum install -y gfs2-utils lvm2-sysvinit lvm2-cluster

创建lvm:

[root@node1 ~]# pvcreate /dev/sdb
[root@node1 ~]# vgcreate cvg0 /dev/sdb
[root@node1 ~]# lvcreate -L 2G -n clv01 cvg0

[root@node2 ~]# pvs
  PV         VG     Fmt  Attr PSize  PFree 
  /dev/sda2  centos lvm2 a--  22.00g  4.00m
  /dev/sdb   cvg0   lvm2 a--  <5.00g <3.00g
[root@node2 ~]# vgs
  VG     #PV #LV #SN Attr   VSize  VFree 
  centos   1   2   0 wz--n- 22.00g  4.00m
  cvg0     1   1   0 wz--n- <5.00g <3.00g
[root@node2 ~]# lvs
  LV    VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root  centos -wi-ao---- 20.00g                                                    
  swap  centos -wi-ao----  2.00g                                                    
  clv01 cvg0   -wi-------  2.00g 

让lvm支持集群:

[root@node1 ~]# lvmconf --enable-cluster
[root@node2 ~]# lvmconf --enable-cluster

[root@node1 ~]# vim /etc/lvm/lvm.conf
 785     locking_type = 3	#<--

启动服务:
[root@node1 ~]# systemctl start dlm
[root@node1 ~]# systemctl enable dlm

[root@node2 ~]# systemctl start dlm
[root@node2 ~]# systemctl enable dlm
	dlm	分布式锁协议,在集群文件系统,锁定文件

[root@node1 ~]# /etc/init.d/clvmd start
[root@node1 ~]# chkconfig clvmd on
[root@node2 ~]# /etc/init.d/clvmd start
[root@node2 ~]# chkconfig clvmd on
	clvmd	集群模式的lvm

创建集群文件系统:

[root@node1 ~]# mkfs.gfs2 -p lock_dlm -j 2 -t cluster0:clv01 /dev/cvg0/clv01 
	-p	指定分布式锁协议
	-j	指定节点数
	-t	指定文件系统名
		集群名:文件系统名

挂载使用:

[root@node1 ~]# mkdir /mnt/clv01 
[root@node1 ~]# mount /dev/cvg0/clv01 /mnt/clv01/
[root@node2 ~]# mkdir /mnt/clv01
[root@node2 ~]# mount /dev/cvg0/clv01 /mnt/clv01/

[root@node1 ~]# cd /mnt/clv01/
[root@node1 /mnt/clv01]# ls
[root@node1 /mnt/clv01]# touch f1
[root@node1 /mnt/clv01]# ls
f1

[root@node2 ~]# cd /mnt/clv01/
[root@node2 /mnt/clv01]# ls
f1
[root@node2 /mnt/clv01]# touch f2
[root@node2 /mnt/clv01]# ls -i *
 8761 f1  72746 f2

维护阶段:

集中存储应该挂载在 /var/www/html 。
使用方式跟Nas方式是一样的

在kvm虚拟化环境,导入的第一块硬盘是sda。

开机自动挂载:
存储节点启动完成,一切正常。才可以启动计算节点。

/etc/rc.local		<--- 由于磁盘需要在服务都启动完成后才可以执行挂载命令。所以设置启动在rc.local添加命令
mount /dev/cvg0/clv01	挂载点	

卸载和删除:

[root@node1 ~]# umount /mnt/clv01/
[root@node2 ~]# umount /mnt/clv01/

lvremove /dev/cvg0/clv01 
vgremove cvg0
pvremove /dev/sdb
pvs
lvs
vgs

[root@node1 ~]# iscsiadm -m node -T iqn.2019-12.com.up.storage:iscsi1 -p 172.16.0.50 -u
[root@node1 ~]# iscsiadm -m node -T iqn.2019-12.com.up.storage:iscsi1 -p 172.16.0.50 -o delete
	或者
[root@node2 ~]# systemctl stop iscsi
[root@node2 ~]# systemctl stop iscsid

[root@node2 /var/lib/iscsi]# ls nodes/
iqn.2019-12.com.up.storage:iscsi1
[root@node2 /var/lib/iscsi]# ls send_targets/
172.16.0.50,3260

[root@node2 /var/lib/iscsi]# rm -fr nodes/*
[root@node2 /var/lib/iscsi]# rm -fr send_targets/*


实验3

编辑/etc/hostshosts配置文件

# tail -4 /etc/hosts
172.16.0.50	storage.up.com	storage
172.16.0.51	node1.up.com	node1
172.16.0.52	node2.up.com	node2
172.16.0.53	node3.up.com	node3

1. 存储端导出存储

[root@storage ~]# pvcreate /dev/sdb
[root@storage ~]# vgcreate vgs /dev/sdb
[root@storage ~]# lvcreate -L 5G -n iscsi1 vgs

[root@storage ~]# lftp 172.16.0.99
lftp 172.16.0.99:~> cd release/     
lftp 172.16.0.99:/release> get epel-release-7-6.noarch.rpm 

[root@storage ~]# rpm -ivh epel-release-7-6.noarch.rpm

[root@storage ~]# yum install -y scsi-target-utils

[root@storage ~]# vim /etc/tgt/targets.conf 
<target iqn.2019-12.com.up.storage:iscsi1>
    backing-store   /dev/vgs/iscsi1
    write-cache off
</target>

[root@storage ~]# systemctl start tgtd
[root@storage ~]# systemctl enable tgtd

[root@storage ~]# tgtadm --lld iscsi --mode target --op show
Target 1: iqn.2019-12.com.up.storage:iscsi1

2. 导入端 node1 node2

导入存储
[root@node1 ~]# yum install -y iscsi-initiator-utils
[root@node2 ~]# yum install -y iscsi-initiator-utils

[root@node1 ~]# iscsiadm -m discovery -t st -p 172.16.0.50
[root@node1 ~]# iscsiadm -m node -T iqn.2019-12.com.up.storage:iscsi1 -p 172.16.0.50 -l

3. 部署集群

部署集群
[root@node1 ~]# yum install -y pcs pacemaker corosync fence-agents-all
[root@node2 ~]# yum install -y pcs pacemaker corosync fence-agents-all

[root@node1 ~]# systemctl start pcsd
[root@node2 ~]# systemctl start pcsd
[root@node1 ~]# systemctl enable pcsd
[root@node2 ~]# systemctl enable pcsd

[root@node1 ~]# echo "ABC123qwe#" | passwd --stdin hacluster
[root@node2 ~]# echo "ABC123qwe#" | passwd --stdin hacluster

[root@node1 ~]# pcs cluster auth node1 node2
Username: hacluster
Password: 
node1: Authorized
node2: Authorized

[root@node1 ~]# pcs cluster setup --start --name cluster0 node1 node2
[root@node1 ~]# pcs cluster start --all
[root@node1 ~]# pcs cluster enable --all

[root@node1 ~]# pcs cluster status
PCSD Status:
  node1: Online
  node2: Online

4. 部署clvm


[root@node1 ~]# yum install -y gfs2-utils lvm2-sysvinit lvm2-cluster
[root@node2 ~]# yum install -y gfs2-utils lvm2-sysvinit lvm2-cluster

[root@node1 ~]# lvmconf --enable-cluster
[root@node2 ~]# lvmconf --enable-cluster

[root@node1 ~]# pvcreate /dev/sdb
[root@node1 ~]# vgcreate cvg0 /dev/sdb
[root@node1 ~]# lvcreate -L 1G -n clv01 cvg0

[root@node2 ~]# pvs 2> /dev/null | tail -2
  /dev/sda2  centos lvm2 a--  22.00g  4.00m
  /dev/sdb   cvg0   lvm2 a--  <5.00g <4.00g
[root@node2 ~]# vgs 2> /dev/null | tail -2
  centos   1   2   0 wz--n- 22.00g  4.00m
  cvg0     1   1   0 wz--n- <5.00g <4.00g
[root@node2 ~]# lvs 2> /dev/null | tail -2
  swap  centos -wi-ao----  2.00g                                                    
  clv01 cvg0   -wi-------  1.00g 

[root@node1 ~]# systemctl start dlm
[root@node1 ~]# systemctl enable dlm
[root@node2 ~]# systemctl start dlm
[root@node2 ~]# systemctl enable dlm

[root@node1 ~]# /etc/init.d/clvmd start
[root@node1 ~]# chkconfig clvmd on
[root@node2 ~]# /etc/init.d/clvmd start
[root@node2 ~]# chkconfig clvmd on

5. 创建集群文件系统

[root@node1 ~]# mkfs.gfs2 -p lock_dlm -j 2 -t cluster0:clv01 /dev/cvg0/clv01

[root@node1 ~]# yum install -y httpd
[root@node2 ~]# yum install -y httpd

[root@node1 ~]# mount /dev/cvg0/clv01 /var/www/html/
[root@node1 ~]# echo "mount /dev/cvg0/clv01 /var/www/html/" >> /etc/rc.local 
[root@node1 ~]# chmod +x /etc/rc.d/rc.local 
[root@node2 ~]# mount /dev/cvg0/clv01 /var/www/html/
[root@node2 ~]# echo "mount /dev/cvg0/clv01 /var/www/html/" >> /etc/rc.local 
[root@node2 ~]# chmod +x /etc/rc.d/rc.local 

在node1添加一个主页
[root@node1 ~]# echo "gfs2_apache_0" > /var/www/html/index.html 

启动apache服务
[root@node1 ~]# systemctl start httpd
[root@node1 ~]# echo "systemctl start httpd" >> /etc/rc.local
[root@node2 ~]# systemctl start httpd
[root@node2 ~]# echo "systemctl start httpd" >> /etc/rc.local

测试
[root@storage ~]# curl 172.16.0.51
gfs2_apache_0
[root@storage ~]# curl 172.16.0.52
gfs2_apache_0

加入第三节点

先将所有程序安装好

[root@node3 ~]# yum install -y iscsi-initiator-utils
[root@node3 ~]# yum install -y pcs pacemaker corosync fence-agents-all
[root@node3 ~]# yum install -y gfs2-utils lvm2-sysvinit lvm2-cluster
[root@node3 ~]# yum install -y httpd

发现存储

[root@node3 ~]# iscsiadm -m discovery -t st -p 172.16.0.50
关联节点
[root@node3 ~]# iscsiadm -m node -T iqn.2019-12.com.up.storage:iscsi1 -p 172.16.0.50 -l

启动集群服务

pcsd是集群服务
[root@node3 ~]# systemctl start pcsd
[root@node3 ~]# systemctl enable pcsd
[root@node3 ~]# echo "ABC123qwe#" | passwd --stdin hacluster

验证节点
[root@node1 ~]# pcs cluster auth node1 node2 node3
Username: hacluster
Password: 
node1: Authorized
node3: Authorized
node2: Authorized

将node3加入集群:

[root@node1 ~]# pcs cluster node add node3


心跳配置文件:
[root@node1 ~]# vim /etc/corosync/corosync.conf		<---配置文件是命令行生成的,勿动!!!

资源配置文件:
[root@node1 ~]# vim /var/lib/pacemaker/cib/cib.xml		<---配置文件是命令行生成的,勿动!!!

启动集群节点node3
[root@node1 ~]# pcs cluster start node3

查看状态
[root@node1 ~]# pcs cluster status
PCSD Status:
  node3: Online
  node1: Online
  node2: Online

查看存储状态
[root@node3 ~]# pvs
  PV         VG     Fmt  Attr PSize  PFree 
  /dev/sda2  centos lvm2 a--  22.00g  4.00m
  /dev/sdb   cvg0   lvm2 a--  <5.00g <4.00g	<--
[root@node3 ~]# vgs
  VG     #PV #LV #SN Attr   VSize  VFree 
  centos   1   2   0 wz--n- 22.00g  4.00m
  cvg0     1   1   0 wz--n- <5.00g <4.00g	<--
[root@node3 ~]# lvs
  LV    VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root  centos -wi-ao---- 20.00g                                                    
  swap  centos -wi-ao----  2.00g                                                    
  clv01 cvg0   -wi-a-----  1.00g 	<--

启动服务

[root@node3 ~]# systemctl start dlm
[root@node3 ~]# systemctl enable dlm

[root@node3 ~]# lvmconf --enable-cluster

[root@node3 ~]# /etc/init.d/clvmd start
[root@node3 ~]# chkconfig clvmd on

挂载到apache路径

[root@node3 ~]# mount /dev/cvg0/clv01 /var/www/html/
mount: mount /dev/mapper/cvg0-clv01 on /var/www/html failed: Too many users   	<---节点是有数量限制的
增加一个节点数:
[root@node1 ~]# gfs2_jadd -j 1 /var/www/html
Filesystem: /var/www/html
Old journals: 2
New journals: 3

[root@node3 ~]# mount /dev/cvg0/clv01 /var/www/html/

[root@node3 ~]# systemctl start httpd

[root@storage ~]# curl 172.16.0.53
gfs2_apache_0

拉伸lv

(1)VG空间充足

[root@node3 ~]# lvextend -L 4G /dev/cvg0/clv01
	||
[root@node3 ~]# lvcreate -L + 3G /dev/cvg0/clv01	<---不要用!!!

[root@node3 ~]# lvs 2> /dev/null | tail -1
  clv01 cvg0   -wi-ao----  4.00g 

[root@node3 ~]# gfs2_grow /var/www/html

[root@node3 ~]# df -h | tail -1
/dev/mapper/cvg0-clv01   4.0G  164M  3.9G   4% /var/www/html

(2)VG空间不足

在存储节点上再导出一个存储:
[root@storage ~]# lvcreate -L 6G -n iscsi2 vgs

[root@storage ~]# vim /etc/tgt/targets.conf
<target iqn.2019-12.com.up.storage:iscsi1>
    backing-store   /dev/vgs/iscsi1
    write-cache off
</target>
<target iqn.2019-12.com.up.storage:iscsi2>	#<--增加
    backing-store   /dev/vgs/iscsi2
    write-cache off
</target>

[root@storage ~]# systemctl reload tgtd
	千万不能restart!!!

[root@storage ~]# tgtadm --lld iscsi --mode target --op show
Target 1: iqn.2019-12.com.up.storage:iscsi1
Target 2: iqn.2019-12.com.up.storage:iscsi2

3个节点发现并导入存储:
[root@node1 ~]#  iscsiadm -m discovery -t st -p 172.16.0.50
[root@node1 ~]# iscsiadm -m node -T iqn.2019-12.com.up.storage:iscsi2 -p 172.16.0.50 -l
[root@node2 ~]#  iscsiadm -m discovery -t st -p 172.16.0.50
[root@node2 ~]# iscsiadm -m node -T iqn.2019-12.com.up.storage:iscsi2 -p 172.16.0.50 -l
[root@node3 ~]#  iscsiadm -m discovery -t st -p 172.16.0.50
[root@node3 ~]# iscsiadm -m node -T iqn.2019-12.com.up.storage:iscsi2 -p 172.16.0.50 -l

[root@node1 ~]# ls /dev/sd?
/dev/sda  /dev/sdb  /dev/sdc
[root@node2 ~]# ls /dev/sd?
/dev/sda  /dev/sdb  /dev/sdc
[root@node3 ~]# ls /dev/sd?
/dev/sda  /dev/sdb  /dev/sdc

[root@node3 ~]# pvcreate /dev/sdc
[root@node3 ~]# vgextend cvg0 /dev/sdc

[root@node3 ~]# vgs
  cvg0     2   1   0 wz--n- 10.99g 6.99g

[root@node3 ~]# lvextend -L 7G /dev/cvg0/clv01
[root@node3 ~]# lvs
  clv01 cvg0   -wi-ao----  7.00g

[root@node3 ~]# gfs2_grow /var/www/html
发布了57 篇原创文章 · 获赞 3 · 访问量 989

猜你喜欢

转载自blog.csdn.net/weixin_42502744/article/details/103763209
今日推荐