ISCSI网络存储服务

iscsi是直接对设备进行共享的服务
iscsi是一个供硬件设备使用的、可在IP协议上层运行的SCSI指令集,是一种开放的基于IP协议的工业技术标准。该协议可以用TCP/IP对SCSI指令进行封装,使得这些指令能够通过基于P网络进行传输,从而实现SCSI和TCP/IP协议的连接。
从根本上说,iSCSI协议是一种利用IP网络来传输潜伏时间短的SCSI数据块的方法,ISCSI使用以太网协议传送SCSI命令、响应和数据。ISCSI可以用我们已经熟悉和每天都在使用的以太网来构建IP存储局域网。通过这种方法,ISCSI克服了直接连接存储的局限性,使我们可以跨不同服务器共享存储资源,并可以在不停机状态下扩充存储容量。
iSCSI的最大好处是能提供快速的网络环境,虽然其性能和带宽跟光纤网络还有一些差距,但能节省企业约30-40%的成本。

1 安装服务

服务端:
yum install targetcli -y            #安装共享磁盘服务
systemctl start target              #启动服务
targetcli                           #打开设置

客户端:
yum install iscsi-initiator-utils.64_86 -y          #安装
systemctl start iscsi                               #启动

2 服务配置

服务端:
首先建立一个要共享出去的分区:这里博主已经建立好了/dev/vdb1,大小为2G
主要代码如下:
[root@server ~]# targetcli     ##进入iSCSI目标交互式配置模式
/> /backstores/block create westos:storage1 /dev/vdb1
##和逻辑卷建立联系,把/dev/vdb1用westos:storage1表示

/> /iscsi create iqn.2017-12.com.example.storage1
##创建iqn服务的名称(每个发起端和目标需要唯一名称进行标识)
##格式: iqn.YYYY(年)-MM(月).域名反写:随机串

/> /iscsi/iqn.2017-12.com.example.storage1/tpg1/acls create iqn.2017-12.com.example:westoskey
##创建客户端连接服务端密钥

/> /iscsi/iqn.2017-12.com.example.storage1/tpg1/portals create 172.25.254.156
Using default IP port 3260
Created network portal 172.25.254.156:3260.
##创建目标门户

/> /iscsi/iqn.2017-12.com.example.storage1/tpg1/luns create /backstores/block/westos:storage1 
##在仓库中创建逻辑单元号

建立好共享磁盘后,需要将它的共享端口加入火墙策略:

firewall-cmd --permanent --add-port=3260/tcp
firewall-cmd --reload

这里写图片描述

客户端:
vim /etc/iscsi/initiatorname.iscsi  #编辑key文件
systemctl restart iscsid            ##重启
systemctl restart iscsi             ##重启服务
iscsiadm -m discovery -t st -p 172.25.254.156  #发现服务
## -m discovery     ##侦测target
## -t sendtargets   ##通过iscsi协议(sendtargets可简写为st)
## -p IP:port       ##指定target的IP和port,不写port的话,默认为3260

iscsiadm -m node -T iqn.2017-12.com.example:storage1 -p 172.25.254.201 -l       #登陆服务
fdisk -l          ##查看磁盘分区

这里写图片描述

这里写图片描述
这里写图片描述

fdisk /dev/sda          ##对sda磁盘进行分区
mkfs.xfs /dev/sda1      ##对sda磁盘的第一块分区格式化为xfs文件系统
mount /dev/sda1 /mnt    ##挂载使用
touch /mnt/clientfile   ##建立文件
umount /mnt             ##卸载
iscsiadm -m node -T iqn.2017-12.com.example.storage1 -p 172.25.254.156 -u                 ##登出iSCSI目标,以暂时断开连接。
iscsiadm -m node -T iqn.2017-12.com.example.storage1 -p 172.25.254.156 -o delete          ##删除iSCSI目标的本地记录,以永久断开连接。
##此时共享磁盘已经分区并且做了文件系统,当其他人使用的时候,不用再分区和格式化,直接挂载投入使用即可。

这里写图片描述

