基于IP SAN的ISCSI的存储系统

简介:

前言

最近公司的平台进行了升级,每天都产生很多的日志文件与数据文件,之前的服务器磁盘大小不符合最新的平台要求,磁盘空间一直处于90%左右,我也一直收到磁盘空间的报警邮件(由于我对磁盘做了脚本的监控,如果磁盘空间使用达到90%就发送报警),所以我提出了一个建议,使用基于IP SANISCSI的存储系统”,这样可以在不改变现有的架构下、不花费钱(如果你不买HBA卡的话)、最简单的搭建存储系统。

下面是iscsi的介绍(从网上找的)

一、Linux网络环境iSCSI技术的实现主要有三种方式:

1. 纯软件方式
服务器采用普通以太网卡来进行网络连接,通过运行上层软件来实现iSCSI和TCP/IP协议栈功能层。这种方式由于采用标准网卡,无需额外配置适配器,因此硬件成本最低。但是在这种方式中,服务器在完成自身工作的同时,还要兼顾网络连接,造成主机运行时间加长,系统性能下降。这种方式比较适合于预算较少,并且服务器负担不是很大的用户。目前不论是MicrosoftWindows、IBMAIX、HP-UX、Linux、NovellNetware等各家操作系统,皆已陆续提供这方面的服务,在价格上,比起前两种方案,远为低廉,甚至完全免费。但由于Initiator驱动程序工作时会耗费大量的CPU使用率及系统资源,所以性能最差。在此建议,最好是采用1GHz以上CPU的主机,如此才能获得较佳的效能表现,如果公司主机CPU在1GHz以下,那么最好不要采用。至于在各类协议的支持上,Initiator驱动程序可以同时支持iSCSI、NFS及CIFS协议。当然现在大多数服务器CPU都可以满足这个要求。这里免费的iSCSIInitiator驱动程序,才可以将一般Gigabit网卡仿真成iSCSIInitiator。然后再透过iSCSI桥接器将一般SCSI接口的存储配备仿真成iSCSITarget,如此就形成一个iSCSI-SAN。
2.iSCSITOE 网卡实现方式
在这种方式中,服务器采用特定的TOE网卡来连接网络,TCP/IP协议栈功能由智能网卡完成,而iSCSI技术层的功能仍旧由主机来完成。这种方式较前一种方式,部分提高了服务器的性能。在三种iSCSIInitiator中,价格比iSCSIHBA便宜,但比软件Initiator驱动程序贵,性能也居于两者之间。目前市面上Intel的TOE(TCPOffloadEngine,TCP卸载引擎)HBA价格在150美金左右。
3.iSCSIHBA 卡实现方式
使用iSCSI存储适配器来完成服务器中的iSCSI层和TCP/IP协议栈功能。这种方式使得服务器CPU无需考虑iSCSI技术以及网络配置,对服务器而言,iSCSI存储器适配器是一个HBA(存储主机主线适配器)设备,与服务器采用何种操作系统无关。该方式性能最好,但是价格也最为昂贵。在三种iSCSIInitiator中,价格最贵,但性能最佳。目前价格已由一开始的1000美金左右,下降跌至500美元左右。对于有高效能应用需求的企业,最好采用iSCSIHBA卡,如此才能获得最好的性能。
二、应该使用硬件 initiator 还是软件 initiator
iSCSIinitiator是使用硬件还是软件要取决于多种因素,包括预算、性能要求以及服务器工作负荷。软件iSCSIinitiator能够实现成本最低的iSCSI解决方案。纯软件iSCSIinitiator使用标准以太网卡,并依靠主机CPU来处理iSCSI命令和TCP/IP栈。对于具有2GCPU的最新一代服务器来说,大部分客户工作负荷在iSCSI协议处理方面不会引发明显的性能开销。如果您的服务器拥有千兆以太网卡则对软件initiator的评测过程几乎不会有任何问题,原因是在绝大多数流行的操作系统中,initiator都是免费提供的。如果CPU较陈旧,服务器的负荷较重,则可能更适合采用硬件iSCSIinitiator。硬件iSCSIinitiator会将iSCSI和TCP/IP处理工作转移到iSCSIHBA中。其结果就是能够大幅度降低CPU的性能开销,这点堪与光纤通道HBA相比。硬件initiator还能提供软件解决方案所不具备的功能,例如支持高可用性环境的硬件多通道功能,支持密集服务器环境中的远程引导功能。
三、硬件和软件 initiator 如何影响应用程序的性能?
如果应用程序位于负担较轻的服务器上,在大多数情况下,采用软件initiator的iSCSI的性能开销也不会明显影响应用程序的性能。如果服务器的负荷较重,则必须采用硬件iSCSIinitiator。不过,在大多数环境中,传输带宽以及主机CPU的性能开销完全不是问题—应用程序性能问题在很大程度上要归因于存储的轴数有限(承担工作负荷的磁盘太少)。这不是协议或传输问题。这是直连式存储系统的一个普遍问题,但是采用基于iSCSI的SAN解决方案可以非常方便地解决这一问题。
四、考虑到公司使用Linux服务器使用千兆网络,而且网络负载不大,所以我使用第一种方式搭建存储系统。
环境

 

