网络驱动器设备:ISCSI服务器

news2024/11/26 0:33:55

文章目录

  • 使用ISCSI服务部署网络存储
    • ISCSI技术介绍
    • 创建RAID磁盘整列
    • 配置ISCSI服务端
    • 配置Windows端
    • 配置Linux客户端
    • iSCSI服务器CHAP单向认证配置
      • Linux端具体步骤
      • Windows端具体步骤

使用ISCSI服务部署网络存储

主机名IP
ISCSI服务端192.168.200.10
ISCSI客户端192.168.200.20
Windows客户端192.168.200.30
# 修改主机名
[root@localhost ~]# hostnamectl set-hostname iscsi-server
[root@localhost ~]# bash
[root@iscsi-server ~]# 
[root@localhost ~]# hostnamectl set-hostname iscsi-client
[root@localhost ~]# bash
[root@iscsi-client ~]# 

ISCSI技术介绍

iSCSI(Internet Small Computer System Interface)是一种将SCSI(Small Computer System Interface)存储协议运行在TCP/IP网络上的技术。它通过使用IP网络来传输SCSI命令和数据,并将存储设备的逻辑单元(LUN)暴露给远程主机,使其能够远程访问和使用存储资源。

架构: iSCSI 架构由以下组件组成:

  • iSCSI Target(ISCSI服务端):存储资源提供者,通过将存储设备映射为逻辑单元(LUN),并在网络上以iSCSI协议提供服务。
  • iSCSI Initiator(ISCSI客户端):远程主机或客户端,使用iSCSI协议连接到iSCSI Target,并通过发送SCSI命令和接收数据来访问存储资源。

传输: iSCSI 使用 TCP/IP 协议作为底层传输协议,利用 IP 网络传输SCSI命令和数据。它使用 iSCSI Initiator 向 iSCSI Target 发送SCSI 命令,并将响应和数据通过网络传输回 Initiator。

配置和管理: iSCSI 需要配置 iSCSI Initiator 和 iSCSI Target 来建立连接并传输数据。 Initiator 需要指定目标的 IP 地址和端口号,以及要访问的 LUN。 Target 需要配置相应的存储资源,并设置适当的访问控制和身份验证机制。

功能和优势:

  • 远程存储访问:iSCSI 提供了远程主机访问存储资源的能力,使得远程设备可以像访问本地存储一样使用远程存储。
  • 存储共享:多个远程主机可以通过 iSCSI 连接到同一个 iSCSI Target,实现存储资源的共享和协同访问。
  • 灵活性和可扩展性:iSCSI 技术基于 TCP/IP 网络,具有广泛的支持和可扩展性。可以通过现有的网络基础设施实现存储访问,并可以轻松扩展存储容量和性能。
  • 成本效益:相对于传统的专用存储网络(如光纤通道),iSCSI 提供了更低的部署和维护成本。

iSCSI 技术需要在网络中传输存储数据,因此网络性能和带宽是关键因素。

创建RAID磁盘整列

既然要使用ISCSI存储技术为远程用户提供共享存储资源,首先要保障用于存放资源的服务器的稳定性与可用性,否则一旦在使用过程中出现故障,则维护的难度相较于本地硬盘设备要更加复杂、困难。

首先给虚拟机添加4块硬盘,用于创建RAID5磁盘阵列和备份盘

image-20240407180746618

[root@iscsi-server ~]#  lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sr0            11:0    1  8.9G  0 rom  /run/media/root/RHEL-9-2-0-BaseOS-x86_64
nvme0n1       259:0    0   50G  0 disk 
├─nvme0n1p1   259:1    0  600M  0 part /boot/efi
├─nvme0n1p2   259:2    0    1G  0 part /boot
└─nvme0n1p3   259:3    0 48.4G  0 part 
  ├─rhel-root 253:0    0 44.5G  0 lvm  /
  └─rhel-swap 253:1    0  3.9G  0 lvm  [SWAP]
