iSCSI网络共享存储原理及搭建

目录

  • 前言
  • 一、相关术语介绍
    • 1、iSCSI
    • 2、SCSI
    • 3、FC
    • 4、DAS
    • 5、NAS
    • 6、SAN
  • 二、基于IP SAN的网络存储iSCSI的概念及原理
    • 1、iSCSI是什么
    • 2、iSCSI的组成
    • 3、iSCSI的原理
    • 4、iSCSI的工作方式
    • 5、iqn标签
  • 三、使用命令操作搭建临时iSCSI存储服务器
    • 1、服务器作为存储端先添加新硬盘,我们使用软Ride来模拟;
    • 2、服务器端LVM逻辑卷整合;
    • 3、安装SCSI服务器端(Target 端)创建 iqn 标签;
    • 4、添加LUN到IQN 标签,绑定IQN 标签到存储设备;
    • 5、客户端配置
    • 6、客户端使用块设备;
    • 7、测试;
    • 8、客户端解除iscsi使用的步骤;
    • 9、客户端再次使用;
    • 10、通过网络给客户端挂载的块设备动态扩容的方案;
  • 四、iSCSI的持久化
    • 1、还原2台主机到开始配置前的状态,全部重新来;
    • 2、安装服务器端软件;
    • 3、服务器端编辑配置文件;
    • 4、ISCSI 客户端;
    • 5、客户端测试。

前言

在存储的世界里,有各种各样的名词和术语,常见的有iSCSI、SCSI、FC、DAS、NAS、SAN等。这里笔者重点介绍与iSCSI相关的术语和知识。

一、相关术语介绍

1、iSCSI

iSCSI( Internet Small Computer System Interface )Internet小型计算机系统接口,又称为 IP-SAN,是一种基于TCP/IP的协议,iscsi可以实现在IP网络上运行SCSI协议。

2、SCSI

SCSI(Small Computer System Interface)是块数据传输协议,在存储行业广泛应用,是存储设备最基本的标准协议。SCSI结构基于客户/服务器模式,其通常应用环境是:设备互相靠近,并且这些设备由SCSI总线连接。iSCSI的主要功能是在TCP/IP网络上的主机系统(启动器initiator)和存储设备(目标器target)之间进行大量数据的封装和可靠传输过程。此外,iSCSI提供了在IP网络封装SCSI命令,且运行在TCP上。SCSI作为输入/输出接口,主要用于硬盘、光盘、磁带机、扫描仪、打印机等设备。SCSI作为输入/输出接口,主要用于硬盘、光盘、磁带机、扫描仪、打印机等设备。

3、FC

FC是光纤通道(Fibre Channel)的简称,是一种适合于千兆数据传输的、成熟而安全的解决方案。与传统的SCSI技术相比,FC提供更高的数据传输速率,更远的传输距离,更多的设备连接支持,更稳定的性能,更简易的安装。

4、DAS

DAS是直连式存储(Direct-Attached Storage)的简称,是指将存储设备通过SCSI接口或光纤通道直接连接到一台计算机上。当服务器在地理上比较分散,很难通过远程进行互连时,DAS是比较好的解决方案。但是这种式存储只能通过与之连接的主机进行访问,不能实现数据与其他主机的共享,同时,DAS会占用服务器操作系统资源,例如CPU资源、IO资源等,并且数据量越大,占用操作系统资源就越严重。

5、NAS

网络接入存储(Network-Attached Storage)简称NAS,它通过网络交换机连接存储系统和服务器,建立专门用于数据存储的私有网络,用户通过TCP/IP协议访问数据,采用业界标准的文件共享协议如NFS、HTTP、CIFS来实现基于文件级的数据共享。NAS存储使文件共享访问变得更方便和快捷,并且能很容易地增加存储容量。通过专业化的文件服务器与存储技术相结合,NAS为那些需要共享大量文件数据的企业提供了一个高效的、高可靠的、高性价比的解决方案。但是NAS也有一定的局限性,它会受到网络带宽和网络拥堵的影响,在一定程度上限制了NAS的网络传输能力。