以上服务器的系统均是rhel5.4版本
1、服务端test2(比如安装在各省的备用服务器上)需要安装iscsitarget软件
下载iscsitarget

 
 
  1. [root@test2 src]# wget http://sourceforge.net/projects/iscsitarget/files/iscsitarget/1.4.20.2/iscsitarget-1.4.20.2.tar.gz 

 解压


 
 
  1. [root@test2 src]# tar zxvf iscsitarget-1.4.20.2.tar.gz 
  2. [root@test2 src]# cd iscsitarget-1.4.20.2 

编译与安装


 
 
  1. [root@test2 iscsitarget-1.4.20.2]# make 
  2. [root@test2 iscsitarget-1.4.20.2]# make install 

启动服务


 
 
  1. [root@test2 iet]# service iscsi-target start 

加入开机启动


 
 
  1. [root@test2 iet]# chkconfig --level 35 iscsi-target on 

修改/etc/iet/ietd.conf的第3552


 
 
  1. 35#Target iqn.2001-04.com.example:storage.disk2.sys1.xyz 
  2. 52#Lun 0 Path=/dev/sdc,Type=fileio,ScsiId=xyz,ScsiSN=xyz 

 修改为


 
 
  1. 35 Target iqn.2012-02.com.test:storage.disk2.sys1.xyz 
  2. 52 Lun 0 Path=/dev/sda10,Type=fileio,ScsiId=xyz,ScsiSN=xyz 

重启服务


 
 
  1. [root@test2 iet]# service iscsi-target start 

下图是当前的磁盘空间情况

2、客户端(比如安装在各省的引擎服务器上),安装iscsi软件

使用yum安装iscsi

 
 
  1. [root@test5 ~]# yum install iscsi* 

启动服务


 
 
  1. [root@test5 ~]# service iscsi start 

可以使用如下命令查看下iscsi-target主机划分了那些的lun


 
 
  1. [root@test5 send_targets]# iscsiadm -m discovery -t sendtargets -p 10.1.88.178:3260 
  2. 10.1.88.178:3260,1 iqn.2012-02.com.test:storage.disk2.sys1.xyz 

使用iscsiadmiscsi target建立连接


 
 
  1. [root@test5 send_targets]# iscsiadm -m node -T iqn.2012-02.com.test:storage.disk2.sys1.xyz -p 10.1.88.178 -l 
  2. Logging in to [iface: default, target: iqn.2012-02.com.test:storage.disk2.sys1.xyz, portal: 10.1.88.178,3260] 
  3. Login to [iface: default, target: iqn.2012-02.com.test:storage.disk2.sys1.xyz, portal: 10.1.88.178,3260] successful. 

从fisk可以看出,iscsi的共享磁盘为sdb,大小为10.4GB,接下来就可以通过fdisk命令对整个磁盘进行重新分区、格式化、创建文件系统了等操作了。

