CLUSTER 01: 存储技术与应用ISCSI技术应用、udev配置、NFS网络文件系统、Multipath多路径
一、存储技术与应用
1.1 存储概述
1.1.1 存储的目标
• 存储是根据不同的应用环境通过采取合理、安全、有效
的方式将数据保存到某些介质上并能保证有效的访问
• 一方面它是数据临时或长期驻留的物理媒介
• 另一方面,它是保证数据完整安全存放的方式或行为
• 存储就是把这两个方面结合起来,向客户提供一套数据存放解决方案
1.1.2 存储技术分类 [常见的存储技术有三种 DAS NAS SAN]
SCSI小型计算机系统接口
DAS:直连式存储。本地磁盘 【先分区,格式化,挂载使用】
NAS:网络附加存储。本质上就是共享文件夹 【支持TCP/IP协议,通常连在交换机一起
应用场景:CIFS:通用互联网文件系统(samba), NFS:网络文件系统】
SAN:存储区域网络。【
FC SAN:基于光纤的存储区域网络
SAS SAN:基于sas线的存储区域网络 【 基于光纤和SAS线的存储区域网络统称为FC SAN 使用的是scsi协议 】
IP-SAN:基于网线的存储区域网络 【 基于网线的存储区域网络称为IP-SAN 使用的是 iscsi协议 】
】
块级别:提供块设备(磁盘)
文件级别:提供共享文件夹
1.2 常见存储技术
1.2.1 SCSI技术
• Small Computer System Interface的简称
• 作为输入/输出接口
• 主要用于硬盘、光盘、磁带机等设备
1.2.2 DAS技术
• Direct-Attached Storage的简称
• 将存储设备通过SCSI接口或光纤通道直接连接到计算机上
• 不能实现数据与其他主机的共享
• 占用服务器操作系统资源,如CPU、IO等
• 数据量越大,性能越差
1.2.3 NAS技术 【tcp/ip协议】
• Network-Attached Storage的简称
• 一种专用数据存储服务器,以数据为中心,将存储设
备与服务器彻底分离,集中管理数据,从而释放带宽、
提高性能、降低总拥有成本、保护投资
• 用户通过TCP/IP协议访问数据
– 采用标准的NFS/HTTTP/CIFS等
1.2.4 SAN技术 【iscsi协议】
• Storage Area Network的简称
– 通过光纤交换机、光纤路由器、光纤集线器等设备将
磁盘阵列、磁带等存储设备与相关服务器连接起来,形成高速专网网络
• 组成部分
– 如路由器、光纤交换机
– 接口:如SCSI、FC
– 通信协议:如IP、SCSI
• Fibre Channel
– 一种适合于千兆数据传输的、成熟而安全解决方案
– 与传统的SCSI相比,FC提供更高的数据传输速率、更
远的传输距离、更多的设备连接支持以及更稳定的性
能、更简易的安装
1.2.5 iSCSI技术
• 优势
– 基于IP协议技术的标准
– 允许网络在TCP/IP协议上传输SCSI命令
– 相对FC SAN,iSCSI实现的IP SAN投资更低
– 解决了传输效率、存储容量、兼容性、开放性、安全性等方面的问题
– 没有距离限制
• 客户端
– iSCSI Initiator:软件实现,成本低、性能较低
– iSCSI HBA:硬件实现,性能好,成本较高
• 存储设备端
– iSCSI Target
• 以太网交换机
二、iSCSI技术应用
2.1 基础知识
2.1.1 iSCSI操作流程
• Target端
– 选择target名称
– 安装iSCSI target
– 准备用于target的存储
– 配置target
– 启用服务• Initiator端
– 安装initiator
– 配置initiator并启动服务
2.1.2 iSCSI命名规范
• 建议采用IQN(iSCSI限定名称)
• 全称必须全局唯一
• IQN格式:
iqn.<date_code>.<reversed_domain>.<string>[:
<substring>]
• 命名示例:
• iqn.2013-01.com.tarena.tech:sata.rack2.disk1
2.2 部署iSCSI服务
2.2.1 target端安装软件包 (提供存储端)
• 查询yum仓库
[[email protected] ~]# yum list | grep target
• 安装
[[email protected] ~]# yum -y install targetcli
• 查看iSCSI target信息
[[email protected] ~]# yum info targetcli
2.2.3 配置iSCSI Target
添加一块硬盘,作为后台存储
192.168.4.71 – san 存储端
1)定义后台存储:
/> cd backstores/block
/backstores/block> create ipsan /dev/vdb
2)创建iqn
cd /iscsi
/iscsi> create iqn.2018-08.cn.tedu:sharedisk
3)授权用户访问
/> cd /iscsi/iqn.2018-08.cn.tedu:sharedisk/tpg1/acls
/iscsi/iqn.20…isk/tpg1/acls> create iqn.2018-08.cn.tedu:client1
4)绑定存储
/> cd iscsi/iqn.2018-08.cn.tedu:sharedisk/tpg1/luns
/iscsi/iqn.20…isk/tpg1/luns> create /backstores/block/ipasn
5)保存配置:
cd /
saveconfig
6)查看端口是否开启
netstat -natpu|grep :3260
7)开机自动运行target
[[email protected] ~]# systemctl is-enabled target
[[email protected] ~]# systemctl enable target
2.2.4 安装客户端软件
initiator端,使用存储端,运行mysql服务
192.168.4.72 – mysql1
192.168.4.73 – mysql2
1)查看软件是否按照:
rpm -q iscsi-initiator-utils
2)修改配在文件:
vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2018-08.cn.tedu:client1 //这个名称应该从服务端targetcli下的acl进行复制
3)发现存储:
iscsiadm –mode discoverydb –type sendtargets –portal 192.168.4.71 –discover
4)重启iscsi
systemctl restart iscsi //重启客户端iscsi软件让他重新读取发现的文件。
lsblk //这时可以看见共享过来的磁盘
5)使用存储
[[email protected] iscsi]# mkfs.ext4 /dev/sda //给新磁盘赋与文件系统
6)安装数据库
[[email protected] iscsi]# yum install mariadb-server
7)自动挂载:vim /etc/fstab
blkid
UUID=”ab3c61fd-cf10-4bd0-a3fe-bbb9d8868e58” /var/lib/mysql ext4 defaults,_netdev 0 0
mount -a
8)修改数据库工作目录所有者所属组
[[email protected] iscsi]# chown mysql.mysql /var/lib/mysql/
9)启动mysql服务
[[email protected] iscsi]# systemctl start mariadb
10)创建数据
MariaDB [(none)]> create database mydb
MariaDB [(none)]> use mydb
MariaDB [mydb]> create table t1 (id int , name varchar(30));
MariaDB [mydb]> insert into t1 values(1,’james’),(2,’jack’);
本地文件系统:ext2/3/4 xfs,同时只能单台设备使用
授权另一个客户端访问存储:
target端:
/> iscsi/iqn.2018-08.cn.tedu:sharedisk/tpg1/acls/ create iqn.2018-08.cn.tedu:client2
initiator端:
vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2018-08.cn.tedu:client2
[[email protected] ~]# iscsiadm –mode discoverydb –type sendtargets –portal 192.168.4.71 –discover
systemctl restart iscsi
[[email protected] ~]# yum install mariadb-server
[[email protected] ~]# mount /dev/sda /var/lib/mysql
[[email protected] ~]# systemctl restart mariadb
清理工作:
1. 停止mysql服务
[[email protected] ~]# systemctl stop mariadb
2. 卸载/var/lib/mysql
[[email protected] ~]# umount /var/lib/mysql/
3. logout
[[email protected] ~]# iscsiadm -m node -T iqn.2018-08.cn.tedu:sharedisk -p 192.168.4.71 -u
三、udev配置
udev:动态管理设备文件的方法 【这条命令由内核直接提供,不需要装包】
编写udev规则,给设备改名,做出一个设备的软链接。
1.查看设备在内核中的属性:
[[email protected] ~]# udevadm info -a -p /sys/block/sda | less
2.编写以.rules结尾的文件
cd /etc/udev/rules.d //在这个目录下创建规则,就可以在/dev下创建磁盘设备的软连接
vim 100-ipsan.rules //名字要以 *.rules结尾 【WWID是磁盘设备的唯一标示】
SUBSYSTEM==”block”,ATTR{size}==”41943040”, ATTRS{vendor}==”LIO-ORG “,PROGRAM==”/usr/lib/udev/scsi_id -g -u $devnode”, RESULT==”3600140590634941443445ba9cc0b8520”, SYMLINK+=”ipsan1” //给WWID为指定值的设备设置别名
ACTION==“add”,KERNEL==”vdb?”,SUBSYSTEM==”block”,OWNER=”ceph”,GROUP=”ceph” //给新发现的vdb设备设置所有者和所属组
mbr/msdos:只能分4个分区,最大支持2.2 gpt 可以分128个分区
/sys/block 设备用的
/proc 进程用的
devpath:表示分区
3.重启服务,规则文件生效:
[[email protected] rules.d]# systemctl restart systemd-udev-trigger.service
四、NFS网络文件系统
4.1 NFS服务基础
4.1.1 文件系统的类型
• 本地文件系统
– EXT3/4、SWAP、NTFS、…… —–> 本地磁盘
• 伪文件系统
– /proc、/sys、…… —–> 内存空间
• 网络文件系统
– NFS(Network File System) —–> 网络存储空间
4.1.2 NFS共享协议
• Unix/Linux最基本的文件共享机制
– 1980年由SUN公司开发
– 依赖于RPC(远程过程调用)映射机制
– 存取位于远程磁盘中的文档数据,对应用程序是透明的,就好像访问本地的文件一样
4.2 配置并访问NFS共享
4.2.1 配置NFS服务器
• 主要软件包
– nfs-utils-1.3.0-0.48.el7.x86_64
– rpcbind-0.2.0-42.el7.x86_64
– 系统服务脚本
– nfs、rpcbind
• 主配置文件
– /etc/exports共享目录 客户机地址(参数, 参数, .. ..) .. ..
/root 192.168.4.20(rw)
IP地址配置:
所有主机用 * 表示
权限设置:
rw、ro:可读可写、只读
sync、async:同步写、异步写入
no_root_squash:保留来自客户端的root权限
all_squash:客户端权限都降为nfsnobody
1.安装rpcbind和nfs-utils软件包
[[email protected] ~]# yum -y install nfs-utils rpcbind
2.配置/etc/exports文件
– 将/temp 共享给192.168.4.0,可写、保留客户端的root权限
– 将/temp 共享给192.168.2.0/24网段,只读
/temp 192.168.4.0/24(rw,no_root_squash) 192.168.2.0/24(ro)
3.启动rpcbind服务
systemctl start rpcbind
启动nfs服务
systemctl start nfs-server
查看nfs进程
ps -e | grep nfs
4.查看服务器端的共享
[[email protected] ~]# showmount -e 192.168.2.71
5.客户端挂载:
[[email protected] mnt]# mount -t nfs 192.168.4.71:/temp /mnt 【若未启用 no_root_squash,挂载后会无权限浏览(750)】
卸载:
[[email protected] ~]# umount /mnt
4.2.2 实现按需挂载
1.安装autofs软件
[[email protected] ~]# rpm -q autofs
[[email protected] ~]# yum install autofs
2.修改配置文件
/etc/auto.master:
/misc /etc/auto.misc
vim /etc/auto.misc
nfsdir -fstype=nfs,rw 192.168.4.71:/temp
3.启动autofs服务:
[[email protected] ~]# systemctl start autofs
4.触发挂载:
ls /misc/nfsdir
五、多路径multipath 【主要用在存储里面】
multipath用途:
如果客户端到服务器存储只有一条线路,那么该线路出现故障,存储就不可用了,单条线路的带宽也是有限的。可以再加一条线路。这个时候,客户端就会从两条线路发现同一存储设备,会给这个存储起两个名字,如sda和sdb。
客户端无论使用哪个存储都不合适。我们可以创建一个虚拟磁盘,如mpatha,客户端挂载mpatha,只要底层不要两条路径全部出现故障,mpatha一直可用。原理参考HSRP。
multipath:按如下要求配置好IP
san: 【存储端】
192.168.4.71
19.2168.2.71
mysql1: 【客户端】
192.168.4.72
192.168.2.72
1. 从192.168.2.71这个链路发现设备
[[email protected] rules.d]# iscsiadm –mode discoverydb –type sendtargets –portal 192.168.2.71 –discover
[[email protected] rules.d]# systemctl restart iscsi
[[email protected] rules.d]# lsblk // 此时本地有了sda和sdb
附:如果客户端无法识别iscsi存储端设备,可以使用手工login:
iscsiadm -m node -L all
或:iscsiadm -m node -T iqn.2018-08.cn.tedu:sharedisk -p 192.168.4.71 -l
2.客户端安装多路径软件
[[email protected] ~]# yum -y install device-mapper-multipath.x86_64
3.获得设备wwid
[[email protected] ~]# /usr/lib/udev/scsi_id -g -u /dev/sda //查看设别的wwid,wwid是iscsi共享磁盘的
或 ~]# /lib/udev/scsi_id –whitelisted –device=/dev/sda
4.产生配置文件
[[email protected] ~]#rpm -qf `which multipath`
[[email protected] ~]#rpm -ql device-mapper-multipath
[[email protected] rules.d]# cp /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf /etc
修改配置文件:
multipaths {
multipath {
wwid 3600140590634941443445ba9cc0b8520 //把3步骤获取的wwid填写到这里
alias mpatha
}
}
5.重启multipathd服务后,将在/dev/mapper/目录下生成mpatha,如果对它分区了,第一个分区叫mpatha1
[[email protected] rules.d]# systemctl restart multipathd.service
[[email protected] ~]# ls /dev/mapper/
6.验证多路径配置是否正确
multipath -ll //查看多路径
multipath -rr //强制重新加载多路径
[[email protected] ~]# multipath -F //删除多路径
multipath -v2 //发现多路径
7.访问虚拟设备,就会走两条路径去访问存储端设备。