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

ISCSI网络存储服务_第1张图片

客户端:
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          ##查看磁盘分区

这里写图片描述

ISCSI网络存储服务_第2张图片
这里写图片描述

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目标的本地记录,以永久断开连接。
##此时共享磁盘已经分区并且做了文件系统,当其他人使用的时候,不用再分区和格式化,直接挂载投入使用即可。

ISCSI网络存储服务_第3张图片

如果遇到如下问题:
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告诉系统,这块设备是网络设备。防止系统因找不到此设备而无法正常启动。

ISCSI网络存储服务_第4张图片

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

ISCSI网络存储服务_第5张图片

客户端:

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

[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

ISCSI网络存储服务_第6张图片
这里写图片描述

服务端扩展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

ISCSI网络存储服务_第7张图片
这里写图片描述

你可能感兴趣的:(运维初级)