nvme0n2       259:4    0   20G  0 disk 
nvme0n3       259:5    0   20G  0 disk 
nvme0n4       259:6    0   20G  0 disk 
nvme0n5       259:7    0   20G  0 disk 
[root@iscsi-server ~]#  mdadm -Cv /dev/md0 -l 5 -n 3 -x 1 /dev/nvme0n{2..5}
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 20954112K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@localhost ~]# mdadm -D /dev/md0 
/dev/md0:
           Version : 1.2
     Creation Time : Sun Apr  7 18:30:39 2024
        Raid Level : raid5
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 3
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Sun Apr  7 18:32:24 2024
             State : clean 
    Active Devices : 3
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 1

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : localhost.localdomain:0  (local to host localhost.localdomain)
              UUID : 4fe66abc:dc653251:28374699:803cfb22
            Events : 18

    Number   Major   Minor   RaidDevice State
       0     259        4        0      active sync   /dev/nvme0n2
       1     259        5        1      active sync   /dev/nvme0n3
       4     259        6        2      active sync   /dev/nvme0n4

       3     259        7        -      spare   /dev/nvme0n5

配置ISCSI服务端

ISCSI技术在工作形式上分为服务器(target)与客户端(initiator)。

ISCSI服务端用于存放硬盘存储资源的服务器,它作为前面创建的RAID磁盘整列的存储端,能够为用户提供可用的存储资源

ISCSI客户端则是用户使用的软件,用于访问远程服务端的存储资源

第一步:在RHEL8/centos 8系统中,默认已经安装了ISCSI服务端程序,用户只用安装ISCSI服务端的交换配置工具就可以了

[root@iscsi-server ~]#  yum install -y targetcli

第二步:配置ISCSI服务端共享资源

targetcli是用于管理iSCSI服务端存储资源的专用配置命令,它能够提供类似于 fisk 命令的交互式配置功能,将iSCSI 共享资源的配置内容抽象成“目录”的形式,我们只需将各类配置信息填入到相应的“目录”中即可。

主要在于认识每个“参数目录”的作用。当把配置参数正确地填写到“目录”中后,iSCSI服务端也就可以提供共享资源服务了。
在执行 targetcli 命令后就能看到交互式的配置界面了。在该界面中允许使用很多 Linux命令,比如利用ls查看目录参数的结构,使用cd切换到不同的目录中。

常用的targetcli命令和其功能的详解

命令作用
ls [path] [depth]列出指定路径下的目标和/或目录
cd [path]进入指定的路径(目标或目录)
pwd打印当前路径
bookmarks action [bookmark]执行与书签相关的操作
create name dev [readonly] [wwn]创建一个新的配置。name参数指定了配置的名称,dev参数指定了设备
delete name删除指定的配置。name参数指定了要删除的配置
exit退出当前会话或程序
get [group] [parameter…]获取指定组或参数的信息
refresh刷新当前状态或视图
set [group] [parameter=value…]设置指定组或参数的值
status显示当前状态信息

[root@iscsi-server ~]# targetcli
Warning: Could not load preferences file /root/.targetcli/prefs.bin.
targetcli shell version 2.1.53
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]

  • /:根目录,包含其他目录和命令的子目录
  • backstores:用于存储对象的目录
    • block:块设备类型的存储对象列表
    • fileio:文件IO类型的存储对象列表
    • pscsi:Pseudo SCSI类型的存储对象列表
    • ramdisk:内存磁盘类型的存储对象列表
  • iscsi:iSCSI目标的目录
  • loopback:回环目标的目录

将刚刚创建的RAID5磁盘阵列md0文件假如到配置共享设备的资源池中,并将该文件重新命名为disk0,这样用户就不会知道是有服务器中的哪块硬盘来提供共享存储资源,而只会看到一个名为disk0的存储设备

/> cd /backstores/block
/backstores/block> create disk0 /dev/md0
Created block storage object disk0 using /dev/md0.
/backstores/block> cd /
/> ls
o- / … […]
o- backstores … […]
| o- block … [Storage Objects: 1]
| | o- disk0 … [/dev/md0 (40.0GiB) 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]
/>