6、SAN

存储区域网络(Storage Area Network)简称SAN,它是一种通过光纤交换机、光纤路由器、光纤集线器等设备将磁盘阵列、磁带等存储设备与相关服务器连接起来的高速专用子网。
SAN由3个部分组成,分别是连接设备(如路由器、光纤交换机和Hub)、接口(如SCSI、FC)、通信协议(如IP和SCSI)。这3个部分再加上存储设备和服务器就构成了一个SAN系统。SAN捉供了一个灵活的、高性能的和高扩展性的存储网络环境,它可以更加有效地传输海量的数据块。由于采用了光纤接口,因此SAN还具有更高的带宽,同时,SAN也使统一管理和集中控制实现简化。现在SAN已经广泛应用于ISP和银行等,随着用户业务量的增大,SAN的应用前景将越来越光明。

二、基于IP SAN的网络存储iSCSI的概念及原理

1、iSCSI是什么

iSCSI,即Internet SCSI,是IETF制订的一项标准,用于将SCSI数据块映射为以太网数据包。从根本上说,它是一种基于IP Storage理论的新型存储技术,该技术将存储行业广泛应用的SCSI接口技术与IP网络技术相结合,可以在IP网络上构建SAN。简单地说,iSCSI就是在IP网络上运行SCSI协议的一种网络存储技术。
对于中小企业的存储网络来说,iSCSI是个非常好的选择。首先,从技术实现上来讲,iSCSI是基于IP协议的技术标准,它允许网络在TCP/IP协议上传输SCSI命令,实现SCSI和TCP/IP协议的连接,这样用户就可以通过TCP/IP网络来构建SAN,只需要不多的投资,就可以方便、快捷地对信息和数据进行交互式传输和管理。但是,在iSCSI出现之前,构建SAN的唯一技术是利用光纤通道,这要花费很大的建设成本,一般中小企业无法承担。其次,iSCSI技术解决了传输效率、存储容量、兼容性、开放性、安全性等方面的诸多问题,在使用性能上绝对不输给商业的存储系统或光纤存储网络。
iSCSI的优势主要表现为:首先,iSCSI沿用TCP/IP协议,而TCP/IP是在网络方面最通用、最成熟的协议,且IP网络的基础建设非常完善,同时,SCSI技术是被磁盘和磁带等设备广泛采用的存储标准,这两点使iSCSI的建设费用和维护成本非常低廉;其次,iSCSI支持一般的以太网交换机而不是特殊的光纤通道交换机,从而减少了异构网络带来的麻烦;还有,iSCSI是通过IP封包传输存储命令,因此可以在整个Internet上传输数据,没有距离的限制。
总之,与传统的 SCSI 技术比较起来,iSCSI 技术有以下三个革命性的变化:
1)把原来只用于本机的 SCSI 协议透过 TCP/IP 网络发送,使连接距离可作无限的地域延伸(SCSI协议一般限制在6m以内);
2)理论上连接的服务器数量无限( 原来的 SCSI-3 的上限是 15 );
3)由于是服务器架构,因此也可以实现在线扩容以至动态部署。

2、iSCSI的组成

一个简单的iSCSI系统大致由以下部分组成:
1)iSCSI Initiator或者iSCSI HBA
2)iSCSI Target
3)以太网交换机
4)一台或者多台服务器
iSCSI服务器用来安装iSCSI驱动程序,即安装iSCSI Initiator;
Storage Router可以是以太网交换机或者路由器;i
SCSI存储设备可以是iSCSI磁盘阵列,也可以是具有存储功能的PC服务器。

