ISCSI网络存储

ISCSI(iSCSI,Internet Small Computer System Interface)

iSCSI技术实现了物理硬盘设备与TCP/IP网络协议的相互结合,使得用户能够经过互联网方便地访问远程机房提供的共享存储资源。html

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

  1. 建立RAID阵列(保证数据安全性 RAID10)

此处略过,RAID详细建立过程讲解请看  https://www.cnblogs.com/zhangjianghua/p/9091200.htmlpython

  二、配置iSCSI服务端

iSCSI技术在工做形式上分为服务端(target)与客户端(initiator)。linux

iSCSI服务端即用于存放硬盘存储资源的服务器,它做为前面建立的RAID磁盘阵列的存储端,可以为用户提供可用的存储资源。iSCSI客户端则是用户使用的软件,用于访问远程服务端的存储资源。shell

     iSCSI服务端和客户端的操做系统以及IP地址:数据库

主机名称 操做系统 IP地址
iSCSI服务端 RHEL 7 192.168.38.251
iSCSI客户端 RHEL 7 192.168.38.250

第1步:安装iSCSI服务端程序以及配置命令工具;安装完成后,启动iSCSI的服务端程序targetd,而后把这个服务程序加入到开机启动项中json

[root@zhangjh ~]# yum install targetd targetcli -y
[root@zhangjh ~]# systemctl start targetd
[root@zhangjh ~]# systemctl enable targetd
ln -s '/usr/lib/systemd/system/targetd.service' '/etc/systemd/system/multi-user.target.wants/targetd.service'

 第2步:配置iSCSI服务端共享资源。vim

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

[root@zhangjh ~]# targetcli 
targetcli shell version 2.1.fb34
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: 1]
  | o- iqn.2003-01.org.linux-iscsi.zhangjh.x8664:sn.858af61dee6c ................ [TPGs: 1]
  |   o- tpg1 ...................................................... [no-gen-acls, no-auth]
  |     o- acls ................................................................. [ACLs: 0]
  |     o- luns ................................................................. [LUNs: 0]
  |     o- portals ........................................................... [Portals: 0]
  o- loopback ................................................................ [Targets: 0]
/> cd /backstores/block 
/backstores/block> create disik0 /dev/md0
Created block storage object disik0 using /dev/md0.
/backstores/block> cd /
/> ls
o- / ................................................................................ [...]
  o- backstores ..................................................................... [...]
  | o- block ......................................................... [Storage Objects: 1]
  | | o- disik0 ............................... [/dev/md0 (40.0GiB) write-thru deactivated]
  | 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.zhangjh.x8664:sn.858af61dee6c ................ [TPGs: 1]
  |   o- tpg1 ...................................................... [no-gen-acls, no-auth]
  |     o- acls ................................................................. [ACLs: 0]
  |     o- luns ................................................................. [LUNs: 0]
  |     o- portals ........................................................... [Portals: 0]
  o- loopback ................................................................ [Targets: 0]
/> 

 

 第3步:建立iSCSI target名称及配置共享资源。安全

iSCSI target名称是由系统自动生成的,这是一串用于描述共享资源的惟一字符串。稍后用户在扫描iSCSI服务端时便可看到这个字符串,所以咱们不须要记住它。

系统在生成这个target名称后,还会在/iscsi参数目录中建立一个与其字符串同名的新“目录”用来存放共享资源。

咱们须要把前面加入到iSCSI共享资源池中的硬盘设备添加到这个新目录中,这样用户在登陆iSCSI服务端后,便可默认使用这硬盘设备提供的共享存储资源了。

/> cd iscsi/
/iscsi> create 
Created target iqn.2003-01.org.linux-iscsi.zhangjh.x8664:sn.762bbcbd6853.
Created TPG 1.
/iscsi> cd iqn.2003-01.org.linux-iscsi.zhangjh.x8664:sn.762bbcbd6853/
/iscsi/iqn.20....762bbcbd6853> ls
o- iqn.2003-01.org.linux-iscsi.zhangjh.x8664:sn.762bbcbd6853 .................... [TPGs: 1]
  o- tpg1 .......................................................... [no-gen-acls, no-auth]
    o- acls ..................................................................... [ACLs: 0]
    o- luns ..................................................................... [LUNs: 0]
    o- portals ............................................................... [Portals: 0]
/iscsi/iqn.20....762bbcbd6853> cd tpg1/luns 
/iscsi/iqn.20...853/tpg1/luns> create /backstores/block/disik0 
Created LUN 0.
/iscsi/iqn.20...853/tpg1/luns> 

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

