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,不要忘记留下有价值的评论。

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

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

    LUN是逻辑单元号,它与iSCSI存储服务器共享.iSCSI 目标器通过TCP/IP网络共享它的物理驱动器给发起程序(initiator).这些来自一个大型存储(SAN:Storage Area Ne ...

  2. iSCSI集群与存储

                                                                                                        ...

  3. CentOS7 下安装 iSCSI Target(tgt) ,使用 Ceph rbd

    目录 一.iSCSI 介绍 1. iSCSI 定义 2. 几种常见的 iSCSI Target 3. 优缺点比较 二.安装步骤 1. 关闭防火墙 2. 关闭selinux 3. 通过 yum 安装 t ...

  4. iOS开发——源代码管理——git(分布式版本控制和集中式版本控制对比,git和SVN对比,git常用指令,搭建GitHub远程仓库,搭建oschina远程仓库 )

    一.git简介 什么是git? git是一款开源的分布式版本控制工具 在世界上所有的分布式版本控制工具中,git是最快.最简单.最流行的   git的起源 作者是Linux之父:Linus Bened ...

  5. 集中式(SVN)和分布式(Git)版本控制系统的简单比较

       集中式(SVN)  分布式(Git)  是否有中央服务器  有.开发人员需要从中央服务器获得最新版本的项目然后在本地开发,开发完推送给中央服务器.因此脱离服务器开发者是几乎无法工作的  没有中央 ...

  6. ELK+Filebeat 集中式日志解决方案详解

    链接:https://www.ibm.com/developerworks/cn/opensource/os-cn-elk-filebeat/index.html?ca=drs- ELK Stack ...

  7. 理解OpenShift(6):集中式日志处理

    理解OpenShift(1):网络之 Router 和 Route 理解OpenShift(2):网络之 DNS(域名服务) 理解OpenShift(3):网络之 SDN 理解OpenShift(4) ...

  8. elk + filebeat,6.3.2版本简单搭建,实现我们自己的集中式日志系统

    前言 刚从事开发那段时间不习惯输出日志,认为那是无用功,徒增代码量,总认为自己的代码无懈可击:老大的叮嘱.强调也都视为耳旁风,最终导致的结果是我加班排查问题,花的时间还挺长的,要复现问题.排查问题等, ...

  9. iscsi target tgt架构

    tgt是用户态实现的iscsi target,而iet(iscsi enterprise target)是在内核态实现的target,tgt相比于iet来说,因为其用户态实现,方便调试,新加入一些功能 ...

随机推荐

  1. laravel5.5服务提供器

    目录 1. 编写服务提供器 1.1 注册方法 register 1.1.1 简单绑定 1.1.2 绑定单例 1.1.3 绑定实例 1.1.4 绑定初始数据 1.2 引导方法 boot 2. 注册服务提 ...

  2. 《Cracking the Coding Interview》——第6章:智力题——题目2

    2014-03-19 06:57 题目:对于8x8的棋盘,如果拿掉对角位置的两个小块儿,能否用1x2的多米诺牌拼成剩下的棋盘? 解法:不可能.且不说8x8,NxN都是不可能的.如果N是奇数,NxN-2 ...

  3. Django 运行 端口被占用 Error: That port is already in use

    本来运行项目:python manage.py runserver 8000 发现运行到结果报错: Error: That port is already in use 首先查看已存在端口号列表: $ ...

  4. Oz 创建CentOS7镜像

    参考链接: https://github.com/clalancette/oz/wiki/Oz-template-description-language https://github.com/cla ...

  5. 关于 vee-validate直接引用的方法

    转载于:https://blog.csdn.net/hy111/article/details/79046500?%3E 由于当前项目使用的是基于jQuery的前端结构,尝试在新增需求中使用VUE2, ...

  6. django ORM中的表关系

    多对一: 为了方便理解,两个表之间使用ForeignKey连接时,使用ForeignKey的字段所在的表为从表,被ForeignKey连接的表为主表. 使用场景:书和出版社之间的关系,一本书只能由一个 ...

  7. zedboard zynq 学习 sobel 边缘检测 IP核 制作 根据 文档 Xapp890

    官方文档http://www.xilinx.com/support/documentation/application_notes/xapp890-zynq-sobel-vivado-hls.pdf ...

  8. hexo 配置文件 实例

    # Hexo Configuration ## Docs: https://hexo.io/docs/configuration.html ## Source: https://github.com/ ...

  9. HttpWebRequest调用WebService后台需要Session信息问题的解决办法

    今天在用HttpWebRequest调用后台ASP.NET 的WebService方法时遇到了一个问题,后台的WebService方法里使用到了Session对象中的用户信息,而Session对象中的 ...

  10. hdu 3499 Flight (最短路径)

    Flight Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total Su ...