Simon Brock和Ian Wrigley运用现成的开源软件树立了一个运用iSCSI设备的SAN。
近年来,存储区域网络或SAN遭到许多人重视,但只要极少数人知道它终究是什么,为什么想要树立一个SAN,一个最主要的原因是当你坐下来细心看一看它的造价时,作业就理解了,本文会逐个为你回答什么是SAN,你为什么想要树立一个,以及怎么运用开源软件树立一个经济型的SAN。
依据你的IT布景不同,你或许会以为SAN是一个巨大的从头也或许会以为是一个很老的主意,但咱们越过前史要素以为SAN是一个新的构思,在一般PC中,任何东西都是装置在一个盒子(机箱)中的:如CPU,内存,硬盘。当你向其间增加硬盘时,或许会很困难,因而有人想出了在盒子(机箱)外面再放一个盒子来安放新增加的设备,硬盘盒子或许有它自身的一些功用,如经过某种类型的RAID控制器根据条带,镜像(或二者一同)完结弹性存储,怎么将这个硬盘盒子附加到包含处理器的盒子就显得十分重要了。
SCSI便是一种能够完结这个使命的技能,它在短距离环境下作业得很好,但在长距离(长线缆)环境下就不行了,便是在这种情况下,光纤通道呈现了,正好补偿SCSI技能的缺乏,说简略点便是:光纤通道运用的是光纤维发送SCSI指令而不是传统的电信号电缆,光纤通道也完结了相似以太网交流的交流技能,它答应多台PC一同与同一个硬盘盒子进行会话,或一台PC一同与多个硬盘盒子会话,此外,这些机器有多种途径从硬盘盒子获取数据(拜访途径冗余),这便是SAN最基本的功用,SAN是经过光纤网络衔接到硬盘盒子的机器调集,它的速度十分快,开端的第一代光纤通道就达到了1Gb/sec,现在现已呈现了10Gb/sec的光纤通道产品。
乍一看,SAN并不是如传说中那么优异,假如你的数据十分多,而且需求从多个不同的当地拜访(完结冗余),树立一个SAN拓扑是处理你的需求的一种办法,你有必要要为此进行存储出资预算,而不是简略地分布式布置多台机器。
最近,部分厂家指出1Gb/sec产品会大幅降价,不过这种产品不是选用的的光纤通道技能,而是运用了1000Base T以太网技能,运用传统的铜缆作为传输介质,但为了让SCSI指令能在以太网上传输,需求寻觅一种新的办法,以便SAN能在1000Base T上正常作业,所以iSCSI诞生了,它将一切SCSI指令都封装在ip包中进行传输,也便是说,假如你手上有一台机器并有一个支撑iSCSI的硬盘盒子,那你现在就能够运用现有的以太网取得一个SAN,它答应你运用以太网和ip供给的一切特性对道路进行排序,并输出可选的途径,不必考虑光纤通道是怎么完结转化的,这样iSCSI SAN就诞生了,现在许多厂家都开端支撑iSCSI SAN,本文剩余的部分,我将向你介绍怎么运用开源软件(大部分开源)树立一个牢靠的,有弹性的iSCSI SAN。
Initiator和target
在持续之前,咱们先了解几个iSCSI术语,在iSCSI下,分两部分:initiator(需求数据的机器)和target(供给数据的机器),在根据光纤通道的SAN下,initiator是一台计算机,target是一个RAID阵列,但在咱们的比如中,咱们即将树立一个由两台PC组成的主–被迫服务器对的iSCSI target,其间一台机器担任target处理来自initiator的iSCSI恳求,然后将其磁盘镜像到另一台作为后备主机的机器是,假如活动主机失效,后备主机将接收并供给iSCSI服务,当主服务器修好后,从头同步后备机器的磁盘,并从头取回iSCSI服务权,这个使命十分艰巨,写本文时我都没有决心它是否能正常作业,或许会正常作业,咱们试目以待吧!
为了完结这个方案,咱们将运用两台相同的Dell 1U机架式服务器,用两个千兆以太网端口穿插衔接,在这两台服务器上咱们将装置一组开源软件,首要,咱们需求装置一个操作体系,咱们挑选运用Linux,千万不要觉得惊奇,在各种发行版中咱们挑选了CentOS 4,它是根据Red Hat Enterprise Linux(RHEL)的社区企业级Linux发行版,假如你不想付出Red Hat的年度晋级服务费用,但又想运用优异的RHEL,那么CentOS便是你的首选,CentOS仅仅获取RHEL的源码,从头编译,从头进行打包并发布,因而你能够免费获取来自RHEL的优异软件包,即便你不能获取Red Hat的晋级服务,你也能进行晋级。
最近,CentOS现已开端吸收额定的软件进入它自己的发行版,咱们将运用到其间的两个,第一个是Heartbeat,它来自Linux高可用项目(http://www.linux-ha.org/),运用它咱们能够完结主–被迫服务器毛病搬运,正如它的姓名暗示的那样,Heartbeat答应一组PC彼此监督对方的活动(经过心跳信号),检测到‘逝世’信号就接收该节点的服务,第二个软件包是DRBD,它答应在两台机器之间同享一个块设备(通常是一个磁盘分区),运用该设备的机器便是主服务器,它对设备发生的任何更新都会传输给后备服务器,假如主服务器失效,后备服务器就成为主服务器,当失效的服务器修好后,从头同步当时的主服务器,然后接收资源供给服务,后备服务器从头成为后备。
在CentOS上装置这两个软件十分简略,输入指令‘yum groupinstall drbd-heartbeat’,然后将drbd装置为内核模块,用‘uname -r’获取操作体系的版别,在咱们的体系上输出内容是‘2.6.9-22.0.1.ELsmp’,因而要将drbd装置为内核模块,只需求输入‘yum install kernel-module-drbd-2.6.9-22.0.1.ELsmp’。
剩余的便是装置iSCSI target软件自身了,在互联网上一搜会搜到一大把,但许多都是不能用的,咱们挑选了最近才创立的项目,叫做iSCSI Enterprise Target(http://iscsitarget.sourceforge.net/),但从其网站上的音讯指出它不能在咱们的CentOS 4上运转,由于至少需求2.6.13或更高的内核支撑(咱们的内核是2.6.9),但是,这是由Red Hat供给的内核,多少都经过特别修正,Red Hat一切的软件包都倾向于从底层开端(这儿是2.6.9),然后不停地打补丁,因而在2.6.9和今后的内核之间有不同,但现已被集成到Red Hat的内核中去了,在根据Wiki的文档上现已有怎么在Red Hat上装置的记录了,依照这些指令在这两台机器上装置好target软件。
装备iSCSI
让咱们从一个简略的情形开端,咱们在一台只要一块硬盘的机器,经过iSCSI将其发布出去,一切装备都放在一个文件中,/etc/ietd.conf,修正这个文件,包含下面三行内容:
IncomingUser joe secretsecret
这一行设置只答应一个用户拜访(咱们运用了12个字母的暗码secretsecret,它在Windows下也能作业),下一行是:
Target iqn.2005-11.uk.co.widearea:storage2.diskc
这一行装置惯例iSCSI标准命名了一个target,它由年-月,后边跟一个反向的域名和主机标识符组成,最终一行有必要缩进:
Lun 0 Path=/dev/sdb,Type=fileio
这一行指出咱们即将运用SCSI磁盘/dev/sdb作为iSCSI设备,然后咱们在另一台机器上做相似的作业。
现在咱们需求一个initiator,为了证明能跨渠道运转,咱们挑选了Microsoft iSCSI initiator,boxout显现了它怎么与iSCSI Enterprise Target一同作业,在咱们的比如中,咱们从每个机器上加载了在Windows机器上的iSCSI磁盘,咱们将它们设为动态磁盘并参加镜像,在格式化和同步后,这样咱们就在Windows机器上具有一个弹性的镜像,它是经过在Linux盒子上树立IP SAN完结的,假如其间一台机器消失了,镜像会中止,但Windows会持续向其他机器更新,当其他机器回来时,镜像或许现已修正,Windows将会进行磁盘同步,但是,最大的问题是Microsoft还不支撑运用iSCSI作为动态磁盘,因而咱们有必要另觅它法。
首要咱们要做的是要让DRBD运转起来,假如你参看了预装置的/etc/drbd.conf文件,这会十分简略,需求做的是从这个文件中找到第一个有两个“on”标志的资源末节,它界说了怎么将磁盘块设备整合到一同,需求供给机器名,ip地址和磁盘分区,然后将这个文件复制到两台机器上,运转/etc/init.d/drbd start,一切都会作业起来,文件/proc/drbd显现了探测到的东西和两台机器上的辅佐、辅佐状况的磁盘,当它正常作业起来后,其间一台机器就成为主服务器,另一台就成为后备机器,但是,开端会显现状况不共同,不答应你将某一台机器设为主服务器,第一次设备DRBD设备时,你需求告知哪一台是主服务器,然后你才干在其上运转‘drbdadm’指令完结主服务器的设置,然后再看/proc/drbd时就会发现正在做同步操作。
现在DRBD设备现已运转起来了,需求修正/etc/ietd.conf,要将新设备/dev/drbd0包含进来,也便是前面谈到的/dev/sdb,然后发动iSCSI target,并在另一台机器上挂载。
假如一切作业正常,开端下一步作业,下一阶段便是装置Heartbeat软件,咱们需求修正三个文件,/etc/ha.d目录下的Readme文件会告知你在哪里去找比如,首要需求装置ha.cf文件,每台机器上都应该不相同,在这个文件中,咱们需求增加‘node’行指出这两个节点的姓名,而且还要一行‘ucast’指出其他机器的地址,然后咱们需求装置authkeys文件,在这两台机器上这个文件应该相同,最终咱们需求在这两台机器上装置haresources文件,它的内容如下:
machine1 10.0.0.46 drbddisk::r0 iscsi-target
这儿的machine1是在ha.cf中界说的主服务器名,ip地址是对外供给服务的地址,它与一般的ip地址有点不相同,最终两项告知Heartbeat软件运用drbd磁盘r0,并发动iscsi-target服务。
发动好Heartbeat和iscsi-target服务后,从Windows机器挂载新的卷,并格式化,复制一些文件看是否能正常作业,接下来干一件肮脏的作业,复制一个十分大的文件,然后将主服务器上的Heartbeat封闭,这时复制进程肯定会暂停,但当Windows从头发现ip地址后,又会康复持续复制。
然后咱们干点更具损坏性的操作,拔下主服务器的电源线,看它是否还会持续作业,正如预料之中的,Heartbeat会从主服务器将资源搬运到后备服务器,Windows initiator看上去如同暂停了一下,但马上接着又持续复制直至完毕,我不太信任在这种损坏环境下它还能作业得很好,所以我用MD5校验东西校验了放在iSCSI驱动器上的文件,成果陈述与源文件的校验值共同,意味着它确实作业得很好,一切的数据块都被正确地传输过去了。
最终关于iSCSI target软件要注意的是它在Linux上的可用性:它答应你导出块设备,前面咱们现已看到,包含raw磁盘,磁盘上的分区,仿真块设备等。在这个比如中,咱们运用DRBD仿真块设备,当咱们从前从体系中导出过软RAID设备,在写本文的时分,开源处理方案还不支撑导出字符设备,意味着你还不能导出磁带驱动器,即便iSCSI协议支撑,现在只要一些商业处理方案支撑导出字符设备。
咱们运用开源软件树立起一套经济的SAN,也只接触到最根底的常识,SAN是什么,iSCSI是什么,但这是一个巨大的开端。
Windows上的iSCSI
在文章的前面部分,咱们运用Linux作为服务器,Windows作为客户端,但咱们以为多写几行文字来描绘怎么Windows上完结iSCSI也是值得的,能够从微软公司的存储网站http://www.microsoft.com/windowsserversystem/storage下载到Microsoft iSCSI initiator软件,装置它十分简略,装置后会有一个控制面板,从它能够拜访到iSCSI服务器,假定你现已依照我前面说的办法装置了一台Linux服务器,翻开控制面板,然后点击Discovery标签,然后点击Add按钮,将会显现如下图所示的一个对话框。
1、输入服务器或集群的ip地址,端口坚持不变,然后点击Advanced按钮,显现
2、假如你没有看到输出设备,点Refresh,挑选你想要的设备,然后点击Log On,显现
3、在General标签页,你需求敞开CHAP登陆,并输入与ietd.conf中相同的登录名和暗码,然后点两次Ok按钮回到控制面板,假如你的暗码少于16个字符,会提示你,但这样仍是能作业的,挑选Target标签,显现
4、假如你计划每次重启体系都运用iSCSI卷,请选中’Automatically restore’选项,至此,你就具有一个附加的磁盘了,在磁盘管理器中也能看到它,并能够当正常磁盘运用了,值得注意的是现在在Windows上iSCSI还不支撑动态磁盘,它能够用于比如exchange,sql server等应用程序。