iSCSI协议是经过客户端名称进行验证的,也就是说,用户在访问存储共享资源时不须要输入密码,只要iSCSI客户端的名称与服务端中设置的访问控制列表中某一名称条目一致便可,

所以须要在iSCSI服务端的配置文件中写入一串可以验证用户信息的名称。acls参数目录用于存放可以访问iSCSI服务端共享存储资源的客户端名称。

/iscsi/iqn.20...853/tpg1/luns> cd ..
/iscsi/iqn.20...bcbd6853/tpg1> cd acls 
/iscsi/iqn.20...853/tpg1/acls> create iqn.2003-01.org.linux-iscsi.zhangjh.x8664:sn.762bbcbd6853:client
Created Node ACL for iqn.2003-01.org.linux-iscsi.zhangjh.x8664:sn.762bbcbd6853:client
Created mapped LUN 0.
/iscsi/iqn.20...853/tpg1/acls> 

 第5步:设置iSCSI服务端的监听IP地址和端口号。

位于生产环境中的服务器上可能有多块网卡,那么究竟是由哪一个网卡或IP地址对外提供共享存储资源呢?

这就须要咱们在配置文件中手动定义iSCSI服务端的信息,即在portals参数目录中写上服务器的IP地址。

接下来将由系统自动开启服务器192.168.10.10的3260端口将向外提供iSCSI共享存储资源服务:

/iscsi/iqn.20...853/tpg1/acls> cd ..
/iscsi/iqn.20...bcbd6853/tpg1> cd portals 
/iscsi/iqn.20.../tpg1/portals> create 192.168.38.251
Using default IP port 3260
Created network portal 192.168.38.251:3260.
/iscsi/iqn.20.../tpg1/portals> 

 第6步:配置稳当后检查配置信息,重启iSCSI服务端程序并配置防火墙策略。

/iscsi/iqn.20.../tpg1/portals> ls /
o- / ................................................................................ [...]
  o- backstores ..................................................................... [...]
  | o- block ......................................................... [Storage Objects: 1]
  | | o- disik0 ................................. [/dev/md0 (40.0GiB) write-thru activated]
  | o- fileio ........................................................ [Storage Objects: 0]
  | o- pscsi ......................................................... [Storage Objects: 0]
  | o- ramdisk ....................................................... [Storage Objects: 0]
  o- iscsi ................................................................... [Targets: 2]
  | o- iqn.2003-01.org.linux-iscsi.zhangjh.x8664:sn.762bbcbd6853 ................ [TPGs: 1]
  | | o- tpg1 ...................................................... [no-gen-acls, no-auth]
  | |   o- acls ................................................................. [ACLs: 1]
  | |   | o- iqn.2003-01.org.linux-iscsi.zhangjh.x8664:sn.762bbcbd6853:client  [Mapped LUNs: 1]
  | |   |   o- mapped_lun0 ....................................... [lun0 block/disik0 (rw)]
  | |   o- luns ................................................................. [LUNs: 1]
  | |   | o- lun0 ............................................... [block/disik0 (/dev/md0)]
  | |   o- portals ........................................................... [Portals: 1]
  | |     o- 192.168.38.251:3260 ..................................................... [OK]
  | o- iqn.2003-01.org.linux-iscsi.zhangjh.x8664:sn.858af61dee6c ................ [TPGs: 1]
  |   o- tpg1 ...................................................... [no-gen-acls, no-auth]
  |     o- acls ................................................................. [ACLs: 0]
  |     o- luns ................................................................. [LUNs: 0]
  |     o- portals ........................................................... [Portals: 0]
  o- loopback ................................................................ [Targets: 0]