如果遇到如下问题:
1.
[root@server ~]# iscsiadm -m node -T iqn.2017-12.com.example.storage1 -p 172.25.254.156 -l
Logging in to [iface: default, target: iqn.2017-12.com.example.storage1, portal: 172.25.254.156,3260] (multiple)
iscsiadm: Could not login to [iface: default, target: iqn.2017-12.com.example.storage1, portal: 172.25.254.156,3260].
iscsiadm: initiator reported error (24 - iSCSI login failed due to authorization failure)
iscsiadm: Could not log into all portals

解决方法:
1)检查钥匙是否正确
vim /etc/iscsi/initiatorname.iscsi
若是修改了文件,需要重启服务
[root@server ~]# systemctl restart iscsid
[root@server ~]# systemctl restart iscsi

2)删除所有文件,重新发现
[root@server ~]# yum install tree
[root@server ~]# tree /var/lib/iscsi/
/var/lib/iscsi/
├── ifaces
├── isns
├── nodes
│   └── iqn.2017-12.com.example.storage1
│       └── 172.25.254.156,3260,1
│           └── default
├── send_targets
│   └── 172.25.254.156,3260
│       ├── iqn.2017-12.com.example.storage1,172.25.254.156,3260,1,default -> /var/lib/iscsi/nodes/iqn.2017-12.com.example.storage1/172.25.254.156,3260,1
│       └── st_config
├── slp
└── static
[root@server ~]# rm -rf /var/lib/iscsi/nodes/*
[root@server ~]# rm -rf /var/lib/iscsi/send_targets/*
[root@server ~]# tree /var/lib/iscsi/
/var/lib/iscsi/
├── ifaces
├── isns
├── nodes
├── send_targets
├── slp
└── static
[root@server ~]# iscsiadm -m discovery -t st -p 172.25.254.156
[root@server ~]# iscsiadm -m node -T iqn.2017-12.com.example.storage1 -p 172.25.254.156 -l

2.
[root@server ~]# systemctl restart iscsi
Job for iscsi.service failed. See 'systemctl status iscsi.service' and 'journalctl -xn' for details.
解决方法:先重启上层服务,再去重启服务
[root@server ~]# systemctl restart iscsid
[root@server ~]# systemctl restart iscsi

3 客户端开机自启动挂载

客户端
blkid           ##查看设备uuid
vim /etc/fstab
UUID="2995d026-b97d-4652-8ceb-e3242e4bdf1e"   /mnt  xfs  defaults,_netdev 0 0

## 通过网络共享,设备名在不同主机上可能会发生漂移,但uuid是唯一的。因此通过uuid识别设备是比较可靠的方式。
## 系统启动会先读取fstab内容挂载设备,然后才开启网络 。所以要用参数defaults,_netdev告诉系统,这块设备是网络设备。防止系统因找不到此设备而无法正常启动。

这里写图片描述

4 lvm磁盘共享

准备工作:

客户端:
[root@client ~]# iscsiadm -m node -T iqn.2017-12.com.example.storage1 -p 172.25.254.156 -u
[root@client ~]# iscsiadm -m node -T iqn.2017-12.com.example.storage1 -p 172.25.254.156 -o delete
[root@client ~]# tree /var/lib/iscsi/
/var/lib/iscsi/
├── ifaces
├── isns
├── nodes
├── send_targets
│   └── 172.25.254.156,3260
│       └── st_config
├── slp
└── static
[root@client ~]# systemctl restart iscsid
[root@client ~]# systemctl restart iscsi
服务器:
[root@server ~]# targetcli 
/> clearconfig confirm=true     ##删除
/> exit                         ##退出

正题开始: 先自行在服务端创建一个lvm分区

fdisk /dev/vdb (lvm标签为8e)
pvcreate /dev/vdb1
vgcreate vg0 /dev/vdb1
vgdisplay                   ##查看vg的详细信息
lvcreate -l 255 -n lv0 vg0  ## -l:指定 pe的个数

在服务端建立共享lvm磁盘:

[root@server ~]# targetcli 
/> /backstores/block create westos:storage1 /dev/vg0/lv0
/> /iscsi create iqn.2017-12.com.example:storage1
/> iscsi/iqn.2017-12.com.example:storage1/tpg1/acls create iqn.2017-12.com.example:key1
/> iscsi/iqn.2017-12.com.example:storage1/tpg1/luns create /backstores/block/westos:storage1 
/> iscsi/iqn.2017-12.com.example:storage1/tpg1/portals create 172.25.254.156
/> exit

