iscsi(共享存储)

了解什么是共享存储以及工程存储的必要性

  • iSCSI:Internet Small Computer System Interface,Internet小型计算机系统接口,又称为IP-SAN,是一种基于因特网及SCSI-3协议下的存储技术。

  • iSCSI的作用
    基于客户端和服务端架构的虚拟磁盘技术,服务端提供磁盘空间,客户端连接并且可以当成本地磁盘来用。

  • iSCSI磁盘的构成

    • backstore 后端存储:对应到服务端提供实际存储空间的设备,需要起一个管理名称。

    • target 磁盘组:是客户端的访问目标,作为一个框架,由多个lun组成。

    • lun 逻辑单元:每一个lun需要关联到某一个后端存储设备,在客户端会视为一块虚拟硬盘。

  • 简单来说共享存储如同其名字所隐喻的,是物理存储器中一段可由两个以上的进程共享的存储空间。共享存储段具有大小和物理存储地址。想要访问共享存储段的进程可以连接这段存储区域到自己的地址空间中任何适合的地方,其他进程也一样。这样,多个进程便可以访问相同的物理存储。
    在这里插入图片描述
    如上图:准备迁移

  1. 首先把vm01这个虚拟机的内存克隆一份出来(123),通过迁移网络发送到指定的rhevh上来,此时虚拟机还是在再rhevh1上运行的。
  2. 因为vm001还是在rhevh1上运行的,既然是正在运行的,所以内存里的数据肯定也是在不停的发生变化的比如多了456这些数据
    从123开始备份,456这些新的数据都没有出现在rhevh2上
    这之间要做个标记,这个标记叫做bitmap(位图)
    bitmap之后产生的数据一般是极少的
  3. 暂停vm001这个虚拟机,把bitmap之后所产生的数据发送到rhevh2上来,这样rhevh2上就有了所有的数据,且因为bitmap之后所产生的数据很少,所以很快就传输完了
  4. vm001在rhevh2上开始运行
  • 存储类型分为3大类:1、文件存储 2块存储 3、对象存储
    1、文件存储类似于我们共享一个文件夹
    NFS/SAMBA/ftp
    NAS-网络区域存储
    2、块存储: 把一个硬盘/分区 直接 给你共享出去
    fs
    iscsi
    SAN—存储区域网
    DAS—直接附加存储(性能低下)
    3、对象存储: 给你一个很大的空间,但这个空间是由很多硬盘组成的(这些硬盘不一定是一个机器上的),其中一个硬盘可以理解为一个osd,每个osd又由很多pg组成,如现在需要读取(或写入)1G的信息,其中每个osd有200M,这样读取速度就会很快。
    在这里插入图片描述

组成集群的每个服务器–称之为 节点(node)
集群是由若干存储服务器组成(只有系统和硬盘,加入集群中)

利用交换机使用集群

下图node1和node2是主备模式,node1坏了自动切换到node2,node1和node2中的sdb盘的内容都是集群中的sdb1盘里的内容,所以node1坏了数据并不会丢失,也可以配置成 高性能模式(双活),高性能的集群可以理解为“读写分离”,其本质是将访问压力分散到集群中的多个节点,但是没有分散存储压力。
在这里插入图片描述

利用网络使用集群

交换机很贵 一个也要几十上百万,所以 一般小企业是不会用交换机作为中转的,而是用网络
在node节点上看到的实际上和本地硬盘一模一样,也和本地硬盘一样的正常使用,但实际数据是存放在集群中的。
比如在node1上给sdb硬盘分区,被分区的硬盘实际是集群中的硬盘,因为node2和node1都是共享集群中的硬盘,所以在node1上分区硬盘后,node2上看到的硬盘也被分区了,所以需要分区硬盘只需要在一个节点上执行,如果node1上分区了再去node2上分区,会损坏磁盘数据。
在这里插入图片描述
上图中一个接口称之为一个lun,target中分配了多少个lun,node中就能读取到多少个硬盘。
其中fc-san就是交换机
iscsi-ip.san就是网络

配置iscsi服务器端

1、先在虚拟机中添加一块新的硬盘

在这里插入图片描述

2、创建分区:fdisk 设备名

  • fdisk创建分区,要共享多少g就创建多少g的逻辑盘
    创建完毕后刷新一下:partprobe 设备名
    在这里插入图片描述

3、安装targetcli:yum -y install targetcli*

  • 本地源就能直接安装yum -y install targetcli*
  • 安装完毕后启动target服务并设置开启自启: systemctl enable target --now
[root@node-1 ~]# yum -y install targetcli*
...
Installed:
  targetcli.noarch 0:2.1.fb46-7.el7                                                                                                                                                                                                         

Dependency Installed:
  libnl.x86_64 0:1.1.4-3.el7         pyparsing.noarch 0:1.5.6-9.el7       python-configshell.noarch 1:1.1.fb23-5.el7    python-ethtool.x86_64 0:0.8-7.el7    python-kmod.x86_64 0:0.9-4.el7    python-rtslib.noarch 0:2.1.fb63-13.el7   
  python-six.noarch 0:1.9.0-2.el7    python-urwid.x86_64 0:1.1.1-3.el7   

Complete!
[root@node-1 ~]# systemctl enable target --now
Created symlink from /etc/systemd/system/multi-user.target.wants/target.service to /usr/lib/systemd/system/target.service.
[root@node-1 ~]# systemctl status target
● target.service - Restore LIO kernel target configuration
   Loaded: loaded (/usr/lib/systemd/system/target.service; enabled; vendor preset: disabled)
   Active: active (exited) since Mon 2024-12-02 18:16:48 CST; 16s ago
  Process: 49084 ExecStart=/usr/bin/targetctl restore (code=exited, status=0/SUCCESS)
 Main PID: 49084 (code=exited, status=0/SUCCESS)

Dec 02 18:16:48 node-1 systemd[1]: Starting Restore LIO kernel target configuration...
Dec 02 18:16:48 node-1 target[49084]: No saved config file at /etc/target/saveconfig.json, ok, exiting
Dec 02 18:16:48 node-1 systemd[1]: Started Restore LIO kernel target configuration.
[root@node-1 ~]# 

4、进入子系统:targetcli

  • 输入targetcli直接进入子系统, ls /可以查看根目录
    注意 在子系统中的根目录 并非系统的根目录,而是子系统的根。
[root@node-1 ~]# targetcli 
Warning: Could not load preferences file /root/.targetcli/prefs.bin.
targetcli shell version 2.1.fb46
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.

/> 
/> ls /
o- / ......................................................................................................................... [...]
  o- backstores .............................................................................................................. [...]
  | o- block .................................................................................................. [Storage Objects: 0]
  | o- fileio ................................................................................................. [Storage Objects: 0]
  | o- pscsi .................................................................................................. [Storage Objects: 0]
  | o- ramdisk ................................................................................................ [Storage Objects: 0]
  o- iscsi ............................................................................................................ [Targets: 0]
  o- loopback ......................................................................................................... [Targets: 0]
