目录
d.安装lsscsi来验证客户端出现的/dev/sdb是否是从服务器端挂载过来的。
一、Iscsi概述
iSCSI技术是一种新储存技术,该技术是将现有SCSI接口与以太网络(Ethernet)技术结合,使服务器可与使用IP网络的储存装置互相交换资料。
iSCSI:Internet 小型计算机系统接口 (iSCSI:Internet Small Computer System Interface) Internet 小型计算机系统接口(iSCSI)是一种基于 TCP/IP 的协议,用来建立和管理 IP 存储设备、主机和客 户机等之间的相互连接,并创建存储区域网络(SAN)。
SAN网络:Storage Area Network 存储区域网络,多采用高速光纤通道,对速率、冗余性要求高。使用iscsi存储协议,块级传输。
NAS网络:Network Attachment Storage,网络附件存储,采用普通以太网,对速率、冗余无特别要求,使用NFS、CIFS共享协议,文件级传输。
SAN和NAS的区别:
1. SAN一般特指存储网络的构建方式,NAS一般特指产品。
2. SAN有单独的存储网络,NAS使用现有网络
家庭网络存储设备:FREENAS,用的是FREEBSD系统
二、存储设备分类
-
初级存储设备:单存储设备(分区、格式化、挂载、逻辑卷管理、磁盘阵列、磁盘配额)
-
中级存储设备:网络文件系统(samba/cifs nfs)
-
高级存储设备:块存储、MFS
网络文件系统 和 块存储的区别:
网络文件系统:将现有已创建好的存储空间(已分区格式化挂载的)进行共享,使用专门的网络文件系统协 议进行共享。客户端不支持自定义!
块存储:将本地的底层存储空间(磁盘分区、逻辑卷、磁盘阵列,但都不格式化)直接共享,允许客户端自 我进行分区格式化挂载使用!!!
三、管理命令
1.管理RAID--mdadm
mdadm
命令是Linux系统下用于管理软件RAID(Redundant Array of Independent Disks,独立磁盘冗余阵列)的工具。它提供了丰富的参数来支持RAID阵列的创建、管理、监控和维护
命令格式:
mdadm [mode] [options] <device> [<device>...]
#[mode]指定了mdadm要执行的操作类型(如创建、管理、监控等)
#[options]是可选的参数
#<device>是RAID设备或成员设备的名称
参数:
-C, --create:创建一个新的RAID阵列
-D, --detail:显示RAID设备的详细信息
-A, --assemble:加入一个以前定义的RAID阵列
-l, --level:指定RAID的级别(如0, 1, 4, 5, 6等)
-n, --raid-devices:指定RAID中活动设备的数目
-x, --spare-devices:指定初始RAID设备的备用成员的数量
-f, --fail:把RAID成员列为有问题,以便移除该成员
-r, --remove:把RAID成员移出RAID设备
-a, --add:向RAID设备中添加一个成员
-S, --stop:停用RAID设备,释放所有资源
#安装mdadm命令
yum -y install mdadm
a.创建RAID
#创建一个新的RAID 5阵列/dev/md0,使用/dev/sdb、/dev/sdc、/dev/sdd作为数据盘,/dev/sde作为热备盘。
mdadm -C /dev/md0 -l5 -n3 -x1 /dev/sdb /dev/sdc /dev/sdd /dev/sde
b.查看RAID
#显示/dev/md0这个RAID设备的详细信息,包括RAID级别、设备大小、活动设备数等
mdadm -D /dev/md0
c.加入已有RAID阵列
#将/dev/sdb、/dev/sdc、/dev/sdd重新组装成之前定义的RAID阵列/dev/md0
mdadm -A /dev/md0 /dev/sdb /dev/sdc /dev/sdd
d.列出问题设备
#将/dev/sdb标记为/dev/md0 RAID阵列中的问题设备
mdadm /dev/md0 -f /dev/sdb
e.移除磁盘
#将/dev/sdb从/dev/md0 RAID阵列中移除
mdadm /dev/md0 -r /dev/sdb
f.加入磁盘
#将/dev/sdb添加到/dev/md0 RAID阵列中
mdadm /dev/md0 -a /dev/sdb
g.停止RAID
#停止/dev/md0这个RAID阵列,并释放相关资源
mdadm -S /dev/md0
2.管理iSCSI target--tgtadm
tgtadm是一个用于配置和管理iSCSI target的工具,它允许用户创建、删除、更新iSCSI target以及与之相关的逻辑单元(LUN)等。
命令格式:
tgtadm --lld [driver] --op [operation] --mode [mode] [OPTION]
参数:
#--lld [driver]:指定底层驱动,对于iSCSI target来说,通常是iscsi
#--op [operation]:指定要执行的操作,如new(创建)、show(显示)、delete(删除)等
#--mode [mode]:指定操作的模式,如target(目标)、logicalunit(逻辑单元)、account(账户)等
#[OPTION]:根据操作的不同,可能需要提供额外的选项,如目标名称、LUN编号、后端存储路径等
#安装scsi-target-utils
yum -y install scsi-target-utils
#启动服务
systemctl start tgtd && systemctl enable tgtd
a.创建iscsi target
#创建一个新的iSCSI target,其ID为1,名称为iqn.2023-07.example.com:target1
tgtadm --lld iscsi --op new --mode target --tid 1 --targetname iqn.2023-07.example.com:target1
b.显示所有iSCSI target
#列出所有已配置的iSCSI target的信息
tgtadm --lld iscsi --op show --mode target
c.向iSCSI target添加LUN
#向ID为1的iSCSI target添加了一个新的LUN,编号为1,其后端存储对应的块设备路径为/dev/sdb
tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 --backing-store /dev/sdb
d.配置访问控制
#配置ID为1的iSCSI target的访问控制列表,允许来自192.168.1.0/24网段的iSCSI initiator访问该target
tgtadm --lld iscsi --op bind --mode target --tid 1 --initiator-address 192.168.1.0/24
e.删除iSCSI target
#删除ID为1的iSCSI target及其所有相关的配置
tgtadm --lld iscsi --op delete --mode target --tid 1
3.管理iSCSI存储设备--iscsiadm
iscsiadm命令是一个用于管理iSCSI(Internet Small Computer System Interface)存储设备的命令行工具,它提供了丰富的参数和选项来执行各种操作,如发现iSCSI目标、登录和登出iSCSI设备、显示和管理iSCSI会话等。
命令格式:
iscsiadm [选项]
参数:
#-m 或 --mode,指定iscsiadm命令的操作模式。常见的模式包括:
#discovery:用于发现iSCSI目标。
#node:用于管理iSCSI节点(即iSCSI目标)。
#session:用于显示和管理iSCSI会话。
#-t 或 --type,(在某些discovery模式下使用)指定发现操作的类型,如sendtargets
#-p,指定iSCSI目标的IP地址和端口(可选)。格式通常为IP地址:端口,其中端口默认为3260(iSCSI的标准端口)。
#-T 或 --targetname,指定要登录或管理的iSCSI目标的名称(IQN)。
#-l 或 --login,用于登录到指定的iSCSI目标。
#-u 或 --logout,用于从指定的iSCSI目标登出。
#--op,指定对节点或会话执行的操作,如show(显示信息)、delete(删除信息)等。
#--portal,(在某些情况下使用)指定iSCSI门户(portal)的地址。
#安装iscsiadm命令
yum -y install iscsi-initiator-utils
a.发现iSCSI目标
#向IP地址为192.168.1.100的iSCSI目标发送发现请求,以列出该目标上可用的iSCSI目标名称(IQN)。
iscsiadm -m discovery -t sendtargets -p 192.168.1.100
b.登录iSCSI设备
#登录到IQN为iqn.2023-07.example.com:target1,位于IP地址为192.168.1.100的iSCSI目标
iscsiadm -m node -T iqn.2023-07.example.com:target1 -p 192.168.1.100 --login
c.显示已登录的iSCSI会话
#列出当前系统上所有已登录的iSCSI会话的信息
iscsiadm -m session
d.从iSCSI设备登出
#从IQN为iqn.2023-07.example.com:target1,位于IP地址为192.168.1.100的iSCSI目标登出
iscsiadm -m node -T iqn.2023-07.example.com:target1 -p 192.168.1.100 --logout
e.永久删除iSCSI节点信息
#永久删除与指定IQN和IP地址相关联的iSCSI节点信息
iscsiadm -m node -T iqn.2023-07.example.com:target1 -p 192.168.1.100 -o delete
四、构建网络存储
1.需求
a.概述
客户端所使用的的块存储共享支持动态扩容,并且具有数据冗余和加速功能:
1.在服务器端使用raid进行底层存储块的构建,可以选择用10或5,实现加速和冗余
2.再在服务器端将raid磁盘进行逻辑卷创建,物理卷、卷组、逻辑卷,使其支持动态扩容
客户端:
3.连接到服务器端后,将服务器的共享连接到本地
4.再次进行逻辑卷划分,支持客户端动态扩容
b.协议
iscsi协议:
块存储实验中服务器和客户端之间进行存储空间共享的协议
tgtd服务:属于target软件
安装此服务后,就可以借助iscsi协议进行共享
共享标签名:
先创建一个共享标签,将本机 ip 和 port 绑定在这个标签上,还有要进行共享的存储空间也绑定到此标签上。
c.部署步骤
1. 先将要共享的存储空间准备好
底层raid + 上层 LVM
LVM仅需要创建逻辑卷即可,不需要格式化
2. 创建共享标签,绑定要共享的存储空间,设置访问控制
直接修改配置文件完成,重启服务即可生效
tgtadm 也可以完成上述工作,但是临时设置,重启失效
3. 客户端安装客户端工具
先探查服务是否对外进行了共享,共享时的IP、PORT、共享标签
然后使用iscsiadm 连接 共享标签
连接成功后会将服务器的共享存储空间映射在客户端一份,以一块磁盘的形式存在
最后管理员可以根据自己的需求对该磁盘进行使用管理(建议使用lvm逻辑卷管理)
d.客户端连接并分区挂载后如何扩容
1. 客户端先卸载、再断开与服务器的iscsi连接
2. 服务器端进行逻辑卷扩容,并进行tgtd服务重启
3. 客户端重启,会完成自动连接
4. 客户端对物理卷进行扩容:pvresize --setphysicalvolumesize 65G /dev/sdb
5. 客户端对逻辑卷和文件系统进行扩容和更新:lvresize -r -L +10G /dev/www_vg/www_lv
e.普通分区后lvm分区管理的报错问题
关于:客户端连接的第一个分区sdb先普通分区后lvm分区管理的报错问题
问题分析:由于客户端连接后先使用gdisk进行了普通分区,并完成了格式化挂载操作,然后又想修改为lvm管理方式,就进行了分区删除操作,但删除分区后仍旧无法进行物理卷转化,分析原因为已有mbr或gpt的分区表相关信息,导致无法使用pvcreate进行物理卷转化
pvcreate /dev/sdb
#报错信息
Device /dev/sdb excluded by a filter.
解决方案:找到Linux中用来清理分区表信息的命令,对磁盘进行分区表信息清除即可。
命令:wipefs -a 磁盘
#-a 清除指定磁盘上所有的分区信息
#执行磁盘分区信息清理
wipefs -a /dev/sdb
/dev/sdb: 8 bytes were erased at offset 0x00000200 (gpt): 45 46 49 20 50 41 52 54
/dev/sdb: 8 bytes were erased at offset 0x97ffffe00 (gpt): 45 46 49 20 50 41 52 54
/dev/sdb: 2 bytes were erased at offset 0x000001fe (PMBR): 55 aa
/dev/sdb: calling ioclt to re-read partition table: Success
#执行过磁盘分区信息清理后,再次进行物理卷的转化成功!
pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created.
1.环境准备
实验环境:
服务器端添加5块磁盘,在/dev/sdb上划分分区,把全部大小都给它
2.创建lvm
格式化
3.创建raid
mdadm -Cv /dev/md0 -a yes -n 3 -l 5 -x 1 /dev/sdc /dev/sdd /dev/sde /dev/sdf
#-C:创建一个新的 RAID 阵列
#-v:在创建过程中显示详细输出
#/dev/md0:是创建的 RAID 设备的名称
#-a yes:自动创建所需的设备文件(如果尚未存在)
#-n 3:指定用于数据存储的磁盘数量为 3
#-l 5:设置 RAID 级别为 5
#-x 1:指定热备盘的数量为 1
#查看创建的raid
mdadm -D /dev/md0
4.创建IQN标签(存储资源)
创建iscsi对象(target):软件包—scsi-target-utils,使用tgtadm工具创建target。
a.安装scsi-target-utils,并开启服务
yum -y install scsi-target-utils
b.创建标签
tgtadm -L iscsi -o new -m target -t 1 -T iqn.2017-3.com.xdl.www:raid
tgtadm -L iscsi -o show -m target
5.绑定存储资源
a.把标签赋给存储设备
#把标签赋给存储设备
tgtadm -L iscsi -o new -m lu -t 1 -l 1 -b /dev/vg0/lv0
#-l 指定LUN的ID号,如“-l 1”
#-b 指定块设备位置,如“-b /dev/md0”
tgtadm -L iscsi -o new -m lu -t 2 -l 1 -b /dev/vg0/lv0
#再次查看存储资源
tgtadm -L iscsi -o show -m target
b.设置权限
#资源池1和2中的数据只允许10访问
tgtadm -L iscsi -o bind -m target -t 1 -I 192.168.153.10
tgtadm -L iscsi -o bind -m target -t 2 -I 192.168.153.10
#-I 指定客户机地址,如“-I 192.168.153.10”
再次查看
保存到配置文件(使之永久生效)
修改配置文件vim /etc/tgt/targets.conf
启动并设置为开机自启
6.客户端使用
连接iscsi对象,软件包:iscsi-initiator-utils,使用iscsiadm工具查找,连接target
a.安装iscsi-initiator-utils
b.查看服务器允许挂载的存储节点
iscsiadm -m discovery -t sendtargets -p 192.168.153.12
c.挂到客户端,进行使用。
iscsiadm -m node -T iqn.2017-3.com.xdl.www:lvm --login
d.安装lsscsi来验证客户端出现的/dev/sdb是否是从服务器端挂载过来的。
e.卸载和挂载命令
f.分区、格式化、挂载
mkfs.ext4 /dev/sdb1
vim /etc/fstab
/dev/sdb1 /mnt ext4 defaults,_netdev 0 0
五、RHCS
1.概述
RHCS是Red Hat Cluster Suite的缩写,即红帽子集群套件。它是一个功能完备的集群应用解决方案,旨在提供高可用性、高可靠性、负载均衡和存储共享等特性,同时保持经济廉价。RHCS将集群系统中的三大集群架构(高可用性集群、负载均衡集群、存储集群)融合一体,为web应用、数据库应用等提供安全、稳定的运行环境
2.RHCS的主要特点
-
高可用性:RHCS通过其集群管理功能,确保在集群中的某个节点出现故障时,服务能够自动转移到其他健康节点上,从而保持服务的持续可用性。
-
负载均衡:RHCS支持负载均衡集群,通过分配网络流量到多个节点上,提高应用的响应速度和吞吐量,同时减轻单一节点的负载压力。
-
存储共享:RHCS通过GFS(Global File System)等集群文件系统提供存储共享功能,允许多个服务同时读写同一个共享文件系统,从而简化了数据同步和管理的复杂性。
-
经济廉价:RHCS作为一个集成化的集群工具集合,提供了全面的集群管理功能,同时保持了较低的成本,使得中小企业也能负担得起高性能的集群解决方案。
3.RHCS的组成
RHCS是一个集群工具的集合,主要包括以下几个部分:
-
集群管理工具:如CMAN(Cluster Manager),它是一个分布式集群管理工具,运行在集群的各个节点上,负责集群成员管理、消息和通知等任务。
-
集群文件系统:如GFS(Global File System),它允许多个服务同时读写同一个共享文件系统,通过锁管理机制来协调和管理多个服务节点对文件系统的访问。
-
存储管理技术:如iSCSI和GNBD(Global Network Block Device),它们提供了在IP网络上传输和共享存储块的技术支持。
-
高可用服务管理器:如rgmanager,它负责监督、启动、停止集群的应用、服务和资源,并在必要时进行服务转移。
-
集群配置和管理工具:如LUCI(一个基于web的集群配置工具)和conga(一个新的基于网络的集群配置工具),它们提供了图形化界面来简化集群的配置和管理过程。
4.RHCS的集群架构
RHCS集群从整体上分为三大部分:
-
负载均衡集群:通过分配网络流量到多个节点上,提高应用的响应速度和吞吐量。
-
高可用性集群:确保在集群中的某个节点出现故障时,服务能够自动转移到其他健康节点上,从而保持服务的持续可用性。
-
存储集群:通过GFS等集群文件系统提供存储共享功能,允许多个服务同时读写同一个共享文件系统。
5.RHCS的关键技术
-
DLM(Distributed Lock Manager):一个分布式锁管理器,为集群提供了一个公用的锁运行机制,用于同步访问文件系统元数据和更新数据到LVM卷和卷组。
-
FENCE设备:用于避免因出现不可预知的情况而造成的“脑裂”现象。当集群中的某个节点出现故障时,FENCE设备可以将该节点从网络中隔离或重启,以确保集群资源的完整性和一致性。
6.实验
a.环境准备
Centos 6 环境下做此实验
一台 target(添加2个硬盘)
三台 node
解析主机名称(搭建dns或写hosts文件)
配置免密码验证(3个节点和target之间)
搭建时间服务器(能够实现时间同步)
192.168.79.76 target.kernel.com target
192.168.79.77 node1.kernel.com node1
192.168.79.78 node2.kernel.com node2
192.168.79.79 node3.kernel.com node3
hosts文件的解析:
192.168.79.76 target.hfxx.com target
192.168.79.77 node1.hfxx.com node1
192.168.79.78 node2.hfxx.com node2
192.168.79.79 node3.hfxx.com node3
SSH免密登录:
ssh-keygen -t rsa -b 2048
ssh-copy-id 域名别名
时间服务器搭建还有同步:
ntp服务,默认已安装,但未配置,未启动
6-2 ntp服务器端
6-1/6-3/6-4 ntp客户端,指定6-2服务器端进行时间同步
b.解析主机名称(注意别名)
切换主机的名字
由于四台主机的hosts文件里的内容是一样的,所以通过第一台传给后三台就可以了。
之后,切换三台主机的名字,断开连接再登录即可实现
c.实现免密码验证
实现服务器端登三个节点免密码。。。
实现三个节点和服务器端免密码。
第一个节点:
第二个节点:
第三个节点:
d.时间服务器配置
ntp 软件包默认是安装的,直接来修改配置文件。
让第一台当做时间服务器,来配置。vim /etc/ntp.conf
客户端的配置
手动刷新进行同步。
开启服务
注:同样的操作在其他两台上进行操作,直接把配置文件传给其他两台、刷新同步,并开启服务
scp /etc/ntp.conf node3:/etc/
scp /etc/ntp.conf target:/etc/
#传完文件后,分别去三台机器上重启服务,并开启开机自启
e.Node节点的配置
跳板模式配置 vim /root/.bashrc #别名配置文件
然后找时间服务器进行时间同步(指向时间服务武器的IP)
安装服务器scsi-target-utils
#创建物理卷
pvcreate /dev/sdb
#创建卷组
vgcreate data_vg /dev/sdb
#创建逻辑卷
lvcreate -L +10G -n data_lv data_vg
配置文件/etc/tgt/targets.conf
服务器端把磁盘/dev/sdb共享出去,如果客户端要想使用,需要提供用户名和密码,并且网段要在这个区域内。
#查看共享资源
tgtadm -L iscsi -o show -m target
知识点:
fdisk -l命令查看的磁盘存储空间,与实际的磁盘存储空间不一致
原因:
fdisk -l命令和df -h 等命令,存储空间单位的计算单位大小不一致导致。
例如:
U盘生产厂商,按1G=1000MB计算,计算机实际识别1G=1024MB.
配置客户端
在三台客户端安装iscsi-initiator-utils,使用那个‘跳板’安装
修改客户端配置文件/etc/iscsi/initiatorname.iscsi,更改客户端的名称 (主配置文件里的标签信息)
修改配置文件/etc/iscsi/iscsid.conf,填写认证信息
接下来在节点1上的操作在2,3上都进行一遍
用跳板机看3个节点上存储服务器的共享存储,并挂载到节点机上
#启动iscsi服务,并且能看到服务器的共享信息
iscsiadm -m discovery -t sendtargets -p target
#连接服务器的共享
iscsiadm -m node -T iqn.2022-08.com.hfxx:lvm2 --login
#可以看到3个节点机上会多出一个磁盘。
a ssh node$b ‘hostname;lsblk|grep sdb’;done
f.cman与rgmanager集群安装与配置
在各节点上安装cman rgmanager
#安装完成后,产生ccs_tool命令,man ccs_tool可以看到ccs_tool命令的信息
在节点1上构建集群
ccs_tool create testcluster
ccs_tool addfence meatware fence_manual
ccs_tool lsfence
ccs_tool addnode -n 1 -f meatware node1.hfxx.com
同步配置文件到各节点
由于之前的修改都被保存在/etc/cluster.conf里,所以把这个文件传给2,3节点即可。
启动cman前,关闭NetworkManager ,并设置开机不自启。
启动cman(启动就不使用跳板了,一个一个启)
启动时会报错,执行命令,再启动。
echo "CMAN_QUORUM_TIMEOUT=0" >> /etc/sysconfig/cman
OK后,再启动节点2,3
clvm安装与配置 (集群版LVM控制工具)
Clvm软件包---lvm2-cluster
安装lvm2-cluster在3个节点上
a ssh node$b 'yum -y install lvm2-cluster';done
启用集群lvm
a ssh node$b 'lvmconf --enable-cluster';done
启用clvm服务
a ssh node$b 'service clvmd start';done
在任意一个节点上创建集群逻辑卷(使用共享存储服务器共享出的那个磁盘)
pvcreate /dev/sdb
vgcreate clustervg /dev/sdb
lvcreate -L +8G -n clusterlv clustervg
在2,3节点上也会看到创建的集群逻辑卷(这就是集群逻辑卷的效果)
gfs2安装与配置
#安装gfs2在各节点上(文件系统类型)
yum -y install gfs2-utils
#格式化为集群文件系统
mkfs.gfs2 -j 3 -p lock_dlm -t testcluster:sharestorage /dev/clustervg/clusterlv
挂载
在节点2,3上进行挂载(格式化就不需要了)
在节点1的/media目录下创建文件,其他2个节点也会看到