2.1 iSCSI Initiator
iSCSI Initiator是一个安装在计算机上的软件或硬件设备,它负责与iSCSI存储设备进行通信。
iSCSI服务器与iSCSI存储设备之间的连接方式有两种:
1)第一种是基于软件的方式,即iSCSI Initiator软件。在iSCSI服务器上安装Initiator后,Initiator软件可以将以太网卡虚拟为iSCSI卡,进而接受和发送iSCSI数据报文,从而实现主机和iSCSI存储设备之间的iSCSI协议和TCP/IP协议传输功能。这种方式只需以太网卡和以太网交换机,无需其他设备,因此成本是最低的。但是iSCSI报文和TCP/IP报文转换需要消耗iSCSI服务器的一部分CPU资源,只有在低I/O和低带宽性能要求的应用环境中才能使用这种方式。
2)第二种是硬件iSCSI HBA (Host Bus Adapter)卡方式,即iSCSI Initiator硬件。这种方式需要先购买iSCSI HBA卡,然后将其安装在iSCSI服务器上,从而实现iSCSI服务器与交换机之间、iSCSI服务器与存储设备之间的高效数据传输。与第一种方式相比,硬件iSCSIHBA卡方式不需要消耗iSCSI服务器的CPU资源,同时硬件设备是专用的,所以基于硬件的iSCSI Initiator可以提供更好的数据传输和存储性能。但是,iSCSI HBA卡的价格比较昂贵,因此用户要在性能和成本之间进行权衡。
iSCSI Initiator软件一般都是免费的,Centos和RHEL对iSCSI Initiator的支持都非常不错,现在的Linux发行版本都默认自带了iSCSI Initiator。
2.2 iSCSI Target
一个可以用于存储数据的iSCSI磁盘阵列或者具有iSCSI功能的设备都可以被称为“iSCSI Target”,因为大多数操作系统都可以利用一些软件将系统转变为一个“iSCSI Target”。本章重点讲述如何构建一个PC构架的iSCSI存储系统。所谓PC构架就是选择一个普通的、性能优良的、可支持多块磁盘的PC(一般为PC服务器),再选择一款相对成熟稳定的iSCSI Target软件,将iSCSI Target软件安装在PC服务器上,使普通的PC服务器转变成一台iSCSI存储设备,并通过PC服务器的以太网卡对外提供iSCSI数据传输服务。
目前大多数iSCSI Target软件都是收费的,例如DataCorc Software的SANmelody,FalconStor Software的iSCSI Server for Windows等,这些都是Windows平台支持的。不过,也有一些Linux平台的开源iSCSI Target软件,例如iSCSI Enterprise Target,后面的内容会重点介绍这个软件。
利用iSCSI Target软件,可以将服务器的存储空间分配给客户机使用,客户机可以像使用本地硬盘一样使用iSCSI磁盘,包括对其进行分区、格式化及读写等。而且每个客户端都可以向iSCSI磁盘写数据,互不干扰,并且不会破坏存储到服务器中的数据。同时,iSCSITarget软件对用户权限控制非常灵活,支持配置文件。
我们知道,iSCSI是使用TCP/IP协议进行通信的,因此,将iSCSI两端连接起来,仅仅需要一个以太网络就可以了。由此可知,iSCSI的存储性能和这个以太网络有直接关系,所以最好在iSCSI网络中使用千兆以太网交换机,劣质的网络设备会严重影响存储系统的性能,也就是说,要为每个服务器配备高质量的千兆以太网交换机,并提供两个连接。对于iSCSI Target,应该为每个独立阵列中的两个独立端口配备交换机,最后将交换机连接起来,采用这种配置方式,即使两个交换机中的一个出现了故障,整个iSCSI存储系统仍然能够正常工作,这保证了存储系统的不间断运行。

3、iSCSI的原理

要理解iSCSI的工作原理,就必须知道iSCSI的层次结构。根据OSI模型,iSCSI的协议自顶向下一共可以分为三层。
主机应用程序==>SCSI驱动==>iSCSI驱动==>TCP/IP协议==>网卡驱动==>网卡适配控制器器==>网络==>路由或网关==>storage(存储)
iSCSI网络共享存储原理及搭建_第1张图片

提示:我们发现这里SCSI驱动的底层是iSCSI驱动,按照传统SCSI驱动底层应该是硬件,所以这里的SCSI驱动是假的。我们使用iSCSI软件,会发现明显提供的是一个块设备,块设备在磁盘中显示为sdb.sdc…。对于块设备我们还需要分区、格式化才能使用。