可以使用iscsiadm -m session --print=2来查看iscsi的状态

 
 
  1. [root@test5 send_targets]# iscsiadm -m session --print=2 
  2. Target: iqn.2012-02.com.test:storage.disk2.sys1.xyz 
  3.     Current Portal: 10.1.88.178:3260,1 
  4.     Persistent Portal: 10.1.88.178:3260,1 
  5.         ********** 
  6.         Interface: 
  7.         ********** 
  8.         Iface Name: default 
  9.         Iface Transport: tcp 
  10.         Iface Initiatorname: iqn.1994-05.com.redhat:babeb593b5af 
  11.         Iface IPaddress: 10.1.88.177 
  12.         Iface HWaddress: <empty> 
  13.         Iface Netdev: <empty> 
  14.         SID: 1 
  15.         iSCSI Connection State: LOGGED IN 
  16.         iSCSI Session State: LOGGED_IN 
  17.         Internal iscsid Session State: NO CHANGE 
  18.         ************************ 
  19.         Negotiated iSCSI params: 
  20.         ************************ 
  21.         HeaderDigest: None 
  22.         DataDigest: None 
  23.         MaxRecvDataSegmentLength: 262144 
  24.         MaxXmitDataSegmentLength: 8192 
  25.         FirstBurstLength: 65536 
  26.         MaxBurstLength: 262144 
  27.         ImmediateData: Yes 
  28.         InitialR2T: Yes 
  29.         MaxOutstandingR2T: 1 

BTW:在测试环境里部署之后没有发现问题,目前已经在生产环境了进行了部署,如果各位对iscsi有建议的话,请不吝赐教,谢谢!


 本文转自 dl528888 51CTO博客,原文链接:http://blog.51cto.com/dl528888/791117,如需转载请自行联系原作者



相关文章
|
Java 测试技术 容器
Spring框架-ObjectProvider更加宽泛的依赖注入
从上面的过程中我们可以看出,但Spring中某个Bean的依赖类型为ObjectProvider时,我们不需要提供一个ObjectProvider类型的Bean到容器中,只需要提供一个T类型的Bean到容器中,容器会自动将其包装成一个ObjectProvider,然后注入到依赖中
595 0
|
存储 人工智能 自然语言处理
RAL-Writer Agent:基于检索与复述机制,让长文创作不再丢失关键信息
RAL-Writer Agent是一种专业的人工智能写作辅助技术,旨在解决生成高质量、内容丰富的长篇文章时所面临的技术挑战,确保全文保持连贯性和相关性。本研究将系统分析RAL-Writer的核心技术架构、功能特点及其在内容创作、学术研究和专业交流领域的应用前景。
398 4
RAL-Writer Agent:基于检索与复述机制,让长文创作不再丢失关键信息
|
10月前
|
存储 缓存 固态存储
固态硬盘为什么会出现故障?
近年来,固态硬盘(SSD)因速度快广受用户青睐,但使用中也出现故障频发的问题,如开机异常、数据丢失、系统卡顿等。本文解析SSD故障原因,包括寿命限制、主控设计缺陷、电压波动、固件问题等,并提供数据抢救方法与延长SSD寿命的实用技巧,助你避免数据丢失风险。
|
人工智能 安全 机器人
Grok开源来看看怎么用吧
Grok开源来看看怎么用吧
590 2
|
机器学习/深度学习 人工智能 并行计算
BEN2:一键快速抠图!自动移除图像和视频中的背景,支持在线使用
BEN2 是由 Prama LLC 开发的深度学习模型,专注于从图像和视频中快速移除背景并提取前景,支持高分辨率处理和GPU加速。
1428 10
BEN2:一键快速抠图!自动移除图像和视频中的背景,支持在线使用
|
存储 监控 Linux
|
分布式计算 资源调度 Java
Spark安装教程
该教程详细介绍了在Linux环境下安装Spark 3.1.2的步骤。首先,检查JDK版本需为1.8。接着,下载Spark资源并设置环境变量`SPARK_HOME`。配置`spark-env.sh`和`yarn-site.xml`文件,禁用内存检查。然后,重启Hadoop集群,启动Spark集群,并通过`jps -ml`检查Spark Master和Worker。可以通过Web UI访问Spark状态,并使用`spark-shell`测试Scala交互环境及Spark on Yarn。最后,学习如何关闭Spark集群。
1282 2
Spark安装教程
|
SQL 数据库 数据库管理
数据库SQL语句详解与应用实例
随着信息技术的飞速发展,数据库管理系统已成为各类企业和组织不可或缺的一部分。结构化查询语言(SQL)作为数据库管理系统的核心语言,掌握其用法对于任何数据库管理员和开发人员来说都至关重要。本文将详细介绍数据库SQL语句的基本语法、功能及其在实际应用中的使用场景。一、SQL语句概述结构化查询语言(SQL
791 3