SCSI技术概述
当前的硬盘接口类型主要有IDE、SCSI和SATA3种
- IDE是一种成熟稳定、价格便宜的并行传输接口。
- SATA是一种传输速度更快、数据校验更完整的串行传输接口。
- SCSI是一种用于计算机和硬盘、光驱等设备之间系统级接口的通用标准,具有系统资源占用率低、转速高、传输速度快等优点。
iSCSI(Internet Small Computer System Interface)互联网小型计算机系统接口,是一种将SCSI接口与以太网技术相结合的新型存储技术,可用来在网络中传输SCSI接口的命令和数据。实现了跨区域的存储资源共享,可在不停机状态下扩展存储容量。
使用的是iSCSI-HBA卡连接进行主机之间交换存储数据。运行linux系统的服务器基于iSCSI协议把硬盘设备命令与数据打包成标准的TCP/IP数据包,然后通过以太网传输到目标存储设备,目标存储设备接收到这些数据包后,需基于iSCSI协议把TCP/IP数据包解压成硬盘设备命令与数据。
创建RAID磁盘阵列
先在虚拟机中添加4 块硬盘进行测试。
用mdadm命令创建RAID磁盘阵列。
-Cv参数为创建阵列并显示过程;
/dev/md0为生成的阵列组名称;
-n 3 参数为创建RAID5磁盘阵列所需的硬盘个数;
-l 5 参数为RAID磁盘阵列的级别;
-x 1参数为磁盘阵列的备份盘个数;
最后写上使用的硬盘名称。
# mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde
# mdadm -D /dev/md0 (查看设备详细信息,记录UUID写入到fstab挂载配置文件中)
配置iSCSI服务端
iSCSI技术工作形式上分服务端(target)与客户端(initiator)。服务端用于存放硬盘存储资源的服务器,作为创建RAID磁盘阵列的存储端。客户端则是使用软件,用于访问远程服务端的存储资源。
第一步:安装iSCSI服务端程序及配置命令工具。-y参数就不需要安装时手动确认了。
在RHEL 8/CentOS 8系统中,默认已经安装了iSCSI服务端程序,用户需要做的是配置好软件仓库后安装iSCSI服务端的交换式配置工具。
# yum -y install targetcli
第二步:配置iSCSI服务共享资源。
/backstores/block是iSCSI服务端配置共享设备的位置。targetcli用于管理iSCSI服务端存储资源的专用配置命令。把创建的RAID5磁盘阵列md0文件加入到配置共享设备资源池,并将该文件重新命名为disk0,这样用户就不知道服务器中哪块硬盘提供共享存储资源,只看到一个名为disk0存储设备。
# targetcli
/> ls
/> cd /backstores/block
> create disk0 /dev/md0
> cd /
/> ls (block下多出disk0)
第三步:创建iSCSI target名称及配置共享资源。这个名称是系统自动生成的,还会在/iscsi参数目录中创建一个与其字符串同名的新“目录”来存放共享资源。需要把共享资源池中的硬盘设备添加到这个新目录中,这样用户登录iSCSI服务端后,即可默认使用这硬盘设备提供的共享存储资源了。
/> cd iscsi
> create
Created target iqn.2003-01.org.linux-iscsi.mail.x8664:sn.3cd6d02ad7cd.
> cd iqn.2003-01.org.linux-iscsi.mail.x8664:sn.3cd6d02ad7cd
> ls
> cd tpg1/luns
> create /backstores/block/disk0
第四步:设置访问控制列表(ACL)。iSCSI协议是通过客户端名称进行验证的,需要在iSCSI服务端的配置文件中写入一串能够验证用户信息的名称。acls参数目录用于存放能够访问iSCSI服务端共享存储资源的客户端名称。推荐在刚刚系统生成的 iSCSI target 后面追加上类似于:client 的参数,这样既能保证客户端的名称具有唯一性,又非常便于管理和阅读
> cd ..
> cd acls
> create iqn.2003-01.org.linux-iscsi.mail.x8664:sn.3cd6d02ad7cd:client
第五步:设置iSCSI服务端的监听IP地址和端口号。即在portals参数目录中写上服务器IP地址。默认端口3260/tcp。
在配置文件中默认是允许所有网卡提供iSCSI服务,如果您认为这有些许不安全,可以手动删除。
> cd ..
> cd portals
> create 192.168.153.10
第六步:配置后检查配置信息保存exit退出,重启iSCSI服务并配置防火墙策略使其放行3260/tcp端口号。
> ls /
/> exit
#
# firewall-cmd --permanent --add-port=3260/tcp
# firewall-cmd --reload
配置Linux客户端
安装iSCSI客户端服务程序initiator。
# yum install iscsi-initiator-utils
编辑客户中的initiator文件,把服务端访问控制列表名称填写进去,重启并加入开机启动。
# vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2003-01.org.linux-iscsi.mail.x8664:sn.3cd6d02ad7cd:client
# systemctl restart iscsid
# systemctl enable iscsid
客户端访问口诀:先发现,再登录,最后挂载并使用
iscsiadm是用于管理、查询、插入、更新或删除iSCSI数据库配置文件的命令行工具。
先用这个工具扫描发现远程iSCSI服务端,然后查看有哪些可用共享存储资源。
-m discovery 参数的目的扫描并发现可用的存储资源;
-t st参数为执行扫描操作的类型;
-p 192.168.153.10参数为iSCSI服务端IP地址。
# iscsiadm -m discovery -t st -p 192.168.153.10
-m node参数为将客户端所在主机作为一台节点服务器;
-T iqn.2003-01.org.linux-iscsi.mail.x8664:sn.3cd6d02ad7cd 参数为要用的存储资源;
-p 192.168.153.10参数为iSCSI服务端的IP地址;
–login或-l 参数为登录验证。
# iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.mail.x8664:sn.3cd6d02ad7cd -p 192.168.153.10 --login
登录成功后,会多出一块/dev/sdb的设备文件。可以通过lsblk进行查看。
udev服务在命名硬盘名称是,与硬盘插槽没有关系的。
# lsblk
# file /dev/sdb
操作磁盘,格式化并挂载
# mkfs.xfs /dev/sdb
# mkdir /iscsi
# mount /dev/sdb /iscsi
# df -h
blkid命令用于查看设备的名称、文件系统级UUID。
# blkid | grep /dev/sdb
注意:因为/dev/sdb是一块网络存储设备,在/etc/fstab配置文件中必须添加 _netdev 参数表示当系统联网后再进行挂载操作,以免系统开机时间过长或开机失败。
# vim /etc/fstab
UUID=eb9cbf2f-fce8-413a-b770-8b0f243e8ad6 /iscsi xfs defaults,_netdev 0 0
如果不需要用iSCSI共享设备资源,用iscsiadm -u 将其设备卸载。
# iscsiadm -m node -T -uiqn.2003-01.org.linux-iscsi.mail.x8664:sn.3cd6d02ad7cd -u
配置Windows客户端
使用Windows系统的客户端也可以正常访问iSCSI服务器上的共享存储资源,而且操作原理及步骤与Linux系统的客户端基本相同。
格式化之后就可以了。
如果删除就直接断开连接即可