Iscsi

NAS和SAN

        如果你的系统需要大量的磁盘容量,但是身边却没有外接存储设备,仅有 个人计算机时,那该怎么办?

        通过网络的SCSI磁盘(iSCSI)就能够提供帮助。这个iscsi是将来自 网络的数据仿真成本机的SCSI设备,因此可以进行诸如LVM等方面的操 作,而不是单纯使用服务器端提供的文件系统而已,相当有帮助。

        作为服务器的系统,通常是需要存储设备的,而存储设备出来可以使用系 统内置的磁盘之外,如果内置的磁盘容量不够大,而且也没有额外的磁盘 插槽可用时,那么常见的解决方案就是增加NAS:Network Attached Storage(网络附加存储服务器)或外接式存储设备。在高档一点的系统, 可能就会用到SAN:Storage Area Network(存储局域网)

NAS(网络附加存储服务器)

        NAS 是一部客制化好的主机,只要将 NAS 连接上网 络, 那么在网络上面的其他主机就能够存取 NAS 上头的资料了。 简单的 说,NAS 就是一部 file server ,不过, NAS 由于也是接在网络上面, 所 以, 如果网络上有某个用户大量存取 NAS 上头的数据时, 是很容易造成 网络停顿的问题的, 这个比较麻烦点~低阶的 NAS 通常会使用 Linux 系统 搭配软件磁盘阵列来提供大容量文件系统。 不过效能嘛就有待加强啦! 此 外, NAS 也通常支持 TCP/IP , 并会提供 NFS, SAMBA, FTP 等常见的通讯 协议来提供客户端取得文件系统。

        通常 NAS还会包括很多组态的接口, 通常是利用 Web 接口来控制 磁盘阵列的设定状况、 提供 IP 或其他相关网络设定, 以及是否提供某些特 定的服务等等。因为具有较为亲和的操作与控制接口, 对于非 IT 的人员来 说, 控管较为容易啦。 这也是 NAS 存在的目的。

SAN(存储局域网络)

        如果你有大量磁盘使用的需求,单部主机的插槽是有限的,这时候就得用SAN

        最简单的看法, 就是将 SAN 视为一个外接式的储存设备。只是单纯的外接式储存设备。仅能透过某些接口 (如 SCSI 或 eSATA) 提供单一部主机使用,而 SAN 却可以透过某些特殊的接口或信道来提供局域网络内的所有机器进行 磁盘存取。注意:SAN 是提供『磁盘 (block device) 』 给主机用,而 不是像 NAS 提供的是『网络协议的文件系统 (NFS, SMB. . . ) 』 ! 这两者 的差异挺大的喔! 因此, 挂载使用 SAN 的主机会多出一个大磁盘, 并可 针对 SAN 提供的磁盘进行分割与格式化等动作。

        另外, 既然 SAN 可以提供磁盘, 而 NAS 则是提供相关的网络文件系统, 那么 NAS 能不能透过网络去使用 SAN 所提供的磁盘呢?

        答案当然是可以 啊!因为 SAN 最大的目的就是在提供磁盘给服务器主机使用, NAS 也是一部完 整的服务器, 所以 NAS 当然可以使用 SAN 啦! 同时其他的网络服务器也 能够使用这个 SAN 来进行数据存取。

ISCSI 架构

        iSCSI target:就是储存设备端,存放磁盘或RAID的设备,目前也能够 将Linux主机仿真成iSCSI target了!目的在于提供其他主机使用的『磁 盘』;

         iSCSI initiator:就是能够使用target的客户端,通常是服务器。也就是 说,想要连接到iSCSI target的服务器,也必须要安装iSCSI initiator的 相关功能后才能够使用iSCSI target提供的磁盘就是了。

        Internet Small Computer System Interface:Internet 小型计算机系统接 口,是一个基于 TCP/IP 的协议,主要用于通过 IP 网络仿真 SCSI,从而为 远程块存储设备提供数据传输和管理。说白了,就是通过网络由专门的服 务器提供存储管理,以实现数据的远程储存,便于数据的集中管理,从而 简化了数据复制、迁移和容灾。    

基本概念    

        ACL:访问权限控制列表,用来验证客户端启动器的访问,通 常是客户端 iSCSI 启动器的 IQN 名称

        IQN:用于标识单个 iSCSI 目标和启动器的唯一名称(全部小写)

        WWN用于标识单个光纤通道端口和节点的唯一编号

        TARGET:iSCSI 服务器上的存储资源

        LUN:iSCSI 服务器上的块设备

        initiator(启动器):以软件或硬件实施的 iSCSI 客户端

        NODE:单个 iSCSI 启动器或者目标

        TPG:启动器或者目标上的单个 IP 连接地址

        Portal:网络接口及端口

ISCSI架构实验

        实验环境准备:

                        Server---->Target                        Client---->lnitiator

                        192.168.1.60                               192.168.1.61

                        /dev/sdc

            基本概念:在SAN中,主机一般都是Initiator,存储设备则是Target。

            Initiator //发起者

                SCSI会话的发起方

                向Target请求LUN,并将数据的读写指令发送给Target。 //目标

            Target(默认采用TCP 3260端口)

                接受SCSI会话的一方

                它接收来自Initiator的指令,为Initiator提供LUN,并实现对LUN的读写

        //在开始做实验之前,首先统一实验环境,准备2台虚拟机,分别都给其手动 配IP,为了做区分,这里我给虚拟机重新命名了。

        //首先再server端操作

[root@server ~]# yum -y install targetd targetcli
[root@server ~]# systemctl start target
[root@server ~]# systemctl enable target
Created symlink from /etc/systemd/system/multiuser.target.wants/target.service to
/usr/lib/systemd/system/target.service.
[root@server ~]# 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 Sat 2020-05-09 18:12:28
CST; 9s ago
Main PID: 17317 (code=exited, status=0/SUCCESS)
...

        //设置防火墙