第三步:创建ISCSI target名称及配置共享资源

iSCSI target名称是由系统自动生成的,这是一串用于描述共享资源的唯一字符串。稍后用户在扫描iSCSI服务端时即可看到这个字符串,因此我们不需要记住它。

iqn.yyyy-mm.<reversed domain name>:identifier
iqn.年年-月.单位网络名的反转写法      : 这个共享的target名称

/> cd iscsi
/iscsi> ls
o- iscsi … [Targets: 0]
/iscsi> create
Created target iqn.2003-01.org.linux-iscsi.iscsi-server.x8664:sn.3e775a84619b.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
/iscsi> ls
o- iscsi … [Targets: 1]
o- iqn.2003-01.org.linux-iscsi.iscsi-server.x8664:sn.3e775a84619b … [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]

系统在生成这个 target 名称后,还会在/iscsi 参数目录中创建一个与其字符串同名的新“目录”用来存放共享资源。我们需要把前面加人到iSCSI共享资源池中的硬盘设备添加到这个新目录中,这样用户在登录iSCSI服务端后,即可默认使用这硬盘设备提供的共享存储资源了。

/iscsi/iqn.20...5a84619b/tpg1> cd luns 
/iscsi/iqn.20...19b/tpg1/luns> create /backstores/block/disk0 
Created LUN 0.

第四步:设置访问控制列表(ACL)

iSCSI协议是通过客户端名称进行验证的。也就是说,用户在访问存储共享资源时不需要输入密码,只要iSCSI客户端的名称与服务端中设置的访问控制列表中某一名称条目一致即可,因此需要在iSCSI服务端的配置文件中写入一串能够验证用户信息的名称。acls 参数目录用于存放能够访问iSCSI服务端共享存储资源的客户端名称。

[root@iscsi-client ~]# systemctl start iscsid.service && systemctl enable iscsid.service
[root@iscsi-client ~]# cat /etc/iscsi/initiatorname.iscsi 
InitiatorName=iqn.1994-05.com.redhat:cc54be3e2f1

/iscsi/iqn.20...19b/tpg1/acls> create iqn.1994-05.com.redhat:cc54be3e2f1
Created Node ACL for iqn.1994-05.com.redhat:cc54be3e2f1
Created mapped LUN 0.

image-20240407232544132

image-20240407232609394

/iscsi/iqn.20...19b/tpg1/acls> create iqn.1991-05.com.microsoft:desktop-utnil1q
Created Node ACL for iqn.1991-05.com.microsoft:desktop-utnil1q
Created mapped LUN 0.

第五步:设置ISCSI服务端的监听IP地址和端口号

位于生产环境中的服务器上可能有多块网卡,那么到底是由哪个网卡或正地址对外提供共享存储资源呢?在配置文件中默认是允许所有网卡提供iSCSI服务,如果您认为这有些许不安全,可以手动删除:

/iscsi/iqn.20...19b/tpg1/acls> cd ..
/iscsi/iqn.20...5a84619b/tpg1> cd portals/
/iscsi/iqn.20.../tpg1/portals> delete 0.0.0.0 3260
Deleted network portal 0.0.0.0:3260
# 使用192.168.200.10的3260端口向外提供ISCSI共享存储资源服务
/iscsi/iqn.20.../tpg1/portals> create 192.168.200.10
Using default IP port 3260
Created network portal 192.168.200.10:3260.

第六步:再参数文件配置妥当后,浏览刚刚配置的信息,确保上述提到的“目录”都已经填写了正确的内容

确认无误exit退出配置