/iscsi/iqn.20.../tpg1/portals> exit
Global pref auto_save_on_exit=true
Last 10 configs saved in /etc/target/backup.
Configuration saved to /etc/target/saveconfig.json
[root@zhangjh ~]# systemctl restart targetd
[root@zhangjh ~]# iptables -F
[root@zhangjh ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

 配置Linux客户端:

[root@zhangjh ~]# yum install iscsi-initiator-utils.i686 -y

 编辑iSCSI客户端中的initiator名称文件,把服务端的访问控制列表名称填写进来,而后重启客户端iscsid服务程序并将其加入到开机启动项中

[root@zhangjh ~]# vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2003-01.org.linux-iscsi.zhangjh.x8664:sn.762bbcbd6853:client
[root@zhangjh ~]# systemctl restart iscsid
[root@zhangjh ~]# systemctl enable iscsid
ln -s '/usr/lib/systemd/system/iscsid.service' '/etc/systemd/system/multi-user.target.wants/iscsid.service'

 iscsiadm是用于管理、查询、插入、更新或删除iSCSI数据库配置文件的命令行工具,用户须要先使用这个工具扫描发现远程iSCSI服务端,而后查看找到的服务端上有哪些可用的共享存储资源。

其中,-m discovery参数的目的是扫描并发现可用的存储资源,-t st参数为执行扫描操做的类型,-p 参数为iSCSI服务端的IP地址:

发现卷:

[root@zhangjh ~]# iscsiadm -m discovery -t st -p 192.168.38.251
192.168.38.251:3260,-1 iqn.2003-01.org.linux-iscsi.zhangjh.x8664:sn.858af61dee6c  #这个是前边多建立了一个
192.168.38.251:3260,1 iqn.2003-01.org.linux-iscsi.zhangjh.x8664:sn.762bbcbd6853

 登陆iSCSI服务端

[root@zhangjh ~]# iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.zhangjh.x8664:sn.762bbcbd6853 -p 192.168.38.251 --login
Logging in to [iface: default, target: iqn.2003-01.org.linux-iscsi.zhangjh.x8664:sn.762bbcbd6853, portal: 192.168.38.251,3260] (multiple)
Login to [iface: default, target: iqn.2003-01.org.linux-iscsi.zhangjh.x8664:sn.762bbcbd6853, portal: 192.168.38.251,3260] successful.

 在iSCSI客户端成功登陆以后,会在客户端主机上多出一块名为/dev/sdb的设备文件。

[root@zhangjh ~]# file /dev/sdb 
/dev/sdb: block special

 下面进入标准的磁盘操做流程:

[root@zhangjh ~]# mkfs.xfs /dev/sdb -f
log stripe unit (524288 bytes) is too large (maximum is 256KiB)
log stripe unit adjusted to 32KiB
meta-data=/dev/sdf               isize=256    agcount=16, agsize=654720 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0
data     =                       bsize=4096   blocks=10475520, imaxpct=25
         =                       sunit=128    swidth=256 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=5120, version=2
         =                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

 挂载并使用:

[root@zhangjh ~]# mkdir /iscsi
[root@zhangjh ~]# mount /dev/sdb /iscsi/
[root@zhangjh ~]# df -h
Filesystem             Size  Used Avail Use% Mounted on
/dev/mapper/rhel-root   18G  3.1G   15G  18% /
devtmpfs               909M     0  909M   0% /dev
tmpfs                  918M  140K  917M   1% /dev/shm
tmpfs                  918M  9.0M  909M   1% /run
tmpfs                  918M     0  918M   0% /sys/fs/cgroup
/dev/sr0               3.5G  3.5G     0 100% /media/cdrom
/dev/sda1              497M  119M  379M  24% /boot
/dev/sdb                40G   33M   40G   1% /iscsi

 今后之后,这个设备文件就如同是客户端本机主机上的硬盘那样工做了

 

若是咱们再也不须要使用iSCSI共享设备资源了,能够用iscsiadm命令的-u参数将其设备卸载:

[root@zhangjh ~]# iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.zhangjh.x8664:sn.762bbcbd6853 -u 
Logging out of session [sid: 1, target: iqn.2003-01.org.linux-iscsi.zhangjh.x8664:sn.762bbcbd6853, portal: 192.168.38.251,3260]
Logout of [sid: 1, target: iqn.2003-01.org.linux-iscsi.zhangjh.x8664:sn.762bbcbd6853, portal: 192.168.38.251,3260] successful.

 

 

 

配置windows客户端:

第1步:运行iSCSI发起程序。

 

第2步:扫描发现iSCSI服务端上可用的存储资源。

 

在弹出的“快速链接”提示框中可看到共享的硬盘存储资源,单击“完成”按钮便可

第3步:链接iSCSI服务端的共享存储资源。

因为在iSCSI服务端程序上设置了ACL,使得只有客户端名称与ACL策略中的名称保持一致时才能使用远程存储资源,所以须要在“配置”选项卡中单击“更改”按钮,把iSCSI发起程序的名称修改成服务端

而后点击链接

显示链接成功:格式化分区便可使用

相关文章
相关标签/搜索