[root@server ~]# firewall-cmd --add-port=3260/tcp --
permanent
success
[root@server ~]# firewall-cmd --reload
success
[root@server ~]# firewall-cmd --list-ports
3260/tcp

        //执行targetcli工具

        基本思路:

                先把准备共享的块做出来,创建一个target,在target上创建LUN,一个 LUN连接一个块。

                // 注意,执行完targetcli命令以后,出错,是因为缺少包导致的,需要下载 一个包。

                        yum -y install python-rtslib

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

Server端

        1、指定要发布的磁盘(块设备LUN)

/> /backstores/block create server0.disk1 /dev/sdc
Created block storage object server0.disk1 using /dev/sdc.
注: server0.disk1 是给/dev/sdc转化成块的名字。

        2、创建iqn名字即创建ISCSI对象。

/> /iscsi create iqn.2020-05.com.bdqn:disk1
Created target iqn.2020-05.com.bdqn:disk1.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0),
port 3260.

        3、设置ACL即将ISCSI对象与客户端IP或主机名绑定

/> /iscsi/iqn.2021-07.com.bdqn:disk1/tpg1/acls create
iqn.2021-07.com.bdqn:client1
Created Node ACL for iqn.2021-07.com.bdqn:client1
注:iqn.2021-07.com.bdqn:client1是 initiator 的名字,需要在客户
端中设置的。

        4、创建LUN并绑定块

/> /iscsi/iqn.2020-05.com.bdqn:disk1/tpg1/luns create
/backstores/block/server0.disk1
Created LUN 0.
Created LUN 0->0 mapping in node ACL iqn.2020-
05.com.bdqn:client1
注: 可以查看/etc/target/saveconfig.json配置文件,该配置文件保存
着ISCSI的配置。

Client端

        1、安装工具

[root@client ~]# yum -y install iscsi-initiator-utils

        2、给initiator命名

[root@client ~]# vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2021-07.com.bdqn:client1

        3、启动服务

[root@client ~]# systemctl start iscsi
[root@client ~]# systemctl enable iscsi
[root@client ~]# systemctl status iscsi
● iscsi.service - Login and scanning of iSCSI devices
Loaded: loaded (/usr/lib/systemd/system/iscsi.service;
enabled; vendor preset: disabled)
Active: inactive (dead)
Condition: start condition failed at Sat 2020-05-09
19:23:49 CST; 10s ago
Docs: man:iscsiadm(8)
man:iscsid(8)

        4、发现存储

[root@client ~]# iscsiadm -m discovery -t st -p
192.168.1.60
192.168.1.60:3260,1 iqn.2020-05.com.bdqn:disk1

        discovery:发觉、发现。可以用iscsiadm --help 查看下语法。

        iscsiadm是基于命令行的iscsi管理工具,提供了对iSCSI节点、会话、 连接以及发现记录的操作。

        参数:

                -m {discovery|node|session|iface} #{发现某服务器是否有target 输出,以及输出了哪些target|管理跟某target的关联关系|会话管理 | 接口管理}

                -d {0-8} #打印调试信息,有0到8这9个等级

                -t  #这里可以使用的类型为sendtargets(可简写为st)、slp、fw和 isns,此选项仅用于discovery模式,且目前仅支持st、fw和isns;其中 st表示允许每个iSCSItarget发送一个可用target列表给initiator;

                -T #用于指定target的名字

                -p #指定target服务的IP和端口, -p 192.168.1.55:3260

                -o #指定针对discoverydb数据库的操作,其仅能为new、 delete、update、show和nonpersistent其中之一

                -I #指定执行操作的iSCSI接口,这些接口定义 在/var/lib/iscsi/ifaces中

                -l #登录节点

                -u #登出节点(服务器)

        5、登录存储/连接target

[root@client ~]# iscsiadm -m discovery -t st -p
192.168.1.60 -l
192.168.1.60:3260,1 iqn.2020-05.com.bdqn:disk1
Logging in to [iface: default, target: iqn.2020-
05.com.bdqn:disk1, portal: 192.168.1.60,3260] (multiple)
Login to [iface: default, target: iqn.2020-
05.com.bdqn:disk1, portal: 192.168.1.60,3260] successful.

注:-l表示连接ISCSI目标;-u表示断开和ISCSI目标的连接。如果登录
不成功,可以尝试重启iscsi服务:[root@client ~]# systemctl restart
iscsid,这里需要重启client服务器。

        6、验证iscsi连接,查看是否得到外界硬盘

[root@client ~]# lsscsi
[0:0:0:0] disk VMware, VMware Virtual S 1.0
/dev/sda
[2:0:0:0] cd/dvd NECVMWar VMware IDE CDR10 1.00
/dev/sr0
[3:0:0:0] disk LIO-ORG server0.disk1 4.0
/dev/sdb

        //然后就可以像操作本地磁盘一样来操作iscsi磁盘 了。

[root@client ~]# gdisk /dev/sdb
...
Number Start (sector) End (sector) Size Code
Name
1 2048 10487807 5.0 GiB 8300
Linux filesystem
2 10487808 20971486 5.0 GiB 8300
Linux filesystem
[root@client ~]# partprobe /dev/sdb
[root@client ~]# partprobe /dev/sdb
[root@client ~]# partprobe /dev/sdb
[root@client ~]# cat /proc/partitions
major minor #blocks name
8 16 10485760 sdb
8 17 5242880 sdb1
8 18 5241839 sdb2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

自然醒o./

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值