/> ls
o- / … […]
o- backstores … […]
| o- block … [Storage Objects: 1]
| | o- disk0 … [/dev/md0 (40.0GiB) 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.2003-01.org.linux-iscsi.iscsi-server.x8664:sn.3e775a84619b … [TPGs: 1]
| o- tpg1 … [no-gen-acls, no-auth]
| o- acls … [ACLs: 2]
| | o- iqn.1991-05.com.microsoft:desktop-utnil1q … [Mapped LUNs: 1]
| | | o- mapped_lun0 … [lun0 block/disk0 (rw)]
| | o- iqn.1994-05.com.redhat:cc54be3e2f1 … [Mapped LUNs: 1]
| | o- mapped_lun0 … [lun0 block/disk0 (rw)]
| o- luns … [LUNs: 1]
| | o- lun0 … [block/disk0 (/dev/md0) (default_tg_pt_gp)]
| o- portals … [Portals: 1]
| o- 192.168.200.10:3260 … [OK]
o- loopback … [Targets: 0]
/> exit
Global pref auto_save_on_exit=true
Last 10 configs saved in /etc/target/backup/.
Configuration saved to /etc/target/saveconfig.json

防火墙放心规则

[root@iscsi-server ~]# firewall-cmd --add-service=iscsi-target --permanent 
[root@iscsi-server ~]# firewall-cmd --reload 

配置Windows端

打开windows客户端输入ISCSI服务端的IP地址,点击快速连接

image-20240408000216115

已连接,点击完成

image-20240408000302865

搜索磁盘管理器,点击搜索的第一个

image-20240408000423038

点进去后,就会发现有一个未分配的40G磁盘

image-20240408000459787

点击未分配的磁盘,右键新建卷,设置磁盘大小为30G,设置驱动号为E盘,NTFS文件系统,卷标为ISCSI磁盘,最后点击完成

image-20240408000903347

image-20240408000928246

在ISCSI磁盘中存储一些内容,也可以存储

image-20240408001517165

配置Linux客户端

在RHEL 9 系统中,已经默认安装了ISCSI客户端服务程序initiator,如果没有安装可以用yum安装

[root@iscsi-client ~]# rpm -qa |grep -i iscsi          
iscsi-initiator-utils-iscsiuio-6.2.1.4-3.git2a8f9d8.el9.x86_64
iscsi-initiator-utils-6.2.1.4-3.git2a8f9d8.el9.x86_64
udisks2-iscsi-2.9.4-7.el9.x86_64

设置iscsid服务开机自启,并启动,在之前设置访问控制列表已经开启过了

iscsiadm 是一个用于管理 iSCSI 会话和目标的命令行工具。它允许您配置和管理 iSCSI 收发器(也称为 iSCSI initiator)与 iSCSI 目标(也称为 iSCSI 服务端)之间的连接。

Discovery(发现)

  • iscsiadm -m discovery -t st -p <target_ip> 这个命令用于从指定的 iSCSI 目标 IP 地址进行发现。通过执行发现操作,可以列出可以连接的 iSCSI 目标。

Login(登录)

  • iscsiadm -m node -T <target_name> -p <target_ip> --login 这个命令用于使用指定的 iSCSI 目标名称和 IP 地址登录到 iSCSI 目标。

Logout(注销)

  • iscsiadm -m node -T <target_name> -p <target_ip> -u 这个命令用于从指定的 iSCSI 目标注销并断开与目标的连接。
# 先发现
[root@iscsi-client ~]# iscsiadm -m discovery -t st -p 192.168.200.10
192.168.200.10:3260,1 iqn.2003-01.org.linux-iscsi.iscsi-server.x8664:sn.3e775a84619b
# 在登录
[root@iscsi-client ~]# iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.iscsi-server.x8664:sn.3e775a84619b -p 192.168.200.10 --login
Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.iscsi-server.x8664:sn.3e775a84619b, portal: 192.168.200.10,3260]
Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.iscsi-server.x8664:sn.3e775a84619b, portal: 192.168.200.10,3260] successful.
# 登录成功