4、iSCSI的工作方式

服务(设备)端 —— target
客户(应用)端 —— initiator
我们知道iSCSI服务器端有大量的数据,每台iSCSI服务器可以存储仅1台或多台iSCSI客户机的数据。我们先将iSCSI服务器存储物理单元分割成数个逻辑单元(如LUN1、LUN2、LUN3等),分割完成后就可以将不同的逻辑单元分配给不同的用户。
iSCSI网络共享存储原理及搭建_第2张图片

5、iqn标签

用户的访问端点。在服务器端物理磁盘组可以通过软/硬Raid来组成单独的磁盘,磁盘会被我们分散成多个分区或逻辑卷,然后再绑定到单个的逻辑单元(LUN),换句话说一个LUN的背后是一个分区或逻辑卷,LUN大小与绑定的分区或逻辑卷大小相同。显然,能产生一个或多个LUN,所有的LUN再绑定iqn标签,一个iqn标签可以绑定一个或多个LUN。在客户端每一个LUN最后相当于被挂载到客户端对应一个块设备(sdb.sdc.sdd…)。我们想要将服务器端的块设备共享给客户端的话,首先是创建iqn标签,然后创建LUN添加进iqn标签,再绑定真实存储设备(块设备),最后将iqn标签共享给客户端。
iSCSI网络共享存储原理及搭建_第3张图片

三、使用命令操作搭建临时iSCSI存储服务器

1、服务器作为存储端先添加新硬盘,我们使用软Ride来模拟;

在虚拟机主页面打开虚拟机设置==>点击硬盘==>添加硬盘==>进入下一步==>选择scsi类型磁盘==>选择建磁盘内容为单个文件==>下一步直至完成即可==>启动虚拟机

2、服务器端LVM逻辑卷整合;

pvcreate /dev/sdb
#通过sdb这个块设备新增物理卷
vgcreate vg0 /dev/sdb
#创建卷组 vg0
lvcreate -L 1G -n lv0 vg0
#从卷组vg0中划分逻辑卷,-L指定大小,-n指定逻辑卷名称
mkfs -t ext4 /dev/vg0/lv0
#格式化逻辑卷lv0

3、安装SCSI服务器端(Target 端)创建 iqn 标签;

yum -y install scsi-target-utils
service tgtd start && chkconfig tgtd on
tgtadm -L iscsi -o new -m target -t 1 -T iqn.2021-01.com.vera:linux
#创建 iqn 标签。tgtadm为tgtd管理工具,-L iSCSI指定驱动类型iSCSI,-o new指定操作类型为新建,-m target指定管理对象为target(服务器端), -t 1指定iqn标签的序号,-T iqn.2021-01.com.vera:linux指定iqn标签,年月和域名的反写:自定义字符串。
tgtadm -L iscsi -o show -m target
#查看iqn标签绑定的LUN详情。tgtadm为tgtd管理工具,-L iSCSI指定驱动类型iSCSI,-o show指定操作类型为查看,-m target指定管理对象为target(服务器端)。

[root@localhost ~]# tgtadm -L iscsi -o new -m target -t 1 -T iqn.2021-01.com.vera:linux
[root@localhost ~]# tgtadm -L iscsi -o show -m target
Target 1: iqn.2021-01.com.vera:linux
#iqn标签的序号与自定义的iqn标签
    System information:
#当前系统的信息
        Driver: iscsi
#驱动类型
        State: ready
#状态:就绪
    I_T nexus information:
    LUN information:

#LUN标签,先前我们提到iqn标签下面需要绑定LUN,显然我们还没有绑定,这里的LUN:0实际上是控制iqn的策略,默认就会有LUN:0,所以后面我们不能使用0来给创建的LUN命名。

      LUN: 0
            Type: controller
#类型为控制器
            SCSI ID: IET     00010000
            SCSI SN: beaf10
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: null
            Backing store path: None
            Backing store flags: 
    Account information:
    ACL information:

