Linux新手随手笔记2.7-使用ISCSI服务部署网络存储

ISCSI=internet+SCSI 硬盘接口

iSCSI技术介绍

硬盘是计算机硬件设备中重要的组成部分之一,硬盘存储设备读写速度的快慢也会对服务器的整体性能造成影响。硬盘存储结构、RAID磁盘阵列技术以及LVM技术等都是用于存储设备的技术,尽管这些技术有软件层面和硬件层面之分,但是它们都旨在解决硬盘存储设备的读写速度问题,或者竭力保障存储数据的安全。

为了进一步提升硬盘存储设备的读写速度和性能,人们一直在努力改进物理硬盘设备的接口协议。当前的硬盘接口类型主要有IDE、SCSI和SATA这3种。

IDE是一种成熟稳定、价格便宜的并行传输接口。

SATA是一种传输速度更快、数据校验更完整的串行传输接口。

SCSI是一种用于计算机和硬盘、光驱等设备之间系统级接口的通用标准,具有系统资源占用率低、转速高、传输速度快等优点。

不论使用什么类型的硬盘接口,硬盘上的数据总是要通过计算机主板上的总线与CPU、内存设备进行数据交换,这种物理环境上的限制给硬盘资源的共享带来了各种不便。后来,IBM公司开始动手研发基于TCP/IP协议和SCSI接口协议的新型存储技术,这也就是我们目前能看到的互联网小型计算机系统接口(iSCSI,Internet Small Computer System Interface)。这是一种将SCSI接口与以太网技术相结合的新型存储技术,可以用来在网络中传输SCSI接口的命令和数据。这样,不仅克服了传统SCSI接口设备的物理局限性,实现了跨区域的存储资源共享,还可以在不停机的状态下扩展存储容量。

下面将讲解一下iSCSI技术在生产环境中的优势和劣势。首先,iSCSI存储技术非常便捷,在访问存储资源的形式上发生了很大变化,摆脱了物理环境的限制,同时还可以把存储资源分给多个服务器共同使用,因此是一种非常推荐使用的存储技术。但是,iSCSI存储技术受到了网速的制约。以往,硬盘设备直接通过主板上的总线进行数据传输,现在则需要让互联网作为数据传输的载体和通道,因此传输速率和稳定性是iSCSI技术的瓶颈。随着网络技术的持续发展,相信iSCSI技术也会随之得以改善。

既然要通过以太网来传输硬盘设备上的数据,那么数据是通过网卡传入到计算机中的么?这就有必要向大家介绍iSCSI-HBA卡了(见图)。与一般的网卡不同(连接网络总线和内存,供计算机上网使用),iSCSI-HBA卡连接的则是SCSI接口或FC(光纤通道)总线和内存,专门用于在主机之间交换存储数据,其使用的协议也与一般网卡有本质的不同。运行Linux系统的服务器会基于iSCSI协议把硬盘设备命令与数据打包成标准的TCP/IP数据包,然后通过以太网传输到目标存储设备,而当目标存储设备接收到这些数据包后,还需要基于iSCSI协议把TCP/IP数据包解压成硬盘设备命令与数据。

创建RAID磁盘阵列

我们先关闭虚拟机添加4块网卡,然后准备做一个RAID10.

使用mdadm命令创建RAID磁盘阵列。其中,-Cv参数为创建阵列并显示过程,/dev/md0为生成的阵列组名称,-n 4参数为创建RAID 10磁盘阵列所需的硬盘个数,-l 10参数为RAID磁盘阵列的级别,在命令后面要逐一写上使用的硬盘名称,我们这里用通配符表示。

在上述命令成功执行之后,得到一块名称为/dev/md0的新设备,这是一块RAID 10级别的磁盘阵列,如果你想创建RAID 5的就修改相应参数然后加一个备份盘后面加-x 1 代表有一块备份盘。

然后我们查看一下,已经初始化完成了,有了md0这个一块设备。

配置iSCSI服务端