# 登录成功之后,会在客户端主机上多出一块磁盘,可以使用lsblk查看
[root@iscsi-client ~]# lsblk
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda             8:0    0   40G  0 disk 
└─sda1          8:1    0   30G  0 part   # 这个是windows分区的磁盘
sr0            11:0    1  8.9G  0 rom  /run/media/root/RHEL-9-2-0-BaseOS-x86_64
nvme0n1       259:0    0   50G  0 disk 
├─nvme0n1p1   259:1    0  600M  0 part /boot/efi
├─nvme0n1p2   259:2    0    1G  0 part /boot
└─nvme0n1p3   259:3    0 48.4G  0 part 
  ├─rhel-root 253:0    0 44.5G  0 lvm  /
  └─rhel-swap 253:1    0  3.9G  0 lvm  [SWAP]
  
# 再来分区sda
[root@iscsi-client ~]# lsblk /dev/sda
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda      8:0    0  40G  0 disk 
├─sda1   8:1    0  30G  0 part 
└─sda2   8:2    0  10G  0 part   # 我们创建的
# 格式化
[root@iscsi-client ~]# mkfs.xfs /dev/sda2 
log stripe unit (524288 bytes) is too large (maximum is 256KiB)
log stripe unit adjusted to 32KiB
meta-data=/dev/sda2              isize=512    agcount=16, agsize=163200 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1    bigtime=1 inobtcount=1
data     =                       bsize=4096   blocks=2611200, imaxpct=25
         =                       sunit=128    swidth=256 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
# 创建挂载点
[root@iscsi-client ~]# mkdir /sharedisk
# 挂载
[root@iscsi-client ~]# mount /dev/sda2 /sharedisk/
# 查看
[root@iscsi-client ~]# df -hT /sharedisk/
文件系统       类型  容量  已用  可用 已用% 挂载点
/dev/sda2      xfs    10G  104M  9.9G    2% /sharedisk
# 写入数据
[root@iscsi-client ~]# dd if=/dev/zero of=/sharedisk/test_1 count=500 bs=1M
记录了500+0 的读入
记录了500+0 的写出
524288000字节(524 MB,500 MiB)已复制,0.432517 s,1.2 GB/s
[root@iscsi-client ~]# cd /sharedisk/
[root@iscsi-client sharedisk]# ls
test_1
[root@iscsi-client sharedisk]# df -hT /sharedisk/                                  
文件系统       类型  容量  已用  可用 已用% 挂载点
/dev/sda2      xfs    10G  604M  9.4G    6% /sharedisk

# 添加自动挂载
[root@iscsi-client sharedisk]# vim /etc/fstab 
/dev/sda2             /sharedisk                xfs     defaults,_netdev        0 0
# _netdev 参数可以确保系统在启动网络服务之后再进行挂载,避免因为网络尚未准备好而导致挂载失败。
[root@iscsi-client sharedisk]# cd 
[root@iscsi-client ~]# umount /sharedisk 
[root@iscsi-client ~]# mount -a
[root@iscsi-client ~]# df -hT /sharedisk/
文件系统       类型  容量  已用  可用 已用% 挂载点
/dev/sda2      xfs    10G  604M  9.4G    6% /sharedisk

在windows端刷新一下磁盘管理,看看分区情况

image-20240408005344450

分区没问题

如果不再需要使用ISCSI共享设备资源了,可以用iscsiadm命令的-u参数将其他设备卸载

# 先发现
[root@iscsi-client ~]# iscsiadm -m discovery -t st -p 192.168.200.10
192.168.200.10:3260,1 iqn.2003-01.org.linux-iscsi.iscsi-server.x8664:sn.3e775a84619b
# 再注销
[root@iscsi-client ~]# iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.iscsi-server.x8664:sn.3e775a84619b -u
Logging out of session [sid: 1, target: iqn.2003-01.org.linux-iscsi.iscsi-server.x8664:sn.3e775a84619b, portal: 192.168.200.10,3260]
Logout of [sid: 1, target: iqn.2003-01.org.linux-iscsi.iscsi-server.x8664:sn.3e775a84619b, portal: 192.168.200.10,3260] successful.
# 查看磁盘
[root@iscsi-client ~]# lsblk |grep sda
# 记得删除fstab自动挂载内容,否则关机就开不了机了