这里写图片描述

客户端:

先修改密码文件,重启服务,然后再去发现并登陆共享磁盘

[root@client ~]# vim /etc/iscsi/initiatorname.iscsi 
[root@client ~]# systemctl restart iscsid
[root@client ~]# systemctl restart iscsi
[root@client ~]# iscsiadm -m discovery -t st -p 172.25.254.156
[root@client ~]# iscsiadm -m node -T iqn.2017-12.com.example:storage1 -p 172.25.254.156 -l
[root@client ~]# fdisk -l
Disk /dev/sdb: 1069 MB, 1069547520 bytes, 2088960 sectors

这里写图片描述
这里写图片描述

服务端扩展lvm

重新划分一个lvm分区,加入vg0,再将lv扩大

[root@server ~]# fdisk /dev/vdb
[root@server ~]# partprobe 
[root@server ~]# pvcreate /dev/vdb2
[root@server ~]# vgextend vg0 /dev/vdb2
[root@server ~]# lvextend -L 1500M -n /dev/vg0/lv0 

客户端同步:

客户端同步需要将共享磁盘卸载,再重新登陆即可

[root@client ~]# iscsiadm -m node -T iqn.2017-12.com.example:storage1 -p 172.25.254.156 -u
[root@client ~]# iscsiadm -m node -T iqn.2017-12.com.example:storage1 -p 172.25.254.156 -l
[root@client ~]# fdisk -l
Disk /dev/sdb: 1572 MB, 1572864000 bytes, 3072000 sectors

这里写图片描述
这里写图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
iSCSI是一种网络存储协议,可以将远程设备的存储资源映射为本地磁盘,从而实现远程存储的访问。在Linux系统中,我们可以通过iSCSI服务来配置和管理iSCSI存储。 下面是在Linux系统中配置和管理iSCSI存储的步骤: 1. 安装iSCSI服务 在Linux系统中,我们可以使用yum命令安装iSCSI服务,命令如下: ``` yum install iscsi-initiator-utils ``` 2. 配置iSCSI服务 配置iSCSI服务需要以下步骤: (1)编辑iscsi配置文件/etc/iscsi/iscsid.conf,在文件中添加以下内容: ``` node.session.auth.authmethod = CHAP node.session.auth.username = <用户名> node.session.auth.password = <密码> ``` 其中,用户名和密码用于iSCSI的身份验证。 (2)编辑/etc/iscsi/initiatorname.iscsi文件,设置iSCSI的名称,命令如下: ``` echo "InitiatorName=iqn.2021-08.com.example:client1" > /etc/iscsi/initiatorname.iscsi ``` 其中,iqn.2021-08.com.example:client1为iSCSI的名称。 3. 连接iSCSI存储 连接iSCSI存储需要以下步骤: (1)查找iSCSI存储的地址和端口号,命令如下: ``` iscsiadm -m discovery -t st -p <存储地址> ``` 其中,存储地址为iSCSI存储的IP地址或域名。 (2)将iSCSI存储添加到发现列表中,命令如下: ``` iscsiadm -m node -o new -T <存储名> -p <存储地址>:<端口号> ``` 其中,存储名为iSCSI存储的名称,端口号为iSCSI存储的端口号。 (3)连接iSCSI存储,命令如下: ``` iscsiadm -m node -T <存储名> -p <存储地址>:<端口号> -l ``` 4. 管理iSCSI存储 连接iSCSI存储成功后,我们可以使用以下命令管理iSCSI存储: (1)查看已连接的iSCSI存储,命令如下: ``` iscsiadm -m session ``` (2)断开与iSCSI存储的连接,命令如下: ``` iscsiadm -m node -T <存储名> -p <存储地址>:<端口号> -u ``` (3)删除iSCSI存储,命令如下: ``` iscsiadm -m node -T <存储名> -p <存储地址>:<端口号> -o delete ``` 以上就是在Linux系统中配置和管理iSCSI存储的步骤。通过iSCSI服务,我们可以将远程存储资源映射为本地磁盘,从而实现远程存储的访问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值