4、添加LUN到IQN 标签,绑定IQN 标签到存储设备;

tgtadm -L iscsi -o new -m logicalunit -t 1 -l 1 -b /dev/vg0/lv0
#tgtadm为tgtd管理工具,-L iSCSI指定驱动类型iSCSI,-o new指定操作类型为新建,-m logicalunit指定管理对象为 logicalunit(即LUN), -t 1指定绑定哪一个iqn标签,在第三步中生成(Target 1),-l 1自定义逻辑存储单元(LUN)的标签(0不能用,不能重复),-b /dev/vg0/lv0指定用哪一个存储设备来提供真实存储
tgtadm -L iscsi -o show -m target
#查看iqn标签绑定的LUN详情

[root@localhost ~]#  tgtadm -L iscsi -o new -m logicalunit -t 1 -l 1 -b /dev/vg0/lv0
[root@localhost ~]# tgtadm -L iscsi -o show -m target
Target 1: iqn.2021-01.com.vera:linux
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
      ....
        LUN: 1
            Type: disk
            SCSI ID: IET     00010001
            SCSI SN: beaf11
            Size: 1074 MB, Block size: 512
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: rdwr
            Backing store path: /dev/vg0/lv0
            Backing store flags: 
    Account information:
    ACL information:
#ACL 访问控制

tgtadm -L iscsi -o bind -m target -t 1 -I 192.168.45.0/24
#tgtadm为tgtd管理工具,-L iSCSI指定驱动类型iSCSI,-o new指定操作类型为绑定,-m logicalunit指定管理对象为 logicalunit(即LUN), -t 1指定绑定哪一个iqn标签,-I 192.168.45.0/24 指定哪一个网段的主机可以访问,即 ACL 访问控制
tgtadm -L iscsi -o show -m target
#查看iqn标签绑定的LUN详情

[root@localhost ~]# tgtadm -L iscsi -o bind -m target -t 1 -I 192.168.45.0/24
[root@localhost ~]# tgtadm -L iscsi -o show -m target
Target 1: iqn.2021-01.com.vera:linux
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
        ..... 
        LUN: 1
            Type: disk
            SCSI ID: IET     00010001
        .....
    Account information:
    ACL information:
        192.168.45.0/24
#添加访问控制   192.168.45.0/24

5、客户端配置

yum -y install iscsi-initiator-utils
#安装客户端管理工具
iscsiadm -m discovery -t st -p 192.168.45.11
#扫描找到服务器端。iscsiadm指客户端命令行管理工具,-m discovery寻找,-t st开启扫描模式,-p 192.168.45.11 扫描的服务器主机地址

[root@CentOS-62 ~]# iscsiadm -m discovery -t st -p  192.168.45.11  
Starting iscsid:                                           [  OK  ]
192.168.45.11:3260,1 iqn.2021-01.com.vera:linux
#意味着这个服务基于TCP的3260端口,序号为1,iqn标签

iscsiadm -m node -T iqn.2021-01.com.vera:linux --login
#客户端使用扫描找到的服务器端存储。iscsiadm指客户端命令行管理工具,-m node指定管理端对象为node(客户端节点),-T iqn.2016-2.com.xdl.www:lvm --login指定iqn标签和登录状态为login
fdisk -l
#查看添加的块设备

...
Disk /dev/sdb: 1073 MB, 1073741824 bytes
34 heads, 61 sectors/track, 1011 cylinders
Units = cylinders of 2074 * 512 = 1061888 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
#大小与lv0绑定的LUN1绑定的iqn标签一致

iscsiadm -m node -T iqn.2021-01.com.vera:linux --logout
#不需要此块设备的时候登出即可

6、客户端使用块设备;

iscsiadm -m node -T iqn.2021-01.com.vera:linux --login
#客户端使用扫描找到的服务器端存储。
fdisk /dev/sdb
n==>p==>1==>(确定)==>w
#给块设备分区,n创建新分区,p选择主分区,分区号为1选择所有存储,w保存分区退出
fdisk -l
#查看分区
mkfs.ext4 /dev/sdb1
#选择ext4文件系统对分区格式化
partprobe /dev/sdb1
lsblk && blkid
#查看分区表结构和分区文件系统类型

