使用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 目标器上安装的包名。
- # yum search iscsi
输出示例
- ========================== N/S matched: iscsi =======================
- iscsi-initiator-utils.x86_64 : iSCSI daemon and utility programs
- iscsi-initiator-utils-devel.x86_64 :Development files for iscsi-initiator-utils
- lsscsi.x86_64 :List SCSI devices (or hosts)and associated information
- scsi-target-utils.x86_64 :The SCSI target daemon and utility programs
你会的到上面的那些结果,选择Target包来安装。
- # yum install scsi-target-utils -y

安装iSCSI工具
列出安装的包里面的内容来了解默认的配置、服务和man页面的位置。
- # rpm -ql scsi-target-utils.x86_64

列出所有的iSCSI包里面的文件
让我们启动iSCSI服务,并检查服务运行的状态,iSCSI的服务名是tgtd。
- # /etc/init.d/tgtd start
- # /etc/init.d/tgtd status

启动iSCSI服务
现在我们需要配置开机自动启动。
- # chkconfig tgtd on
现在验证tgtd服务的运行级别是否配置正确。
- # chkconfig --list tgtd

开机启动iSCSI
现在使用tgtadm来列出在我们的服务器上已经配置了哪些target和LUN。
- # tgtadm --mode target --op show
tgtd已经安装并在运行了,但是上面的命令没有输出因为我们还没有在Target服务器上定义LUN。要查看手册,可以运行‘man‘命令。
- # man tgtadm

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

找出iSCSI端口
下面加入如下规则让iptable允许广播iSCSI 目标器发现包。
- # iptables -A INPUT -i eth0 -p tcp --dport 860 -m state --state NEW,ESTABLISHED -j ACCEPT
- # iptables -A INPUT -i eth0 -p tcp --dport 3260 -m state --state NEW,ESTABLISHED -j ACCEPT

打开iSCSI端口

添加iSCSI端口到iptable中
注意: 规则可能根据你的默认链策略而不同。接着保存iptable并重启该服务。
- # iptables-save
- # /etc/init.d/iptables restart

重启iptable
现在我们已经部署了一个目标器来共享LUN给通过TCP/IP认证的发起程序。这也适用于从小到大规模的生产环境。
在我的下篇文章中,我会展示如何在目标器中使用LVM创建LUN,并且如何在客户端中共享LUN,不要忘记留下有价值的评论。
使用iSCSI Target创建集中式安全存储(一)的更多相关文章
- 在 iSCSI Target 服务器中使用LVM创建和设置LUN(二)
LUN是逻辑单元号,它与iSCSI存储服务器共享.iSCSI 目标器通过TCP/IP网络共享它的物理驱动器给发起程序(initiator).这些来自一个大型存储(SAN:Storage Area Ne ...
- iSCSI集群与存储
...
- CentOS7 下安装 iSCSI Target(tgt) ,使用 Ceph rbd
目录 一.iSCSI 介绍 1. iSCSI 定义 2. 几种常见的 iSCSI Target 3. 优缺点比较 二.安装步骤 1. 关闭防火墙 2. 关闭selinux 3. 通过 yum 安装 t ...
- iOS开发——源代码管理——git(分布式版本控制和集中式版本控制对比,git和SVN对比,git常用指令,搭建GitHub远程仓库,搭建oschina远程仓库 )
一.git简介 什么是git? git是一款开源的分布式版本控制工具 在世界上所有的分布式版本控制工具中,git是最快.最简单.最流行的 git的起源 作者是Linux之父:Linus Bened ...
- 集中式(SVN)和分布式(Git)版本控制系统的简单比较
集中式(SVN) 分布式(Git) 是否有中央服务器 有.开发人员需要从中央服务器获得最新版本的项目然后在本地开发,开发完推送给中央服务器.因此脱离服务器开发者是几乎无法工作的 没有中央 ...
- ELK+Filebeat 集中式日志解决方案详解
链接:https://www.ibm.com/developerworks/cn/opensource/os-cn-elk-filebeat/index.html?ca=drs- ELK Stack ...
- 理解OpenShift(6):集中式日志处理
理解OpenShift(1):网络之 Router 和 Route 理解OpenShift(2):网络之 DNS(域名服务) 理解OpenShift(3):网络之 SDN 理解OpenShift(4) ...
- elk + filebeat,6.3.2版本简单搭建,实现我们自己的集中式日志系统
前言 刚从事开发那段时间不习惯输出日志,认为那是无用功,徒增代码量,总认为自己的代码无懈可击:老大的叮嘱.强调也都视为耳旁风,最终导致的结果是我加班排查问题,花的时间还挺长的,要复现问题.排查问题等, ...
- iscsi target tgt架构
tgt是用户态实现的iscsi target,而iet(iscsi enterprise target)是在内核态实现的target,tgt相比于iet来说,因为其用户态实现,方便调试,新加入一些功能 ...
随机推荐
- CFileDialog OFN_NOCHANGEDIR
问题:CFileDialog 调用后变成了当前工作路径,变成了CFileDialog所选择的路径. 解决:在CFileDialog的dwFlags 设置标志OFN_NOCHANGEDIR就可以了,不会 ...
- erlang节点局域网通信
节点1: F:\WorkSpace\Server\src>erl -name hw@192.168.10.142 -setcookie 4213 consulting .erlang in &q ...
- fix34
public int[] fix34(int[] nums) { int i3=0; int i4=0; int temp=0; while( (i3<nums.length)&& ...
- 剑指Offer - 九度1512 - 用两个栈实现队列
剑指Offer - 九度1512 - 用两个栈实现队列2013-11-29 21:23 题目描述: 用两个栈来实现一个队列,完成队列的Push和Pop操作.队列中的元素为int类型. 输入: 每个输入 ...
- 《Cracking the Coding Interview》——第7章:数学和概率论——题目3
2014-03-20 02:05 题目:给定笛卡尔二维平面上两条直线,判断它们是否相交. 解法:相交.重合.平行. 代码: // 7.3 Given two lines on the Cartesia ...
- 【APUE】Chapter9 Process Relationships
这一章看的比较混乱,可能是因为例子少:再有就是,这一章就是一个铺垫的章节. 9.2 terminal logins 啥叫termnial? 我感觉书上的terminal指的更可能是一些物理设备(key ...
- 架构师速成5.1-小学gtd进阶 分类: 架构师速成 2015-06-26 21:17 313人阅读 评论(0) 收藏
人生没有理想,那和咸鱼有什么区别. 有了理想如何去实现,这就是gtd需要解决的问题.简单说一下gtd怎么做? 确定你的目标,如果不能确定长期目标,至少需要一个2年到3年的目标. 目标必须是可以衡量的, ...
- selenium 使用谷歌浏览器模拟wap测试
/** * 使用谷歌浏览器模拟手机浏览器 * @param devicesName * @author xxx * 创建时间:2017-06-15,更新时间:2017-06-15 * 备注 */ pu ...
- Python导出sql语句结果到Excel
本文档是因为每周需要统计线上数据库中客户新增资源,手动执行实在是麻烦,就写了个脚本导出到Excel,顺便发一封邮件. (当然这不是线上的真实脚本,不过根据个人需求稍微修改下,还是可以直接用的.拿去不谢 ...
- Python全栈工程师(Linux基本操作)
ParisGabriel Python 入门基础 Linux :Ubuntu操作系统 首先我们说的是Linux操作系统常用的快捷键以及终端命令 一. VMware ...