iscsi是存储共享,和NFS等网络文件系统不同的是,NFS以文件为最小单位,挂载目录使用,文件系统在server端。这个ISCSI是将硬盘分区直接共享出去,在客户端进行文件系统的创建。
在centos7环境部署iscsi:
实验1:1个导出端,1个导入端
storage 172.16.0.50
node1 172.16.0.51
准备工作要完成。
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 <-----
要有epel源
安装软件
[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
发现存储:
[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
可以分区
可以直接格式化
…
把这个设备看做是本机的第二块硬盘。
实验2:1个导出端 2个导入端
这样做完后,同一个存储挂载到两个节点上去,创建文件的innde码相同。
[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:拉伸文件系统
开始实验:
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 ~]# 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。
node1
[root@node1 ~]# yum install -y pcs pacemaker corosync fence-agents-all
[root@node1 ~]# systemctl start pcsd
[root@node1 ~]# systemctl enable pcsd
node2
[root@node2 ~]# yum install -y pcs pacemaker corosync fence-agents-all
[root@node2 ~]# systemctl start pcsd
[root@node2 ~]# systemctl enable pcsd
设置用户的密码:
node1和node2
[root@node1 ~]# echo "ABC123qwe#" | passwd --stdin hacluster
[root@node2 ~]# echo "ABC123qwe#" | passwd --stdin hacluster
验证节点:
[root@node1 ~]# pcs cluster auth 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 看到这个online就是ok了
构建集群文件系统:
[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
这时创建pv vg lv等,node1创建node2 也能同步看到。
[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 #<--
上边的命令就是修改配置文件中这一行内容。
启动服务:
[ro**加粗样式**ot@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
这时的innde码不同了。
维护阶段:
集中存储应该挂载在 /var/www/html 。
在kvm虚拟化环境,导入的第一块硬盘是sda。
开机自动挂载:
存储节点启动完成,一切正常。才可以启动计算节点。
所以要使用/etc/rc.local
实现开机挂载。而不能用fstab,因为这个要启动很多的服务才能挂载,fstab则是在开机时启动服务之前执行的。
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/*
删除这两个文件目录。
其他操作,增加节点扩容等等
# 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 ~]# 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@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
集群状态
部署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
创建集群文件系统
[root@node1 ~]# mkfs.gfs2 -p lock_dlm -j 2 -t cluster0:clv01 /dev/cvg0/clv01
安装apache留作测试用
[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
[root@node1 ~]# echo "gfs2_apache_0" > /var/www/html/index.html
[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
[root@node3 ~]# systemctl start pcsd
[root@node3 ~]# systemctl enable pcsd
[root@node3 ~]# echo "ABC123qwe#" | passwd --stdin hacluster
就能看到有3个节点
[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
[root@node3 ~]# pcs cluster start node3
启动3
[root@node1 ~]# pcs cluster status
PCSD Status:
node3: Online
node1: Online
node2: Online
查看状态有3个连接
[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
挂载报错,因为之前设置的连接数有2个,到上限了
[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 这个最好别用!!!如果中间+打错,就会变成将lv变为3G原来有100G也会变成3G
[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
lsblk查看信息
[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
okl