[root@CentOS-62 ~]# lsblk
NAME   MAJ:MIN RM    SIZE RO TYPE MOUNTPOINT
sda      8:0    0     20G  0 disk 
├─sda1   8:1    0    200M  0 part /boot
├─sda2   8:2    0      2G  0 part [SWAP]
└─sda3   8:3    0   17.8G  0 part /
sr0     11:0    1    2.1G  0 rom  /mnt/cdrom
sr1     11:1    1    3.7G  0 rom  /media/cdrom
sdb      8:16   0      1G  0 disk 
└─sdb1   8:17   0 1023.8M  0 part 
[root@CentOS-62 ~]# bl
blkdeactivate  blkdiscard     blkid          blkiomon       blkparse       blkrawverify   blktrace       blockdev
[root@CentOS-62 ~]# blkid
/dev/sda1: UUID="2710830d-280a-4ce4-ae04-679d31cdd9c6" TYPE="ext4" 
/dev/sda2: UUID="7a3527a4-a5d4-4efa-8e5d-bcf3d544f1d8" TYPE="swap" 
/dev/sda3: UUID="9a079862-9814-450d-9c83-f8bb2efec120" TYPE="ext4" 
/dev/sdb1: UUID="423586cd-ac86-46c6-bbaf-0f1cce1cb41e" TYPE="ext4"

mkdir /iscsimount
#创建挂载目录
mount -t ext4 /dev/sdb1 /iscsimount/
#挂载
cd /iscsimount && ls
#切换到挂载目录,显示块设备标记(注意ext4文件系统会显示lost+found,如果是xfs则被隐藏)

[root@CentOS-62 ~]# mount -t ext4 /dev/sdb1 /iscsimount/
[root@CentOS-62 ~]# cd /iscsimount && ls
lost+found

7、测试;

date >> 1.txt && ls
#可以正常创建文件并显示代表成功添加存储
思考:我们知道,iscsi协议理论可以共享给无限个用户挂载,我们是否能基于iscsi给多个Apache做网页共享了?
答案是否定的,回想一下smb协议的定义是给上层用户空间提供一个网络访问连接的接口,在samba中我们没有格式化目录就可以直接使用共享,换句话说文件是由smb协议处理的,所以我们才需要smb客户端,客户端的作用之一就是转换本地文件系统与远程文件系统的区别,所以文件系统不由本地提供。但是当前是块设备,本机要使用块设备的话,必须由本机去处理块设备的文件系统,文件系统会写入到块设备,这就类似于首次使用U盘必须写入文件系统,假设U盘写入NTFS文件系统,linux就无法识别使用。回到iscsi,虽然他可以无限挂载,但并不能在如Apache和NFS中提供存储,试想Apache可能同时需要上传(写入)和下载(读取),也可能会同时更改同一个文件,这样就会因为文件锁而导致文件损坏或丢失。
文件锁:指我们在使用文件前,首先会向当前操作系统申请对文件上锁,操作系统再打开时就会有报错提示。注意,在ext4文件系统中,使用vim打开的是文件的副本,打开之前系统会先拷贝一份源文件的swap。我们vim的其实是这个swap副本文件,修改保存后,系统会对比源文件和副本文件的区别,保存就是核对的过程,如果2个文件一致,则刷新时间戳后保留源文件,丢掉副本文件。如果2个文件不一致,则覆盖源文件。这也是为什么我们vim一个文件时,同时还能cat,就是因为vim的是副本文件,cat的是源文件。另外,ext4文件系统的文件锁只在当前宿主操作系统生效,并不会跨主机或跨网络实现网络锁或分布式锁,如果iscsi给Apache提供存储,则C1和C2用户可以在不同终端对存放在同一个Apache挂载的块设备中的同一个文件进行修改,此时不管是谁先使用文件,在另一个人使用时,由于是在另一个操作系统,文件又会被上一次锁,这就会导致源头文件最终丢失或损坏。
为了解决此问题,可以使用分布式文件锁。用户组成用户集群,通过集群去申请锁,申请后集群内的主机都能识别文件已上锁。目前支持分布式文件锁的文件系统为 GFS Global/Gluster FS(全局文件系统),它由RGMANAGER(集群资源控制器,用来监控哪个节点死亡,移除)、 CMAN(把每个节点组成一个集群)、 ISCSI(共享存储),这四部分组成大名鼎鼎的RHCS(红帽集群套件),这种方式支持同时挂载,识别集群中的单点写入,不会使文件受损。