/> 
  • 根目录中对应的关系如下图:
    在这里插入图片描述

5、iscsi中添加硬盘信息

  • iscsi中添加硬盘信息格式:/backstores/block create 自定义名称 设备名
    • 如:/backstores/block create block1 /dev/sda4(查看硬盘lsblk)
    • 添加完毕后可以执行 ls /查看已经添加的block信息
      在这里插入图片描述
      在这里插入图片描述
#一个新窗口
[root@node-1 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   50G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   49G  0 part 
  ├─centos-root 253:0    0   44G  0 lvm  /
  └─centos-swap 253:1    0    5G  0 lvm  [SWAP]
sdb               8:16   0   50G  0 disk 
├─sdb1            8:17   0    1G  0 part 
├─sdb2            8:18   0    1G  0 part /root/db2
├─sdb3            8:19   0    1G  0 part 
├─sdb4            8:20   0    1K  0 part 
├─sdb5            8:21   0    2G  0 part 
└─sdb6            8:22   0   16G  0 part [SWAP]
sr0              11:0    1  4.3G  0 rom  
[root@node-1 ~]# 


#子系统
/> /backstores
/block create ccx_disk1 /dev/sdb3
Created block storage object ccx_disk1 using /dev/sdb3.
/> ls /
o- / ......................................................................................................................... [...]
  o- backstores .............................................................................................................. [...]
  | o- block .................................................................................................. [Storage Objects: 1]
  | | o- ccx_disk1 .................................................................... [/dev/sdb3 (0 bytes) write-thru deactivated]
  | |   o- alua ................................................................................................... [ALUA Groups: 1]
  | |     o- default_tg_pt_gp ....................................................................... [ALUA state: Active/optimized]
  | o- fileio ................................................................................................. [Storage Objects: 0]
  | o- pscsi .................................................................................................. [Storage Objects: 0]
  | o- ramdisk ................................................................................................ [Storage Objects: 0]
  o- iscsi ............................................................................................................ [Targets: 0]
  o- loopback ......................................................................................................... [Targets: 0]
/> 
  • 删除添加的硬盘:/backstores/block delete 自定义的名称
    如:/backstores/block delete block1

在这里插入图片描述

/> 
/> /backstores/block/ delete ccx_disk1 
Deleted storage object ccx_disk1.
/> 
/> ls /
o- / ......................................................................................................................... [...]
  o- backstores .............................................................................................................. [...]
  | o- block .................................................................................................. [Storage Objects: 0]
  | o- fileio ................................................................................................. [Storage Objects: 0]
  | o- pscsi .................................................................................................. [Storage Objects: 0]
  | o- ramdisk ................................................................................................ [Storage Objects: 0]
  o- iscsi ............................................................................................................ [Targets: 0]
  o- loopback ......................................................................................................... [Targets: 0]
/> 
  • 重新创建2个block后面要用:/backstores/block create block1 /dev/sda5/backstores/block create block2 /dev/sda6
    因为需要2块,所以我把之前的主分区sda4删了多建了几个逻辑分区:lsblk 在这里插入图片描述
    在这里插入图片描述
/> /backstores/block create ccx_disk1 /dev/sdb3
Created block storage object ccx_disk1 using /dev/sdb3.
/> /backstores/block create ccx_disk2 /dev/sdb5
Created block storage object ccx_disk2 using /dev/sdb5.
/> 
/> ls /
o- / ......................................................................................................................... [...]
  o- backstores .............................................................................................................. [...]
  | o- block .................................................................................................. [Storage Objects: 2]
  | | o- ccx_disk1 .................................................................... [/dev/sdb3 (0 bytes) write-thru deactivated]
  | | | o- alua ................................................................................................... [ALUA Groups: 1]
  | | |   o- default_tg_pt_gp ....................................................................... [ALUA state: Active/optimized]
  | | o- ccx_disk2 .................................................................... [/dev/sdb5 (0 bytes) write-thru deactivated]
  | |   o- alua ................................................................................................... [ALUA Groups: 1]
  | |     o- default_tg_pt_gp ....................................................................... [ALUA state: Active/optimized]
  | o- fileio ................................................................................................. [Storage Objects: 0]
  | o- pscsi .................................................................................................. [Storage Objects: 0]
  | o- ramdisk ................................................................................................ [Storage Objects: 0]
  o- iscsi ............................................................................................................ [Targets: 0]
  o- loopback ......................................................................................................... [Targets: 0]
/> 

6、创建iscsi

  • 创建iscsi格式为:/iscsi create iqn(格式).年份-月份.*.com.自定义名称 (.*和.自定义名称两者必需有其一)
    如:/iscsi create iqn.2019-12.com.example.disk【.example可以不要的】
  • 删除iscsi:/iscsi delete 已创建的全名称
    如:/iscsi delete iqn.2019-12.com.example.disk
    在这里插入图片描述
    • 注:如果创建iscsi格式不对,会报错,无法创建成功:
      在这里插入图片描述
  • 创建一个iscsi 后面要用:/isisc create iqn.2019-12.com.disk
/> /iscsi create iqn.2024-12.com.disk
Created target iqn.2024-12.com.disk.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
/> ls /
o- / ......................................................................................................................... [...]
  o- backstores .............................................................................................................. [...]
  | o- block .................................................................................................. [Storage Objects: 2]
  | | o- ccx_disk1 .................................................................... [/dev/sdb3 (0 bytes) write-thru deactivated]
  | | | o- alua ................................................................................................... [ALUA Groups: 1]
  | | |   o- default_tg_pt_gp ....................................................................... [ALUA state: Active/optimized]
  | | o- ccx_disk2 .................................................................... [/dev/sdb5 (0 bytes) write-thru deactivated]
  | |   o- alua ................................................................................................... [ALUA Groups: 1]
  | |     o- default_tg_pt_gp ....................................................................... [ALUA state: Active/optimized]
  | o- fileio ................................................................................................. [Storage Objects: 0]
  | o- pscsi .................................................................................................. [Storage Objects: 0]
  | o- ramdisk ................................................................................................ [Storage Objects: 0]
  o- iscsi ............................................................................................................ [Targets: 1]
  | o- iqn.2024-12.com.disk .............................................................................................. [TPGs: 1]
  |   o- tpg1 ............................................................................................... [no-gen-acls, no-auth]
  |     o- acls .......................................................................................................... [ACLs: 0]
  |     o- luns .......................................................................................................... [LUNs: 0]
  |     o- portals .................................................................................................... [Portals: 1]
  |       o- 0.0.0.0:3260 ..................................................................................................... [OK]
  o- loopback ......................................................................................................... [Targets: 0]
/> 
/> /iscsi/ delete iqn.2024-12.com.disk
Deleted Target iqn.2024-12.com.disk.
/> /iscsi create iqn.2024-12.com.disk
Created target iqn.2024-12.com.disk.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
/> 
/> ls /
o- / ......................................................................................................................... [...]
  o- backstores .............................................................................................................. [...]
  | o- block .................................................................................................. [Storage Objects: 2]
  | | o- ccx_disk1 .................................................................... [/dev/sdb3 (0 bytes) write-thru deactivated]
  | | | o- alua ................................................................................................... [ALUA Groups: 1]
  | | |   o- default_tg_pt_gp ....................................................................... [ALUA state: Active/optimized]
  | | o- ccx_disk2 .................................................................... [/dev/sdb5 (0 bytes) write-thru deactivated]
  | |   o- alua ................................................................................................... [ALUA Groups: 1]
  | |     o- default_tg_pt_gp ....................................................................... [ALUA state: Active/optimized]
  | o- fileio ................................................................................................. [Storage Objects: 0]
  | o- pscsi .................................................................................................. [Storage Objects: 0]
  | o- ramdisk ................................................................................................ [Storage Objects: 0]
  o- iscsi ............................................................................................................ [Targets: 1]
  | o- iqn.2024-12.com.disk .............................................................................................. [TPGs: 1]
  |   o- tpg1 ............................................................................................... [no-gen-acls, no-auth]
  |     o- acls .......................................................................................................... [ACLs: 0]
  |     o- luns .......................................................................................................... [LUNs: 0]
  |     o- portals .................................................................................................... [Portals: 1]
  |       o- 0.0.0.0:3260 ..................................................................................................... [OK]
  o- loopback ......................................................................................................... [Targets: 0]
/> 

7、进入新建的新建的iscsi目录

  • 如进入之前创建iscsi目录的:cd /iscsi/iqn.2019-12.com.disk/tpgl
    在这里插入图片描述
/> cd /iscsi/iqn.2024-12.com.disk/
/iscsi/iqn.2024-12.com.disk> ls
o- iqn.2024-12.com.disk .................................................................................................. [TPGs: 1]
  o- tpg1 ................................................................................................... [no-gen-acls, no-auth]
    o- acls .............................................................................................................. [ACLs: 0]
    o- luns .............................................................................................................. [LUNs: 0]
    o- portals ........................................................................................................ [Portals: 1]
      o- 0.0.0.0:3260 ......................................................................................................... [OK]
/iscsi/iqn.2024-12.com.disk> 

8、创建acls(配置访问控制)

  • 新增acls
    acls是配置访问控制(即设置访问服务客户端声称的名字),就是说想要哪个ip或者ip段可以使用这个iscsi存储,格式为:/iscsi/iqn.2018-08.com.example.district18:system1/tpg1/acls/ create iscsi名称:允许的ip或者主机名 ,如果默认所有人都可以访问,那么这个可以不配置。
    如:我只允许10.233.3.226这个ip访问我: /iscsi/iqn.2018-08.com.example.district18:system1/tpg1/acls/ create iqn.2018-08.com.example.district18:10.233.3.226
/iscsi/iqn.2024-12.com.disk> /iscsi/iqn.2024-12.com.disk/tpg1/acls create iqn.2024-12.com.disk
Created Node ACL for iqn.2024-12.com.disk
/iscsi/iqn.2024-12.com.disk> ls 
o- iqn.2024-12.com.disk .................................................................................................. [TPGs: 1]
  o- tpg1 ................................................................................................... [no-gen-acls, no-auth]
    o- acls .............................................................................................................. [ACLs: 1]
    | o- iqn.2024-12.com.disk ..................................................................................... [Mapped LUNs: 0]
    o- luns .............................................................................................................. [LUNs: 0]
    o- portals ........................................................................................................ [Portals: 1]
      o- 0.0.0.0:3260 ......................................................................................................... [OK]
/iscsi/iqn.2024-12.com.disk> 
  • 删除acls:acls/ delete 创建的全称 (如果不在acls目录下,需要完整地址,如:/iscsi/iqn.2018-08.com.example.district18:system1/tpg1/acls)
    在这里插入图片描述
    创建一个后面要用:acls/ create iqn.2019-12.com:ccx (ccx是自定义名称,不要也不会报错,最好有)
/iscsi/iqn.2024-12.com.disk> /iscsi/iqn.2024-12.com.disk/tpg1/acls/ delete iqn.2024-12.com.disk
Deleted Node ACL iqn.2024-12.com.disk.
/iscsi/iqn.2024-12.com.disk> ls 
o- iqn.2024-12.com.disk .................................................................................................. [TPGs: 1]
  o- tpg1 ................................................................................................... [no-gen-acls, no-auth]
    o- acls .............................................................................................................. [ACLs: 0]
    o- luns .............................................................................................................. [LUNs: 0]
    o- portals ........................................................................................................ [Portals: 1]
      o- 0.0.0.0:3260 ......................................................................................................... [OK]
/iscsi/iqn.2024-12.com.disk> 
/iscsi/iqn.2024-12.com.disk> /iscsi/iqn.2024-12.com.disk/tpg1/acls create iqn.2024-12.com.disk
Created Node ACL for iqn.2024-12.com.disk
/iscsi/iqn.2024-12.com.disk> /iscsi/iqn.2024-12.com.disk/tpg1/acls create iqn.2024-12.com.disk:ccx
Created Node ACL for iqn.2024-12.com.disk:ccx
/iscsi/iqn.2024-12.com.disk> ls
o- iqn.2024-12.com.disk .................................................................................................. [TPGs: 1]
  o- tpg1 ................................................................................................... [no-gen-acls, no-auth]
    o- acls .............................................................................................................. [ACLs: 2]
    | o- iqn.2024-12.com.disk ..................................................................................... [Mapped LUNs: 0]
    | o- iqn.2024-12.com.disk:ccx ................................................................................. [Mapped LUNs: 0]
    o- luns .............................................................................................................. [LUNs: 0]
    o- portals ........................................................................................................ [Portals: 1]
      o- 0.0.0.0:3260 ......................................................................................................... [OK]
/iscsi/iqn.2024-12.com.disk> 

9、luns里添加设备

因为iscsi是虚拟的,所以需要指定设备,所以需要在luns里先添加设备(block中的硬盘)

  • 新增格式为:luns/ create /backstores/block/添加的名称
    如:我之前添加硬盘名词是block1和block2:luns/ create /backstores/block/block1 , luns/ create /backtores/block/block2
    在这里插入图片描述
/iscsi/iqn.2024-12.com.disk> cd tpg1/
/iscsi/iqn.20...com.disk/tpg1> pwd
/iscsi/iqn.2024-12.com.disk/tpg1
/iscsi/iqn.20...com.disk/tpg1> 
/iscsi/iqn.20...com.disk/tpg1> luns/ create /backstores/block/ccx_disk
/backstores/block/ccx_disk1  /backstores/block/ccx_disk2  
/iscsi/iqn.20...com.disk/tpg1> luns/ create /backstores/block/ccx_disk1
Created LUN 0.
Created LUN 0->0 mapping in node ACL iqn.2024-12.com.disk
/iscsi/iqn.20...com.disk/tpg1> luns/ create /backstores/block/ccx_disk2
Created LUN 1.
Created LUN 1->1 mapping in node ACL iqn.2024-12.com.disk
/iscsi/iqn.20...com.disk/tpg1> 
/iscsi/iqn.20...com.disk/tpg1> ls
o- tpg1 ..................................................................................................... [no-gen-acls, no-auth]
  o- acls ................................................................................................................ [ACLs: 1]
  | o- iqn.2024-12.com.disk ....................................................................................... [Mapped LUNs: 2]
  |   o- mapped_lun0 ................................................................................... [lun0 block/ccx_disk1 (rw)]
  |   o- mapped_lun1 ................................................................................... [lun1 block/ccx_disk2 (rw)]
  o- luns ................................................................................................................ [LUNs: 2]
  | o- lun0 ....................................................................... [block/ccx_disk1 (/dev/sdb3) (default_tg_pt_gp)]
  | o- lun1 ....................................................................... [block/ccx_disk2 (/dev/sdb5) (default_tg_pt_gp)]
  o- portals .......................................................................................................... [Portals: 1]
    o- 0.0.0.0:3260 ........................................................................................................... [OK]
/iscsi/iqn.20...com.disk/tpg1> 
  • luns里删除设备 luns/格式: delete lun* (ls查看序号,lun可以不要,直接跟序号即可)
    如:我刚才创建了2个 就是lun0和lun1,所以:luns/ delete lun0 , luns/ delete lun1 在这里插入图片描述
    创建2个待会要用:luns/ create /backstores/block/block1 , luns/ create /backstores/block/block2
/iscsi/iqn.20...com.disk/tpg1> ls
o- tpg1 ..................................................................................................... [no-gen-acls, no-auth]
  o- acls ................................................................................................................ [ACLs: 1]
  | o- iqn.2024-12.com.disk ....................................................................................... [Mapped LUNs: 0]
  o- luns ................................................................................................................ [LUNs: 0]
  o- portals .......................................................................................................... [Portals: 1]
    o- 0.0.0.0:3260 ........................................................................................................... [OK]
/iscsi/iqn.20...com.disk/tpg1> 
/iscsi/iqn.20...com.disk/tpg1> luns/ create /backstores/block/ccx_disk1
Created LUN 0.
Created LUN 0->0 mapping in node ACL iqn.2024-12.com.disk
/iscsi/iqn.20...com.disk/tpg1> luns/ create /backstores/block/ccx_disk2
Created LUN 1.
Created LUN 1->1 mapping in node ACL iqn.2024-12.com.disk
/iscsi/iqn.20...com.disk/tpg1> ls
o- tpg1 ..................................................................................................... [no-gen-acls, no-auth]
  o- acls ................................................................................................................ [ACLs: 1]
  | o- iqn.2024-12.com.disk ....................................................................................... [Mapped LUNs: 2]
  |   o- mapped_lun0 ................................................................................... [lun0 block/ccx_disk1 (rw)]
  |   o- mapped_lun1 ................................................................................... [lun1 block/ccx_disk2 (rw)]
  o- luns ................................................................................................................ [LUNs: 2]
  | o- lun0 ....................................................................... [block/ccx_disk1 (/dev/sdb3) (default_tg_pt_gp)]
  | o- lun1 ....................................................................... [block/ccx_disk2 (/dev/sdb5) (default_tg_pt_gp)]
  o- portals .......................................................................................................... [Portals: 1]
    o- 0.0.0.0:3260 ........................................................................................................... [OK]
/iscsi/iqn.20...com.disk/tpg1> 

10、portals(端口)

  • 改端口和限制ip的作用,如果没需求可以跳过。
  • portals的默认端口是3260,且对所有ip生效:ls可以查看portals,luns下面是portals,这就是端口,0.0.0.0 3260 意思是 3260端口是对所有ip开放的:
    在这里插入图片描述
  • 指定端口或ip
    说明: poerals的ip是自己(服务端)的IP, 指定IP和0.0.0.0的区别是:如果服务端有多个ip,0.0.0.0就全部放开了,但如果服务端只有一个IP,指定IP和0.0.0.0就没有区别!
    • 如果需要指定ip和端口,格式为:完整路径/portals/ create ip_address=ip ip_port=port
    • 如:我把10.233.3.226的端口指定为666:portals/ create ip_address=10.233.3.226 ip_port=666 (注:我现在在portals目录下,如果不在portals目录,需要完整路径,如:/iscsi/iqn.2018-08.com.example.district18:system1/tpg1/portals
  • 可以删除该条目:portals/ delete 0.0.0.0 ip_port=port
    如:删除 0.0.0.0 的全部端口开放: portals/ delete 0 0 0 0 ip_port=3260
    如:下图中的 10.233.3.227 3260(就是只对227这个ip开放该端口,注意,226和227都是在同一个服务器上的ip)
    在这里插入图片描述
  • 改回对所有ip开放3260端口:portals/ create 0.0.0.0 3260在这里插入图片描述
  • 至此配置完毕,可以exit退出子系统了,如果你退出后没报错,提示的是下面的正常保存,但重新进入子系统发现 ls / 没内容了,很遗憾,系统bug原因导致你的操作没能被保存,需要重新做一遍
    我就很不幸的遇到了这种问题,为了避免这种情况发生,可以执行下面2个命令手动保存一下再退出,就不会有问题了
/> cd /
/> saveconfig 
Configuration saved to /etc/target/saveconfig.json
/> exit
Global pref auto_save_on_exit=true
Configuration saved to /etc/target/saveconfig.json
[root@node-1 ~]# 
/> 
/iscsi/iqn.20...com.disk/tpg1> exit
Global pref auto_save_on_exit=true
Configuration saved to /etc/target/saveconfig.json
[root@node-1 ~]# targetcli 
targetcli shell version 2.1.fb46
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.

/> 
/> ls /
o- / ......................................................................................................................... [...]
  o- backstores .............................................................................................................. [...]
  | o- block .................................................................................................. [Storage Objects: 0]
  | o- fileio ................................................................................................. [Storage Objects: 0]
  | o- pscsi .................................................................................................. [Storage Objects: 0]
  | o- ramdisk ................................................................................................ [Storage Objects: 0]
  o- iscsi ............................................................................................................ [Targets: 0]
  o- loopback ......................................................................................................... [Targets: 0]
/> cd /backstores/
/backstores> ls
o- backstores ................................................................................................................ [...]
  o- block .................................................................................................... [Storage Objects: 0]
  o- fileio ................................................................................................... [Storage Objects: 0]
  o- pscsi .................................................................................................... [Storage Objects: 0]
  o- ramdisk .................................................................................................. [Storage Objects: 0]
/backstores> 
  • 我重新弄了一遍,下面是快速创建的所需命令,并且这次没问题了,退出后再次进入内容依然存在
#快速创建的所需命令
 /backstores/block create ccx_disk1 /dev/sdb3
/backstores/block create ccx_disk2 /dev/sdb5
 /iscsi create iqn.2024-12.com.disk
/iscsi/iqn.2024-12.com.disk/tpg1/acls create iqn.2024-12.com.disk:ccx

tpg1/luns create /backstores/block/ccx_disk1
tpg1/luns create /backstores/block/ccx_disk2

#退出后再次进入内容依然存在
[root@node-1 ~]# targetcli 
targetcli shell version 2.1.fb46
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.

/> ls
o- / ......................................................................................................................... [...]
  o- backstores .............................................................................................................. [...]
  | o- block .................................................................................................. [Storage Objects: 2]
  | | o- ccx_disk1 ...................................................................... [/dev/sdb3 (0 bytes) write-thru activated]
  | | | o- alua ................................................................................................... [ALUA Groups: 1]
  | | |   o- default_tg_pt_gp ....................................................................... [ALUA state: Active/optimized]
  | | o- ccx_disk2 ...................................................................... [/dev/sdb5 (0 bytes) write-thru activated]
  | |   o- alua ................................................................................................... [ALUA Groups: 1]
  | |     o- default_tg_pt_gp ....................................................................... [ALUA state: Active/optimized]
  | o- fileio ................................................................................................. [Storage Objects: 0]
  | o- pscsi .................................................................................................. [Storage Objects: 0]
  | o- ramdisk ................................................................................................ [Storage Objects: 0]
  o- iscsi ............................................................................................................ [Targets: 1]
  | o- iqn.2024-12.com.disk .............................................................................................. [TPGs: 1]
  |   o- tpg1 ............................................................................................... [no-gen-acls, no-auth]
  |     o- acls .......................................................................................................... [ACLs: 2]
  |     | o- iqn.2024-12.com.disk ................................................................................. [Mapped LUNs: 2]
  |     | | o- mapped_lun0 ............................................................................. [lun0 block/ccx_disk1 (rw)]
  |     | | o- mapped_lun1 ............................................................................. [lun1 block/ccx_disk2 (rw)]
  |     | o- iqn.2024-12.com.disk:ccx ............................................................................. [Mapped LUNs: 2]
  |     |   o- mapped_lun0 ............................................................................. [lun0 block/ccx_disk1 (rw)]
  |     |   o- mapped_lun1 ............................................................................. [lun1 block/ccx_disk2 (rw)]
  |     o- luns .......................................................................................................... [LUNs: 2]
  |     | o- lun0 ................................................................. [block/ccx_disk1 (/dev/sdb3) (default_tg_pt_gp)]
  |     | o- lun1 ................................................................. [block/ccx_disk2 (/dev/sdb5) (default_tg_pt_gp)]
  |     o- portals .................................................................................................... [Portals: 1]
  |       o- 0.0.0.0:3260 ..................................................................................................... [OK]
  o- loopback ......................................................................................................... [Targets: 0]
/> 
配置完毕后exit退出报错和修改acls名称方式
  • 如果配置过程中很顺利没有报错,但exit退出时报错,首先考虑是不是版本问题,cat /etc/redhat-release 查看当前版本,然后在查看你挂载的源是不是和版本同一个版本,如果是网络源 基本上不会因为版本导致exit报错。
    版本和本地源一样的意思如下图:
    在这里插入图片描述
  • 退出后第三句话提示 文件已经保存到该文件下,就是说,如果我要更改acls中创建的名称,直接到该目录下定位到改行,直接改即可(就不需要再进入到子系统删除后重新建):vi /etc/target/saveconfig.json
    在这里插入图片描述
    注:修改后需要重启服务后生效:systemctl restart target

11、重启服务:systemctl restart target

[root@node-1 ~]# systemctl restart target
[root@node-1 ~]# systemctl is-active target
active
[root@node-1 ~]# 

12、防火墙设置

  • 如果防火墙是打开的,需要把3260端口添加到防火墙:
firewall-cmd  --add-port=3260/tcp    
firewall-cmd  --add-port=3260/tcp --permanent
  • 没特殊需求可以直接关闭防火墙
[root@node-1 ~]# systemctl is-active firewalld
inactive
[root@node-1 ~]# 
[root@node-1 ~]# systemctl is-active iptables
inactive
[root@node-1 ~]# 

配置iscsi客户端

1、安装iscsi的包: yum -y install iscsi*

[root@node-2 ~]# yum -y install iscsi*
。。。
Installed:
  iscsi-initiator-utils.x86_64 0:6.2.0.874-10.el7                                                                  iscsi-initiator-utils-iscsiuio.x86_64 0:6.2.0.874-10.el7                                                                 

Complete!
[root@node-2 ~]#

2、 配置acls名称

vi /etc/iscsi/initiatorname.iscsi
把*Name=后面改为之前定义的acls名称 【不会查看名称的看下面一步】
在这里插入图片描述

[root@node-2 ~]# cat /etc/iscsi/initiatorname.iscsi
#InitiatorName=iqn.1994-05.com.redhat:482aa3d6784a
InitiatorName=iqn.2024-12.com.disk
[root@node-2 ~]# 
  • 查看服务端配置的acls名称 :targetcli (进入子系统后),ls / 即可看到
    在这里插入图片描述

3、重启服务并设置开机自启动

systemctl restart iscsid  
systemctl enable iscsid

在这里插入图片描述

4、做一个发现的操作,发现target的名字

iscsiadm -m discovery -t st -p 服务器ip
如:我的服务器ip是226(现在客户端ip是225):iscsiadm -m discovery -t st -p 10.233.3.226
在这里插入图片描述

[root@node-2 ~]# iscsiadm -m discovery -t st -p 192.168.59.141
192.168.59.141:3260,1 iqn.2024-12.com.disk
[root@node-2 ~]# 
  • 查看已经连接的设备:iscsiadm -m session
  • 查看发现纪录:iscsiadm -m discovery
  • 删除发现纪录:iscisadm -m discovery -p 服务端ip -o delete
    在这里插入图片描述
  • 重新做一个发现纪录 待会要用:iscsiadm -m discovery -t st -p 10.233.3.226
发现报错no route to host处理

一开始我添加是报错的(no route to host)报错如下图:
在这里插入图片描述
报错解决:我去看了 /etc/hosts里面,没有添加解析,我添加了解析后重试 依然报错,然后查看当前防火墙,发现是打开的,我就把防火墙关了依然不行,我就去看服务器的防火墙,依然是打开的,把服务器防火墙关闭后,成功。因为这是测试机 我以为我的防火墙是关闭的,就没有添加3260端口,所以如果防火墙必须打开,把端口添加进去即可。 下图 是查看防火墙以及关闭防火墙:
在这里插入图片描述

5、把服务器端配置的硬盘添加到客户端(也就是登陆)

如果登陆报错看下面 登陆报错处理。

  • 命令介绍

    • 不指定组登陆:iscsiadm -m discovery -t st -p 服务器ip -l (是小写L)【不建议用】
    • 指定iscsi组登陆:iscsiadm -m node -T iscsi名称 -p 服务器ip -l(是小L)
  • 添加之前先查看客户端硬盘信息:lsblk,只有sda
    在这里插入图片描述

  • 服务端查看iscsi名称:targetcli (进入子系统后),ls / 即可看到:
    在这里插入图片描述

  • 以我的为例,不指定组登陆:iscsiadm -m discovery -t st -p 10.233.3.226 -l (很方便 很好记,ip后面不加-l 就是查看,加-l就是登陆) ,我
    -如果只有一个iqn还无所谓,如果多个iqn会发生什么,我也不知道。。。没做测试,所以最好养成指定组的方式挂载
    iqn中有多个lun,会一次性全部发现,如下,iqn中的2个lun都出现了【sdb和sdc】

[root@node-2 ~]# iscsiadm -m discovery -t st -p 192.168.59.141 -l
192.168.59.141:3260,1 iqn.2024-12.com.disk
Logging in to [iface: default, target: iqn.2024-12.com.disk, portal: 192.168.59.141,3260] (multiple)
Login to [iface: default, target: iqn.2024-12.com.disk, portal: 192.168.59.141,3260] successful.
[root@node-2 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   50G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   49G  0 part 
  ├─centos-root 253:0    0   44G  0 lvm  /
  └─centos-swap 253:1    0    5G  0 lvm  [SWAP]
sdb               8:16   0    1G  0 disk 
sdc               8:32   0    2G  0 disk 
sr0              11:0    1  4.3G  0 rom  
[root@node-2 ~]# 
  • 指定组登陆:iscsiadm -m node -T iqn.2019-12.com.disk -p 10.233.3.226 -l
    登陆之前lsblk看不到服务器的硬盘,登陆成功以后lsblk就会看到服务器配置的硬盘信息了。
    在这里插入图片描述
  • 至此,iscsi就配置完成了,后面就是挂载登陆的操作。
    退出登录看下面【退出登录iscsi】
登陆报错处理
  • 登陆报错截图
    在这里插入图片描述
  • 处理:
    只有一个原因,客户端 vi /etc/iscsi/initiatorname.iscsi 里面的路径指定错误,指定的是acls的名称,去检查是不是指定为iscsi的名称了:
    在这里插入图片描述

6、格式化并挂载iscsi(要做发现和登陆以后再挂载)

  • 简单来说就是登录以后,这些信息就相当于是本地新添加的硬盘
  • 分区:fdisk 设备名 (注意,这个设备虽然是iscsi分享的设备,但和本地设备使用一模一样)【lsblk可以查看】
[root@node-2 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   50G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   49G  0 part 
  ├─centos-root 253:0    0   44G  0 lvm  /
  └─centos-swap 253:1    0    5G  0 lvm  [SWAP]
sdb               8:16   0    1G  0 disk 
sdc               8:32   0    2G  0 disk 
sr0              11:0    1  4.3G  0 rom  
[root@node-2 ~]#
[root@node-2 ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 
First sector (8192-2097151, default 8192): 
Using default value 8192
Last sector, +sectors or +size{K,M,G} (8192-2097151, default 2097151): 
Using default value 2097151
Partition 1 of type Linux and of size 1020 MiB is set

Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): p

Disk /dev/sdb: 1073 MB, 1073741824 bytes, 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 4194304 bytes
Disk label type: dos
Disk identifier: 0xa5d3309b

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            8192     2097151     1044480   8e  Linux LVM

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[root@node-2 ~]# partprobe /dev/sdb
[root@node-2 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   50G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   49G  0 part 
  ├─centos-root 253:0    0   44G  0 lvm  /
  └─centos-swap 253:1    0    5G  0 lvm  [SWAP]
sdb               8:16   0    1G  0 disk 
└─sdb1            8:17   0 1020M  0 part 
sdc               8:32   0    2G  0 disk 
sr0              11:0    1  4.3G  0 rom  
[root@node-2 ~]# 
  • 格式化:mkfs.ext4(ext4可以换成xfs) 设备名(注意,这个设备名是iscsi分享的设备名,不是本地设备【lsblk可以查看】
    临时挂载:mount 格式化后的设备名 挂载路径
[root@node-2 ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=1024 blocks
65280 inodes, 261120 blocks
13056 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8160 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

[root@node-2 ~]# mkdir /test
[root@node-2 ~]# mount /dev/sdb1 /test
[root@node-2 ~]# cd /test
[root@node-2 test]# touch test{1..10}
[root@node-2 test]# ls
lost+found  test1  test10  test2  test3  test4  test5  test6  test7  test8  test9
[root@node-2 test]# 
  • 上述是临时挂载,如果需要永久挂载,需要把挂载信息写入到/etc/fsteb中,和本地硬盘一样,但在第四项,需要加上_netdev必须加上,不然开机系统不能正常启动(因为不加_netdev就是在本地找硬盘分区,但本地并不存在这个硬盘分区,所以系统起不来)。
    添加完毕以后执行 mount -a验证,如果没报错则证明没问题在这里插入图片描述
[root@node-2 ~]# tail -n1 /etc/fstab
/dev/sdb1 /test ext4 defaults,_netdev 0 0
[root@node-2 ~]# mount -a
[root@node-2 ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   44G  1.1G   43G   3% /
devtmpfs                 7.8G     0  7.8G   0% /dev
tmpfs                    7.8G     0  7.8G   0% /dev/shm
tmpfs                    7.8G   12M  7.8G   1% /run
tmpfs                    7.8G     0  7.8G   0% /sys/fs/cgroup
/dev/sda1               1014M  146M  869M  15% /boot
tmpfs                    1.6G     0  1.6G   0% /run/user/0
//192.168.59.141/ccx      44G  1.2G   43G   3% /data1
/dev/sdb1                988M  2.6M  919M   1% /test
[root@node-2 ~]# 

7、查看已连接设备

查看已经连接的设备:iscsiadm -m session
在这里插入图片描述
查看详细:iscsiadm -m session -P1 (1可替换为1,2,3,1-3分别代表详细程度)
在这里插入图片描述

[root@node-2 ~]# iscsiadm -m session
tcp: [1] 192.168.59.141:3260,1 iqn.2024-12.com.disk (non-flash)
[root@node-2 ~]# iscsiadm -m session -P2
Target: iqn.2024-12.com.disk (non-flash)
        Current Portal: 192.168.59.141:3260,1
        Persistent Portal: 192.168.59.141:3260,1
                **********
                Interface:
                **********
                Iface Name: default
                Iface Transport: tcp
                Iface Initiatorname: iqn.2024-12.com.disk
                Iface IPaddress: 192.168.59.142
                Iface HWaddress: <empty>
                Iface Netdev: <empty>
                SID: 1
                iSCSI Connection State: LOGGED IN
                iSCSI Session State: LOGGED_IN
                Internal iscsid Session State: NO CHANGE
                *********
                Timeouts:
                *********
                Recovery Timeout: 120
                Target Reset Timeout: 30
                LUN Reset Timeout: 30
                Abort Timeout: 15
                *****
                CHAP:
                *****
                username: <empty>
                password: ********
                username_in: <empty>
                password_in: ********
                ************************
                Negotiated iSCSI params:
                ************************
                HeaderDigest: None
                DataDigest: None
                MaxRecvDataSegmentLength: 262144
                MaxXmitDataSegmentLength: 262144
                FirstBurstLength: 65536
                MaxBurstLength: 262144
                ImmediateData: Yes
                InitialR2T: Yes
                MaxOutstandingR2T: 1
[root@node-2 ~]# 

8、退出登陆iscsi

  • 不想用已添加的硬盘了,退出登陆即可:
    • 查看当前的 iSCSI 会话:iscsiadm -m session -o show
    • iscsiadm -m node -T iscsi名称 -p 服务器ip -u 【iscsi名称直接看/etc/iscsi/initiatorname.iscsi配置文件中InitiatorName=后面的内容即可】
    • iscsiadm -m node --logoutall=all / iscsiadm -m node -u ALL (2个均为注销所有连接)
      如:iscsiadm -m node -T iqn.2019-12.com.disk -p 10.233.3.226 -u
      在这里插入图片描述

[root@node-2 ~]# cat /etc/iscsi/initiatorname.iscsi 
#InitiatorName=iqn.1994-05.com.redhat:482aa3d6784a
InitiatorName=iqn.2024-12.com.disk
[root@node-2 ~]# 
[root@node-2 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   50G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   49G  0 part 
  ├─centos-root 253:0    0   44G  0 lvm  /
  └─centos-swap 253:1    0    5G  0 lvm  [SWAP]
sdb               8:16   0    1G  0 disk 
sdc               8:32   0    2G  0 disk 
sr0              11:0    1  4.3G  0 rom  
[root@node-2 ~]#
[root@node-2 ~]# iscsiadm -m session -o show
tcp: [1] 192.168.59.141:3260,1 iqn.2024-12.com.disk (non-flash)
[root@node-2 ~]# iscsiadm -m node -T iqn.2024-12.com.disk -p 192.168.59.141 -u
Logging out of session [sid: 1, target: iqn.2024-12.com.disk, portal: 192.168.59.141,3260]
Logout of [sid: 1, target: iqn.2024-12.com.disk, portal: 192.168.59.141,3260] successful.
[root@node-2 ~]# iscsiadm -m session -o show
iscsiadm: No active sessions.
[root@node-2 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   50G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   49G  0 part 
  ├─centos-root 253:0    0   44G  0 lvm  /
  └─centos-swap 253:1    0    5G  0 lvm  [SWAP]
sr0              11:0    1  4.3G  0 rom  
[root@node-2 ~]# 

9、删除iscsi硬盘

  • 上面退出后只是相当于注销,重启后共享存储又存在了
[root@node-2 ~]# reboot 

[root@node-2 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   50G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   49G  0 part 
  ├─centos-root 253:0    0   44G  0 lvm  /
  └─centos-swap 253:1    0    5G  0 lvm  [SWAP]
sdb               8:16   0    1G  0 disk 
sdc               8:32   0    2G  0 disk 
sr0              11:0    1  4.3G  0 rom  
[root@node-2 ~]# 
  • 所以确定不使用了需要删除存储硬盘, 删除前需要先退出登录:
    • 删除所有:iscsiadm -m node -o delete
    • 删除指定组:iscsiadm -m node -T iscsi名称 -p 服务器ip -o delete【iscsi名称直接看/etc/iscsi/initiatorname.iscsi配置文件中InitiatorName=后面的内容即可】
[root@node-2 ~]# iscsiadm -m session -o show
tcp: [1] 192.168.59.141:3260,1 iqn.2024-12.com.disk (non-flash)
[root@node-2 ~]# iscsiadm -m node -T iqn.2024-12.com.disk -p 192.168.59.141 -u
Logging out of session [sid: 1, target: iqn.2024-12.com.disk, portal: 192.168.59.141,3260]
Logout of [sid: 1, target: iqn.2024-12.com.disk, portal: 192.168.59.141,3260] successful.
[root@node-2 ~]# iscsiadm -m session -o show
iscsiadm: No active sessions.
[root@node-2 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   50G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   49G  0 part 
  ├─centos-root 253:0    0   44G  0 lvm  /
  └─centos-swap 253:1    0    5G  0 lvm  [SWAP]
sr0              11:0    1  4.3G  0 rom  
[root@node-2 ~]# 
[root@node-2 ~]# iscsiadm -m node -T iqn.2024-12.com.disk -p 192.168.59.141 -o delete
[root@node-2 ~]# 
删除报错session exists

报错如下,提示被占用,如果挂载了,先退出挂载,然后退出登录,再删除就可以了

[root@node-2 ~]# iscsiadm -m node -T iqn.2024-12.com.disk -p 192.168.59.141 -o delete
iscsiadm: This command will remove the record [iface: default, target: iqn.2024-12.com.disk, portal: 192.168.59.141,3260], but a session is using it. Logout session then rerun command to remove record.
iscsiadm: Could not execute operation on all records: session exists
[root@node-2 ~]# 

10、重新发现登录的场景测试

  • 我重新发现和登录后,数据依然存在,证实删除操作不影响iscsi数据。
[root@node-2 ~]# iscsiadm -m discovery -t st -p 192.168.59.141
192.168.59.141:3260,1 iqn.2024-12.com.disk
[root@node-2 ~]# iscsiadm -m discovery -t st -p 192.168.59.141 -l
192.168.59.141:3260,1 iqn.2024-12.com.disk
Logging in to [iface: default, target: iqn.2024-12.com.disk, portal: 192.168.59.141,3260] (multiple)
Login to [iface: default, target: iqn.2024-12.com.disk, portal: 192.168.59.141,3260] successful.
[root@node-2 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   50G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   49G  0 part 
  ├─centos-root 253:0    0   44G  0 lvm  /
  └─centos-swap 253:1    0    5G  0 lvm  [SWAP]
sdb               8:16   0    1G  0 disk 
└─sdb1            8:17   0 1020M  0 part 
sdc               8:32   0    2G  0 disk 
sr0              11:0    1  4.3G  0 rom  
[root@node-2 ~]# mount /dev/sdb1 /test/
[root@node-2 ~]# ls /test/
lost+found  test1  test10  test2  test3  test4  test5  test6  test7  test8  test9
[root@node-2 ~]# 

11、测试多台主机使用同一个iSCSI数据

  • 这台服务器正常登录该iqn,我们再用另外一台服务器发现登录同一个iqn,
    发现里面数据能正常查看,也能正常创建文件,证实可以多个服务器用同一个iSCSI的lun数据
[root@control test]# tail -n1 /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2024-12.com.disk
[root@control test]# 
[root@control ~]# systemctl restart iscsid  
[root@control ~]# iscsiadm -m discovery -t st -p 192.168.59.141
192.168.59.141:3260,1 iqn.2024-12.com.disk
[root@control ~]# iscsiadm -m discovery -t st -p 192.168.59.141 -l
192.168.59.141:3260,1 iqn.2024-12.com.disk
Logging in to [iface: default, target: iqn.2024-12.com.disk, portal: 192.168.59.141,3260] (multiple)
Login to [iface: default, target: iqn.2024-12.com.disk, portal: 192.168.59.141,3260] successful.
[root@control ~]# lsblk
NAME              MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                 8:0    0    50G  0 disk 
├─sda1              8:1    0     1G  0 part /boot
└─sda2              8:2    0    49G  0 part 
  ├─centos-root   253:0    0     1T  0 lvm  /
  └─centos-swap   253:1    0     5G  0 lvm  [SWAP]
sdb                 8:16   0    20G  0 disk 
├─sdb1              8:17   0    10G  0 part 
│ └─centos-root   253:0    0     1T  0 lvm  /
└─sdb2              8:18   0    10G  0 part 
  └─vgtest-lvtest 253:2    0    10G  0 lvm  
sdc                 8:32   0   2.1T  0 disk 
├─sdc1              8:33   0   976M  0 part 
├─sdc2              8:34   0 929.9M  0 part 
└─sdc3              8:35   0   1.1T  0 part 
  └─centos-root   253:0    0     1T  0 lvm  /
sdd                 8:48   0     1G  0 disk 
└─sdd1              8:49   0  1020M  0 part 
sde                 8:64   0     2G  0 disk 
sr0                11:0    1   4.3G  0 rom  /centos
[root@control ~]# 
[root@control ~]# mkdir /test
[root@control ~]# mount /dev/sdd1 /test
[root@control ~]# ls /test/
lost+found  test1  test10  test2  test3  test4  test5  test6  test7  test8  test9
[root@control ~]# cd /test/
[root@control test]# ls
lost+found  test1  test10  test2  test3  test4  test5  test6  test7  test8  test9
[root@control test]# touch test_now{1..10}
[root@control test]# ls
lost+found  test1  test10  test2  test3  test4  test5  test6  test7  test8  test9  test_now1  test_now10  test_now2  test_now3  test_now4  test_now5  test_now6  test_now7  test_now8  test_now9
[root@control test]# 
  • 但是,我发现多台使用的时候,数据并不是实时同步的,比如我b服务器创建的数据,a服务器中要重新挂载以后才能看见。
    所以虽然多台服务器能同时使用一个iSCSI数据,但不建议这么用。数据不会同步。
[root@node-2 ~]# ls /test/
lost+found  test1  test10  test2  test3  test4  test5  test6  test7  test8  test9
[root@node-2 ~]# 
[root@node-2 ~]# cd /test/
[root@node-2 test]# ls
lost+found  test1  test10  test2  test3  test4  test5  test6  test7  test8  test9
[root@node-2 test]# cd
[root@node-2 ~]# umount /test/
[root@node-2 ~]# mount /dev/sdb1 /test
[root@node-2 ~]# cd /test
[root@node-2 test]# ls
lost+found  test1  test10  test2  test3  test4  test5  test6  test7  test8  test9  test_now1  test_now10  test_now2  test_now3  test_now4  test_now5  test_now6  test_now7  test_now8  test_now9
[root@node-2 test]# 

客户端配置扩展实验

  • 扩展实验,就是,我在服务器上配置了2组iscsi,想在客户端把这2组都配上去
    • 正常来说,一个主机只能配置一个iscsi数据
    • 我用取巧的方式虽然一台主机配置了多个iscsi数据,并且能正常使用,但毕竟没有长期使用,不知道会不会有什么副作用。只是证明这种方式可行而已。 生产环境不建议这么搞。

常规场景不能配置

  • 经过种种实验,最终发现 ,客户端配置文件中,不允许同时写入两个秘钥;详细如下图:
    服务器配置,2组iscsi:
    在这里插入图片描述
  • 客户端配置:先写入文件vi /etc/iscsi/initiatorname.iscsi
    在这里插入图片描述
  • 重启:systemctl restart iscsid
  • 发现:iscsiadm -m discovery -t st -p 10.233.3.226
    在这里插入图片描述
  • 登陆:iscsiadm -m discovery -t st -p 10.233.3.226 -l (挂载所有)
    在这里插入图片描述

非常规场景配置可行

  • 原因:系统只认配置文件/etc/iscsi/initiatorname.iscsi的其中一组,但这种情况想把2组都挂上去怎么弄呢!

    • 刚才执行全部登陆的时候成功了一组,所以我们现在去配置文件中把成功的那组注释掉,重启服务,再次挂载即可!!
    • 如:我刚才成功的是new,现在去配置文件把new注释掉,然后重启服务:
      在这里插入图片描述
  • 再次登陆,哈哈哈,成功了。我真是鬼才
    为了测试能正常使用,我分区 格式化并挂载了/etc/iscsi/initiatorname.iscsi 文件中已经注释的文件,证明该方法 能用
    在这里插入图片描述

  • 当lsblk能看到硬盘以后,即全部配置完成,然后就可以正常使用了,但需要分区,格式化然后挂载目录,因为现在看到的其实是新盘,也就是相当于重新添加的硬盘。 【上面步骤6】
    查看完整名称:fdisk -l
    在这里插入图片描述

  • 分区:fdisk 设备名
    格式化:mkfs.ext4(xfs) 设备名
    临时挂载:mount 设备名 挂载路径
    命令:
    在这里插入图片描述
    在这里插入图片描述

  • 上述是临时挂载,如果需要永久挂载,需要吧信息写入到fsteb中,和本地硬盘一样,但在第四项,需要加上_netdev,必须上,不然开机系统不能正常重启。
    在这里插入图片描述

  • 查看已连接设备
    查看已经连接的设备:iscsiadm -m session
    在这里插入图片描述

  • 查看详细:iscsiadm -m session -P1 (1可替换为1,2,3,1-3分别代表详细程度)
    在这里插入图片描述

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