windows注销可以打开ISCSI发起程序,点击断开连接就可以卸载磁盘了

iSCSI服务器CHAP单向认证配置

在 iSCSI 中,CHAP(Challenge Handshake Authentication Protocol)是一种用于进行身份认证的协议,可以在 iSCSI 连接中提供一种基于密码的安全机制。单向 CHAP 认证是一种配置方式,其中只有 Linux客户端验证 iSCSI 服务器的身份

  1. 创建 CHAP 用户名和密码: 在 iSCSI 服务器上创建一个 CHAP 用户名和密码组合,用于与 iSCSI 客户端进行认证。这些用户名和密码将用于验证 iSCSI 客户端身份。

  2. 修改 iSCSI 客户端的配置文件: 打开 iSCSI 服务器的配置文件,并添加以下配置项:

    discovery.sendtargets.auth.authmethod = CHAP
    discovery.sendtargets.auth.username = <CHAP用户名> 
    discovery.sendtargets.auth.password = <CHAP密码>
    # 将 <CHAP用户名> 替换为您在第一步中创建的 CHAP 用户名,将 <CHAP密码>替换为相应的密码。
    
  3. 保存并关闭配置文件

  4. 建立 iSCSI 连接: 在配置完成后,通过 iSCSI 客户端建立与 iSCSI 服务器的连接。客户端将使用配置的 CHAP 用户名和密码与服务器进行认证,并建立受信任的连接

Linux端具体步骤

# 创建 CHAP 用户名和密码
[root@iscsi-server ~]# targetcli
/> cd iscsi/
/iscsi> set discovery_auth enable=1 userid=csq password=Abc@1234  # 设置单向认证
Parameter enable is now 'True'.
Parameter userid is now 'csq'.
Parameter password is now 'Abc@1234'.
/iscsi> get discovery_auth 
DISCOVERY_AUTH CONFIG GROUP
===========================
enable=True
-----------
The enable discovery_auth parameter.

mutual_password=
----------------
The mutual_password discovery_auth parameter.

mutual_userid=
--------------
The mutual_userid discovery_auth parameter.

password=Abc@1234  # # 单项认证的密码
-----------------
The password discovery_auth parameter.

userid=csq        # 单项认证的账户
----------
The userid discovery_auth parameter.
# 修改 iSCSI 服务器的配置文件
[root@iscsi-server ~]# vim /etc/iscsi/iscsid.conf 
 79 discovery.sendtargets.auth.authmethod = CHAP
 83 discovery.sendtargets.auth.username = csq
 84 discovery.sendtargets.auth.password = 123789456csq
# 先发现
[root@iscsi-client ~]# iscsiadm -m discovery -t st -p 192.168.200.10
192.168.200.10:3260,1 iqn.2003-01.org.linux-iscsi.iscsi-server.x8664:sn.3e775a84619b
# 再登陆
[root@iscsi-client ~]# iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.iscsi-server.x8664:sn.3e775a84619b --login
Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.iscsi-server.x8664:sn.3e775a84619b, portal: 192.168.200.10,3260]
Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.iscsi-server.x8664:sn.3e775a84619b, portal: 192.168.200.10,3260] successful.
# 查看磁盘
[root@iscsi-client ~]# lsblk /dev/sdb
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sdb      8:16   0  40G  0 disk 
├─sdb1   8:17   0  30G  0 part 
└─sdb2   8:18   0  10G  0 part 

Windows端具体步骤

# 创建 CHAP 用户名和密码,执行过不用执行第二遍
[root@iscsi-server ~]# targetcli
/> cd iscsi/
/iscsi> set discovery_auth enable=1 userid=csq password=123789456csq  # 设置单向认证
Parameter enable is now 'True'.
Parameter userid is now 'csq'.
Parameter password is now '123789456csq'.
/iscsi> get discovery_auth 
DISCOVERY_AUTH CONFIG GROUP
===========================
enable=True
-----------
The enable discovery_auth parameter.