8、客户端解除iscsi使用的步骤;

umount /iscsimount/
#解除挂载
iscsiadm -m node -T iqn.2021-01.com.vera:linux --logou
#登出

9、客户端再次使用;

mount -t ext4 /dev/sdb1 /iscsimount/

10、通过网络给客户端挂载的块设备动态扩容的方案;

在服务器端新增LUN,客户端将新增的存储转化成逻辑卷,再使用逻辑卷命令完成动态扩容。
提示:生产环境中使用云服务器的时候,一般是云存储或云硬盘,如果这个云盘是基于AWS服务器的,当我们的云盘需要扩容时,可以直接购买空间在AWS空间通过鼠标点击完成扩容。但是,如果云盘是在阿里云或百度云的话,只能在单独购买一块云盘,再挂载这个新云盘,将原来的数据导过去再去掉原来的云盘,为了避免这种情况,我们的第一块云盘就应该创建成LVM,这样后续新增的也可以用LVM动态扩容。

四、iSCSI的持久化

大家发现上述通过命令方式搭建的iSCSI在重启服务后创建的共享存储消失了。上面主要给大家演示的是底层过程,接下来我们使用配置文件来实现持久化。

1、还原2台主机到开始配置前的状态,全部重新来;

2、安装服务器端软件;

yum -y install scsi-target-utils

3、服务器端编辑配置文件;

vim /etc/tgt/targets.conf
任意找一个区域添加下列内容:

   <target iqn.2021-01.com.vera:sdb>
          <backing-store /dev/sdb>
 #指定由谁来提供存储,iscsi的提供方式可以是块设备、格式化的分区、目录等,一个backing-store就是一个LUN,写多个就有多个LUN
          vendor_id vera
 #指定当前的发行商
          lun 6
 #LUN的id号
          </backing-store>
          incominguser iscsiuser iscsiuser
 #访问iqn的用户和密码,去掉这行就不需要认证
          initiator-address 192.168.45.0/24
 #根据用户地址进行的ACL访问控制,也可以注释不使用
    </target>
 #一个target区域就是一个iqn,以上就是一个iqn区域

service tgtd start && chkconfig tgtd on
#启动服务,设置开机自启

tgtadm --lld iscsi --mode target --op show
#显示iqn列表

4、ISCSI 客户端;

yum -y install iscsi-initiator-utils
vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2021-01.com.vera:sdb
#指定客户端默认要找的iqn标签
vim /etc/iscsi/iscsid.conf

node.session.auth.authmethod = CHAP
node.session.auth.username = iscsiuser
node.session.auth.password = iscsiuser

#注意别注释错位置,以上选项解除注释,设定用户名密码,这样就不用输入用户名密码可以直接登录
service iscsi start && chkconfig iscsi on
iscsiadm -m discovery -t st -p 192.168.45.11:3260
#第一次需要手动扫描找到iscsi存储
iscsiadm -m node -T iqn.2021-01.com.vera:sdb -p 192.168.45.11 -l
#第一次手动连接
fdisk /dev/sdb
#为连接的分区格式化
n==>p==>1==>(确定x2)==>w
mkfs.ext4 /dev/sdb1
mkdir /iscsimount
mount -t ext4 /dev/sdb1 /iscsimount/
cd /iscsimount && ls

5、客户端测试。

cd /iscsimount
date >> 1.txt && ll

你可能感兴趣的:(存储,分布式存储)