使用iSCSI Target创建集中式安全存储(一)

使用iSCSI Target创建集中式安全存储(一)

iSCSI 是一种块级别的协议,用于通过TCP/IP网络共享原始存储设备,可以用已经存在的IP和以太网如网卡、交换机、路由器等通过iSCSI协议共享和访问存储。iSCSI target是一种由远程iSCSI服务器(target)提供的远程硬盘。

在Linux中安装iSCSI Target

我们不需要占用很大的资源就可以为客户端提供稳定的连接和性能。iSCSI服务器称为“Target(目标器)”,它提供服务器上的存储共享。iSCSI客户端称为“Initiator(发起程序)”,它访问目标器共享的存储。市场中有卖的用于大型存储服务如SAN的iSCSI适配器。

我们为什么要在大型存储领域中使用iSCSI适配器

以太网适配器(NIC)被设计用于在系统、服务器和存储设备如NAS间传输分组数据,它不适合在Internet中传输块级数据。

iSCSI Target的功能

  • 可以在一台机器上运行几个iSCSI 目标器
  • 一台机器可以提供多个iSCSI 目标器用于iSCSI SAN访问
  • 一个目标器就是一块存储,并且可以通过网络被发起程序(客户端)访问
  • 把这些存储汇聚在一起让它们在网络中可以访问的是iSCSI LUN(逻辑单元号)
  • iSCSI支持在同一个会话中使用多个连接
  • iSCSI发起程序在网络中发现目标接着用LUN验证并登录,这样就可以本地访问远程存储。
  • 我们可以在本地挂载的LUN上安装任何操作系统,就像我们安装我们本地的操作系统一样。

为什么需要iSCSI?

在虚拟化中,我们需要存储拥有高度的冗余性、稳定性,iSCSI以低成本的方式提供了这些特性。与使用光纤通道的SAN比起来,我们可以使用已经存在的设备比如NIC、以太网交换机等建造一个低成本的SAN。

现在我开始使用iSCSI 目标器安装并配置安全存储。本篇中,我们遵循下面的步骤:

  • 我们需要隔离一个系统来设置iSCSI 目标器和发起程序(客户端)。
  • 在大型存储环境中可以添加多个硬盘,但是这里我们除了基本的安装盘之外只使用了一个额外的驱动器。
  • 这里我们只使用了2块硬盘,一个用于基本的服务器安装,另外一个用于存储(LUN),这个我们会在这个系列的第二篇描述。

主服务器设置

  • 操作系统 – CentOS 6.5 (Final)
  • iSCSI 目标器 IP – 192.168.0.200
  • 使用的端口 : TCP 860, 3260
  • 配置文件 : /etc/tgt/targets.conf

安装 iSCSI Target

打开终端并使用yum命令来搜索需要在iscsi 目标器上安装的包名。


  1. # yum search iscsi

输出示例


  1. ========================== N/S matched: iscsi =======================
  2. iscsi-initiator-utils.x86_64 : iSCSI daemon and utility programs
  3. iscsi-initiator-utils-devel.x86_64 : Development files for iscsi-initiator-utils
  4. lsscsi.x86_64 : List SCSI devices (or hosts) and associated information
  5. scsi-target-utils.x86_64 : The SCSI target daemon and utility programs

你会的到上面的那些结果,选择Target包来安装。


  1. # yum install scsi-target-utils -y

安装iSCSI工具

列出安装的包里面的内容来了解默认的配置、服务和man页面的位置。


  1. # rpm -ql scsi-target-utils.x86_64

列出所有的iSCSI包里面的文件

让我们启动iSCSI服务,并检查服务运行的状态,iSCSI的服务名是tgtd。


  1. # /etc/init.d/tgtd start
  2. # /etc/init.d/tgtd status

启动iSCSI服务

现在我们需要配置开机自动启动。


  1. # chkconfig tgtd on

现在验证tgtd服务的运行级别是否配置正确。


  1. # chkconfig --list tgtd

开机启动iSCSI

现在使用tgtadm来列出在我们的服务器上已经配置了哪些target和LUN。


  1. # tgtadm --mode target --op show

tgtd已经安装并在运行了,但是上面的命令没有输出因为我们还没有在Target服务器上定义LUN。要查看手册,可以运行‘man‘命令。


  1. # man tgtadm

iSCSI Man 页面

如果你的目标器上有iptable的话,那么我们需要为iSCSI添加iptable规则。首先使用netstat命令找出iscsi target的端口号,目标器总是监听TCP端口3260。


  1. # netstat -tulnp | grep tgtd

找出iSCSI端口

下面加入如下规则让iptable允许广播iSCSI 目标器发现包。


  1. # iptables -A INPUT -i eth0 -p tcp --dport 860 -m state --state NEW,ESTABLISHED -j ACCEPT
  2. # iptables -A INPUT -i eth0 -p tcp --dport 3260 -m state --state NEW,ESTABLISHED -j ACCEPT

打开iSCSI端口

添加iSCSI端口到iptable中

注意: 规则可能根据你的默认链策略而不同。接着保存iptable并重启该服务。


  1. # iptables-save
  2. # /etc/init.d/iptables restart

重启iptable

现在我们已经部署了一个目标器来共享LUN给通过TCP/IP认证的发起程序。这也适用于从小到大规模的生产环境。

在我的下篇文章中,我会展示如何在目标器中使用LVM创建LUN,并且如何在客户端中共享LUN,不要忘记留下有价值的评论。