mutual_password=
----------------
The mutual_password discovery_auth parameter.

mutual_userid=
--------------
The mutual_userid discovery_auth parameter.

password=123789456csq   # 单项认证的密码
-----------------
The password discovery_auth parameter.

userid=csq        # 单项认证的账户
----------
The userid discovery_auth parameter.
/iscsi> exit
Global pref auto_save_on_exit=true
Last 10 configs saved in /etc/target/backup/.
Configuration saved to /etc/target/saveconfig.json

打开ISCSI发起程序,点击发现,发现门户,输入ISCSI服务端IP,点击高级,在启用CHAP登录前面打上对勾,输入名称机密,点击确定

然后点击目标,点击连接,就连接上了

image-20240408012917538

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1578735.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ubuntu22.04修改默认窗口系统为X11

Ubuntu22.04安装默认窗口系统为Wayland&#xff08;通过设置->关于可以看到&#xff09;。 一、用Ubuntu on Xorg会话登录 用户登录时&#xff0c;点“未列出”&#xff0c;输入用户名后&#xff0c;在登录界面底部的齿轮图标中&#xff0c;选择 "Ubuntu on Xorg&quo…

Stable Diffusion——SDXL Turbo让 AI 出图速度提高10倍

摘要 在本研究中&#xff0c;我们提出了一种名为对抗扩散蒸馏&#xff08;ADD&#xff09;的创新训练技术&#xff0c;它能够在1至4步的采样过程中&#xff0c;高效地对大规模基础图像扩散模型进行处理&#xff0c;同时保持图像的高质量。该方法巧妙地结合了分数蒸馏技术&…

用TensorBoard可视化PyTorch

一、TensorBoard与PyTorch配合使用的基本步骤 PyTorch可以直接与TensorBoard进行集成&#xff0c;因为TensorBoard是一个独立于TensorFlow之外的可视化工具。TensorBoard被设计为支持机器学习实验的可视化&#xff0c;如训练的进度和结果等。PyTorch中的torch.utils.tensorboa…

【数据结构】考研真题攻克与重点知识点剖析 - 第 6 篇:图

前言 本文基础知识部分来自于b站&#xff1a;分享笔记的好人儿的思维导图与王道考研课程&#xff0c;感谢大佬的开源精神&#xff0c;习题来自老师划的重点以及考研真题。此前我尝试了完全使用Python或是结合大语言模型对考研真题进行数据清洗与可视化分析&#xff0c;本人技术…

智慧安防系统EasyCVR视频汇聚平台接入大华设备无法语音对讲的原因排查与解决

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台支持7*24小时实时高清视频监控&#xff0c;能同时播放多路监控视频流&#xff0c;视频画面1、4、9、16个可选&#xff0c;支持自定义视频轮播。EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标…

数据可视化-ECharts Html项目实战(10)

在之前的文章中&#xff0c;我们学习了如何在ECharts中编写雷达图&#xff0c;实现特殊效果的插入运用&#xff0c;函数的插入&#xff0c;以及多图表雷达图。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&…

甲方安全建设之研发安全-SCA

前言 大多数企业或多或少的会去采购第三方软件&#xff0c;或者研发同学在开发代码时&#xff0c;可能会去使用一些好用的软件包或者依赖包&#xff0c;但是如果这些包中存在恶意代码&#xff0c;又或者在安装包时不小心打错了字母安装了错误的软件包&#xff0c;则可能出现供…

shrine-攻防世界

题目 代码 import flask import os app flask.Flask(__name__) app.config[FLAG] os.environ.pop(FLAG) app.route(/) def index(): return open(__file__).read() app.route(/shrine/) def shrine(shrine): def safe_jinja(s): s s.replace((, ).replace(), ) …

算法之美:缓存数据淘汰算法分析及分解实现

