文章防盗链地址:http://jackcui.blog.51cto.com/
一、常见的存储类型和iSCSI 概念及介绍
1.1 常见的三种存储类型
DAS(Direct-AttachedStorage)直接附加存储,存储设备一般通过scsi/ide总线直接连接到主机上,常见的如SATA硬盘,SAS硬盘等,直接通过准线连接到计算机主板上面。该方式显著的优点就是传输速度快,但传输距离受总线长度限制,且只能供本地使用。
NAS(Network AttachedStorage)网络附加存储,将存储设备与服务器分离,集中管理数据,从而提升并发存储能力、降低维护成本。典型的应用示例有NFS服务器,SAMBA服务器,NFS服务器等文件服务器,通过向外提供文件系统的方式向外提供存储
SAN(Storage Area Network)存储区域网络,采用FC(Fibre Channel)光纤通道或者Ethernet进行远距离传输,区别于Fiber Channel光纤通道技术,通过FC交换机连接存储阵列和服务器主机,建立专用于数据存储的区域网络。
SAN架构图
1.2 三种存储类型的区别
DAS与SAN都是块级别(Block-level)的存储,而NAS是文件系统(File System level)级的存储。因为文件系统是操作系统对磁盘数据的一次封装。每次对数据访问时提供文件服务的服务器都要对数据进行数据封装,和解封装,然后再对块设备磁盘进行读写。而DAS是直接对块设备进行读写,因此NAS的存储速度不如前面两者。
SAN(Storage Area Network)相当于模拟了远距离传输的DAS,特点是速度快。支持的并发服务主机数量多。大家都知道远距离传输是需要跨越Internet,而广域网的带宽是远不能和局域网相比的,因此缺点便是网络速度瓶颈问题。
1.3 iSCSI简介
iSCSI(Internet SmallComputer System Interface)基于Internet的小型计算机系统接口,由IBM公司研究开发的,是一个可以让硬件设备在IP协议的上层运行的SCSI指令集存储技术,可以实现在IP网络上运行SCSI协议,使其能够在诸如高速千兆以太网上进行路由选择。iSCSI技术是一种新储存技术,该技术是将现有SCSI接口与以太网络(Ethernet)技术结合,使服务器可通过IP网络进行远距离SCSI类型的数据存储设备由 SCSI 总线连接。iSCSI 的主要功能是在 TCP/IP 网络上的主机系统(启动器 initiator)和存储设备(目标器 target)之间进行大量数据的封装和可靠传输过程。此外,iSCSI 提供了在 IP 网络封装 SCSI 命令,且以TCP/IP协议传输。iSCSI服务端程序监听端口为明文的TCP/3260。
iSCSI数据帧封装格式
二、iSCSI相关术语与常用命令该介绍
2.1 iSCSI相关术语
启动器:一个iscsi客户端,通常以软件提供,但是也可以作为iSCSI HBA来实施。必须为启动器授予唯一名称。
目标:一个iSCSI存储资源,针对来自iSCSI服务器的连接而配置。必须为目标授予唯一目标。目标提供一个或多个低啊有编号的快射别,称为逻辑单元。一个iSCSI服务器可以同时提供多个目标。
发现:查询目标服务器以列出配置的目标。
ACL:访问权限控制列表,一种使用节点IQN(通常是启动器名称)来验证启动器的访问权限的访问限制。
IQN:iSCSI限定名称,全球唯一名称,用于以强制命名格式来识别启动器和目标。
IQN格式如下:
iqn.YYYY-MM.com.reversed.domain[:optional_string]
iqn:表示此名称使用域为标识符。
YYYY-MM:表示拥有域名的年月时间。
com.reversed.domain:拥有此iSCSI组织的逆向域名
:optional_string:以冒号为前缀的可选字符串,全球唯一,由域所有者分配,其中可包含冒号为分割符的组织边界
LUN:逻辑单元号,带有编号的块设备,连接到目标且通过目标来使用。可以有一个或多个LUN连接到单个目标,但通常一个目标提供一个LUN
节点:任何一个iSCSI启动器或iSCSI目标,由其IQN来标识。
TPG:目标门户组,某个特定iSCSI目标要侦听的接口IP地址和TCP端口的集合。可以将目标配置添加到TPG以协调多个LUN的设置。
门户:目标或启动器上用于建立的IP地址和端口。
2.2 iSCSI客户端和服务器端命令介绍
2.2.1 服务器端命令
在服务器端可以使用targetcli交互式shell工具,在其中可以创建删除和配置iSCSI目标组件,并且在此命令行工具中支持shell常用的Linux命令:cd、ls、pwd等。可以通过yum安装targetcli包提供此命令(此命令是红帽7.2版本才支持的命令,之前使用tgtadm命令管理iSCSI设备)。
2.2.2 客户端命令:
客户端需要安装iscsi-initiator-utils包,以供发现目标门户提供的块设备。配置文件路径为/etc/iscsi/iscsid.conf。在客户端也有两个服务脚本需要启动(建议开机自启),分别为/etc/rc.d/init.d/iscsi和/etc/rc.d/init.d/iscsid。只要启动iscsi,iscsid就会自动启动。客户端命令工具为/sbin/iscsiadm。
iscsiadm也是一个模式化的命令,是客户端的命令
-m {discovery|node|session|iface}
discovery:发现某个server是否有target输出及有哪些输出
node:自己作为节点与server端建立连接
session:查看会话
iface:进行接口管理的
-d:debug_lebel 等级为0—8越高输出的debug信息越详细,可省略
-I:指定使用哪个网络接口,如果只有一块网卡则不用指定
-t:sendtarget,slp,iSNS三种形式,一般用的是sendtarget简写为st
-p:IP:port IP为server的IP,port可以省略,默认为3260
发现输出target后与登录target有关的
-U 登出
-R 重新登入
-l 登入
-T 指定targetname
-p 指定server的IP/port
-s 显示session的统计数据
三、简单示例配置
##iSCSI服务器配置##
注:实验前首先使用fdisk /dev/vdb划分一块分区分区为/dev/vdb1。如果在真实环境当中使用相应的设备名即可,如raid设备在Linux中一般也被识别为/dev/sd*。可以自行判断即可。
#yum install targetcli -y 安装服务器软件包:
#systenctl start target 启动服务
#targetcli 进入命令行
上图中创建后备存储,共有block,fileio,pscsi,ramdisk四种,但是一般常用的为block,次之为fileio。block类型的一般为服务器定义的块设备,fileio为服务器文件系统指定大小的文件,其他一般使用较少,就不详细介绍。
注:westos:storage1为后端存储的名字,/dev/vdb1为磁盘设备分区
上图操作:为目标创建IQN,名字为iqn.2016-12.com.example:storage1.此步骤将默认创建一个TPG.
上图操作:在tpg中创建一个ACL以供客户端使用。
上图操作:创建LUN,系统默认将创建的LUN和之前创建的ACL关联并激活每个后备存储,上图没有创建门户,将使用默认监听所有IP地址,并使用标准的iSCSI 3260端口。当然也可以在tgp中使用portals来创建相应的IP地址和端口。
#systemctl stop firewalld 关闭火墙或者在防火墙中添加相应的规则
##客户端配置##
#yum install iscsi-initiator-utils 安装客户端软件包
#vim/etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2016-12.com.example:key1 设置发起端的IQN
#systemctl start iscsi
#iscsiadm -m discovery -t st -p 172.25.254.108:3260iqn.2016-12.com.example:storage1 查找iSCSI服务器所提供的iSCSI目标
登录服务器上的一个或多个iscsi目标
iscsiadm -m node -T iqn.2016-12.com.example:storage1 -p172.25.254.108 -l
此时,可以使用iSCSI磁盘,就好像它是本地连接硬盘驱动器。例如,通过文件系统格式化分区或作为LVM物理卷。
注:在/etc/fstab中永久挂载文件系统
使用blkid确定文件系统UUID并使用UUID挂载,而不是/dev/sd*设备名称。(每次引导时显示的设备名称都不同,具体取决于iSCSI设备通过网络进行响应的顺序。如果按设备名称挂载,这会导致使用错误的设备。)
在/etc/fstab中使用_netdev作为挂载选项。(这将确保客户端不会尝试挂载文件系统,直至启用联网。否则,在引导时系统将出错。)
/dev/sdb1 /mnt/ xfs defaults,_netdev 0 0
确保iscsi服务在引导时启动。
##停止使用iSCSI目标##
确保没有使用目标所提供的任何设备。
确保从/etc/fstab等位置中删除使用目标的所有永久挂载。
退出iSCSI目标,以断开连接。
iscsiadm -m node -T iqn.2016-12.com.example:storge1 -u
# iscsiadm -m node -T iqn.2016-12.com.example:storge1 -o delete 删除iSCSI目标的本地记录,以永久断开连接。
文章防盗链地址:http://jackcui.blog.51cto.com/