iSCSI技术在工作形式上分为服务端(target)与客户端(initiator)。iSCSI服务端即用于存放硬盘存储资源的服务器,它作为前面创建的RAID磁盘阵列的存储端,能够为用户提供可用的存储资源。iSCSI客户端则是用户使用的软件,用于访问远程服务端的存储资源

我们下面安装一下iSCSI服务端程序以及配置命令工具

第一个是ISCSI服务端的程序,第二个是命令配置工具。

然后我们重启ISCSI服务端程序。并且添加启动项。

配置iSCSI服务端共享资源。targetcli是用于管理iSCSI服务端存储资源的专用配置命令,它能够提供类似于fdisk命令的交互式配置功能,将iSCSI共享资源的配置内容抽象成“目录”的形式,我们只需将各类配置信息填入到相应的“目录”中即可。这里的难点主要在于认识每个“参数目录”的作用。当把配置参数正确地填写到“目录”中后,iSCSI服务端也可以提供共享资源服务了。

在执行targetcli命令后就能看到交互式的配置界面了。在该界面中可以使用很多Linux命令,比如利用ls查看目录参数的结构,使用cd切换到不同的目录中。/backstores/block是iSCSI服务端配置共享设备的位置。我们需要把刚刚创建的RAID 10磁盘阵列md0文件加入到配置共享设备的“资源池”中,并将该文件重新命名为disk0,这样用户就不会知道是由服务器中的哪块硬盘来提供共享存储资源,而只会看到一个名为disk0的存储设备。

下面我们介绍一下每个目录的作用,这就是难点,只要记住每个目录的作用那么就简单很多了。

cd /backstores/block定义我们共享的数据,我们给他创建为disk0,那么我们给用户分享的时候他所看到的的就是disk0,而不会看到我们的/dev/md0.相当于起个别名。

 

然后我们cd /退回到根目录

然后我们再进入 iscsi目录里面,然后使用create命令创建出来随机的一个字符串,这个就是我们用户待会所看到的名称。大家注意复制的时候一定不要把后面的点复制上,没有点,也就是句号。然后我们进入到我们创建的这个目录里面。然后我们进入到tpg1目录,他下面有3个子目录,第一个是acls,luns,portals。我们进入到luns目录,这就是我们共享出去的那个设备的信息,我们设备的信息就是我们刚才创建的那个disk0,我们现在将我们创建出的disk0加入到我们iscsi共享里面。

然后我们cd回上一级,再进入acls目录。这个指的就是谁能够去访问,谁可以去访问。client代表用户的名称。我们建议这个么写,在刚刚系统生成的iSCSI target后面追加上类似于:client的参数,这样既能保证客户端的名称具有唯一性,又非常便于管理和阅读字符串加上client。设置访问控制列表(ACL)。iSCSI协议是通过客户端名称进行验证的,也就是说,用户在访问存储共享资源时不需要输入密码,只要iSCSI客户端的名称与服务端中设置的访问控制列表中某一名称条目一致即可,因此需要在iSCSI服务端的配置文件中写入一串能够验证用户信息的名称。acls参数目录用于存放能够访问iSCSI服务端共享存储资源的客户端名称。

然后我们再回到上一级,然后进入portals目录。设置iSCSI服务端的监听IP地址和端口号。位于生产环境中的服务器上可能有多块网卡,那么到底是由哪个网卡或IP地址对外提供共享存储资源呢?这就需要我们在配置文件中手动定义iSCSI服务端的信息,即在portals参数目录中写上服务器的IP地址。接下来将由系统自动开启服务器192.168.10.10的3260端口将向外提供iSCSI共享存储资源服务

我们查看一下,然后退出。

然后清空我们的防火墙并且保存规则,还有重启的我们的iscsi服务。如果你觉得不安全就不用都清空防火墙,可以设置firewalld防火墙策略,使其放行3260/tcp端口号的流量,命令如下。

[root@linuxprobe ~]# firewall-cmd --permanent --add-port=3260/tcp 
success 
[root@linuxprobe ~]# firewall-cmd --reload 
success
这养我们就配置好了这iscsi,接下来我们配置客户端。
配置Linux客户端

猜你喜欢

转载自www.cnblogs.com/hshyx/p/10863525.html