----------------------------------------------------------------------------------------------------------------------------

原文发布时间:2015-03-02
本文来自云栖合作伙伴“linux中国”
时间: 2024-11-01 11:23:41

使用iSCSI Target创建集中式安全存储(一)的相关文章

在 iSCSI Target 服务器中使用LVM创建和设置LUN(二)

在 iSCSI Target 服务器中使用LVM创建和设置LUN(二) LUN是逻辑单元号,它与iSCSI存储服务器共享.iSCSI 目标器通过TCP/IP网络共享它的物理驱动器给发起程序(initiator).这些来自一个大型存储(SAN:Storage Area Network)的驱动器集合称作LUN.在真实环境中LUN是在LVM中定义的,因为它可以按需扩展. 在目标器中使用 LVM 创建 LUN 为什么使用LUN? LUN用于存储,SAN存储大多数由LUN的集群来组成存储池,LUN由目标器

ISCSI target的两种安装方法

1 tgt程序架构 tgt是用户态实现的iscsi target,而iet(iscsi enterprise target)是在内核态实现的target,tgt相比于iet来说,因为其用户态实现,方便调试,新加入一些功能等,不过性能相比iet来说要稍差一点. 1)安装tgt CentOS 自带了scsi-target-utils 软件,我们使用该软件进行target设置. # yum -y install scsi-target-utils 2 )规划共享的iscsi target文件名 通常的

iscsi target tgt架构

tgt是用户态实现的iscsi target,而iet(iscsi enterprise target)是在内核态实现的target,tgt相比于iet来说,因为其用户态实现,方便调试,新加入一些功能等,不过性能相比iet来说要稍差一点.下面就介绍一下tgt的程序框架(略过iscsi协议解析处理部分),以便于整体把握tgt的代码,方便后续的一些修改. 1.整体框架 这里借用tgt官网给出的一张图.   tgt中命令的操作,与initiator端的通信都是通过epoll来实现的,下面分别对这两部分

iscsi target IET架构

IET(iSCSI Enterprise Target)是内核态实现的iscsi target,相比于用户态实现的target(比如tgt),iet比较稳定,并且也算是历史悠久,io都直接经过内核态,性能比较好.本文主要针对IET的程序架构,从程序模块,命令操作处理流程,initiator与target的交互,I/O处理流程进行分析. 1.程序模块 IET包含3部分:ietadm,ietd,iscsi_trgt,其中ietadm是命令行工具,提供target,lun的创建.删除.参数设置等操作:

Windows Storage Server 2008 x64和iSCSI Target 3.2下载发布

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   微软Windows Storage Server 2008是在Windows Server 2008的基础上经过优化的可靠和灵活的文件服务,能够提供更好的文件服务性能.微软在其上增加了先进的存储技术,如文件的重复数据删除和iSCSI Software Target,以及存储设备内基于文件块的存储和打包传输.同样的,微软的合作伙伴会提供专门的硬件,推出更多的软件组

LiveMigration实战之三:ISCSI Target部署配置

我们已经搭建了一个域,而且在域内的两台计算机上部署了Windows Server 2008 R2.本文中我们准备让Windows Storage Server 2008除了担当域控制器外,还要行使另外一个职能:充当群集的共享存储.Windows Server 2008 R2能支持虚拟机的动态迁移,关键是要让虚拟机存储在群集共享卷中.群集共享卷指的是由群集内的每个节点都能共同访问的一个存储设备,我们在本次实验中准备用Windows Storage Server 2008来模拟这个存储设备. 从微软

HDFS集中式的缓存管理原理与代码剖析

Hadoop 2.3.0已经发布了,其中最大的亮点就是集中式的缓存管理(HDFS centralized cache management).这个功能对于提升Hadoop系统和上层应用的执 行效率与实时性有很大帮助,本文从原理.架构和代码剖析三个角度来探讨这一 功能. 主要解决了哪些问题 用户可以根据自己的逻辑指定一些经常被使用的数据或者高优先级任务对应的 数据,让他们常驻内存而不被淘汰到磁盘.例如在Hive或Impala构建的数据仓库 应用中fact表会频繁地与其他表做JOIN,显然应该让fa

iSCSI的配置全攻略(ISCSI Target/initiator)

1.Target端的配置 target端即磁盘阵列或其他装有磁盘的主机.通过iscsitarget工具将磁盘空 间映射到网络上,initiator端就可以寻找发现并使用该磁盘. 注意,一个target主机上可以映射 多个target到网络上,即可以映射多个块设备到网络上. 1)软件包 iscsitarget 可以从 http://sourceforge.net/projects/iscsitarget/files/下载最新版本. 2)编译安装 很简单 ,解包,编译,安装就可以. tar zxvf

集中式日志管理部署下的Log输出

集中式日志管理部署下的Log输出 Log是程序记录执行过程,辅助排查问题的必备良药.随着后台程序越来越复杂,集群规模越来越大,通常会引入集中式程序日志管理,比如使用splunk或者ELK统一管理日志.Log打的好,排错无烦恼,但是往往打不好.下面就聊聊怎么打Log,特别是在使用集中式日志管理架构时. 为什么Log输出变得越来越难 一句话描述Log查找的需求:根据查询条件,返回并且仅返回所关注的用例相关的所有上下文. 怎么变难的: 单线程同步:有时间戳和重要参数值就差不多了 多线程同步:你可能需要