在设计一个系统的时候&#xff0c;由于数据库的读取速度远小于内存的读取速度&#xff0c;那么为加快读取速度&#xff0c;需先将一部分数据加入到内存中&#xff08;该动作称为缓存&#xff09;&#xff0c;但是内存容量又是有限的&#xff0c;当缓存的数据大于内存容量时&…

nodejs+python基于vue的羽毛球培训俱乐部管理系统django

语言&#xff1a;nodejs/php/python/java 框架&#xff1a;ssm/springboot/thinkphp/django/express 请解释Flask是什么以及他的主要用途 Flask是一个用Python编写的清凉web应用框架。它易于扩展且灵活&#xff0c;适用于小型的项目或者微服务&#xff0c;以及作为大型应用的一…

spring eureka 服务实例实现快速下线快速感知快速刷新配置解析

背景 默认的Spring Eureka服务器&#xff0c;服务提供者和服务调用者配置不够灵敏&#xff0c;总是服务提供者在停掉很久之后&#xff0c;服务调用者很长时间并没有感知到变化。或者是服务已经注册上去了&#xff0c;但是服务调用方很长时间还是调用不到&#xff0c;发现不了这…

【Mysql高可用集群-双主双活-myql+keeplived】

Mysql高可用集群-双主双活-myqlkeeplived 一、介绍二、准备工作1.两台centos7 linux服务器2.mysql安装包3.keepalived安装包 三、安装mysql1.在128、129两台服务器根据《linux安装mysql服务-两种安装方式教程》按方式一安装好mysql应用。2.修改128服务器/etc/my.cnf配置文件&am…

第8章 数据集成和互操作

思维导图 8.1 引言 数据集成和互操作(DII)描述了数据在不同数据存储、应用程序和组织这三者内部和之间进行移动和整合的相关过程。数据集成是将数据整合成物理的或虚拟的一致格式。数据互操作是多个系统之间进行通信的能力。数据集成和互操作的解决方案提供了大多数组织所依赖的…

携程旅行 abtest

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01;wx a15018601872 本文章…

Java 基于微信小程序的助农扶贫小程序

博主介绍&#xff1a;✌Java徐师兄、7年大厂程序员经历。全网粉丝13w、csdn博客专家、掘金/华为云等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb; 不…

React - 你知道useffect函数内如何模拟生命周期吗

难度级别:中级及以上 提问概率:65% 很多前端开发人员习惯了Vue或者React的组件式开发,熟知组件的周期过程包含初始化、挂载完成、修改和卸载等阶段。但是当使用Hooks做业务开发的时候,看见一个个useEffect函数,却显得有些迷茫,因为在us…

Flutter之Flex组件布局

目录 Flex属性值 轴向:direction:Axis.horizontal 主轴方向:mainAxisAlignment:MainAxisAlignment.center 交叉轴方向:crossAxisAlignment:CrossAxisAlignment 主轴尺寸:mainAxisSize 文字方向:textDirection:TextDirection 竖直方向排序:verticalDirection:VerticalDir…

Java 线程池 参数

1、为什么要使用线程池 线程池能有效管控线程&#xff0c;统一分配任务&#xff0c;优化资源使用。 2、线程池的参数 创建线程池&#xff0c;在构造一个新的线程池时&#xff0c;必须满足下面的条件&#xff1a; corePoolSize&#xff08;线程池基本大小&#xff09;必须大于…

JVM流程图自我总结

JVM流程图总览 运行时数据区是否有GC、OOM图 从线程共享角度区别图

【深度学习】最强算法之:图神经网络(GNN)

图神经网络 1、引言2、图神经网络2.1 定义2.2 原理2.3 实现方式2.4 算法公式2.4.1 GNN2.4.2 GCN 2.5 代码示例 3、总结 1、引言 小屌丝&#xff1a;鱼哥&#xff0c;给俺讲一讲图神经网络啊 小鱼&#xff1a;你看&#xff0c;我这会在忙着呢 小屌丝&#xff1a;啊~ 小鱼&#…