您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 使用NetBSD构建基于iSCSI的小型SAN
使用NetBSD构建基于iSCSI的小型SANMatthew(黑夜编码人)matthew#cnfug.org引言随着信息系统应用的复杂和多样化,存储越来越受到企业关注,存储的需求也越来越多样化。NetBSD在近期的HEAD(CURRENT)代码中加入了对iSCSI服务的支持,下面就让我们来看看如何利用NetBSD来构建一个基本的SAN(StorageAreaNetwork)环境。开启iSCSI服务首先要使用iSCSI服务,你得更新你的系统到HEAD版本,本文使用的NetBSD版本信息如下:#uname-aNetBSD3.99.16NetBSD3.99.16(GENERIC)#0:SunMar509:59:31UTC2006builds@works.netbsd.org:/home/builds/ab/HEAD/i386/200603050000Z-obj/home/builds/ab/HEAD/src/sys/arch/i386/compile/GENERICi386如果你的NetBSD版本过低,你可以到下载安装包,或者使用cvs同步源代码,并升级你的NetBSD,这里就不详细介绍,具体升级方法请参见NetBSDGuide.目前NetBSD对iSCSI的支持是用一个用户状态的守护进程iscsi-target来实现的,它位于/usr/sbin/iscsi-target。这里有两个概念需要简单的介绍一下,在服务端提供iSCSI存储服务的存储对像称为target,一个服务端可以有多个target,使用iSCSI服务的客户端称为initiator。NetBSD上iSCSI的默认配置文件为/etc/iscsi/targets,它包含了每个target的描述,它的内容如下:#$NetBSD:targets,v1.22006/02/1619:30:57agcExp$##Structureofthisfile:##+anextentisastraight(offset,length)pairofafileordevice#it'sthelowestcommonstoragedenominator#atleastoneisneeded#+adeviceismadeupofoneormoreextentsorotherdevices#devicescanbeaddedinahierachicalmanner,toenhanceresilience#+inthisexample,nodevicedefinitionsarenecessary,asthetarget#willjustuseasimpleextentforpersistentstorage#+atargetismadeupof1ormoredevices#ThecodedoesnotsupportRAID1recoveryatpresent#Simplefileshowing1extent,mappedstraightinto1target#extentfileordevicestartlengthextent0/tmp/iscsi-target00100MB#targetflagsstoragenetmasktarget0rwextent00.0.0.0/0其中,extent指定了iSCSI数据的存储位置,而target则是iSCSI提供给客户端(initiator)的存储点,客户端将通过它来完成具体的存储请求。上面配置文件中的具体含义是:定义了一个extent存储介质extent0,它将使用文件/tmp/iscsi-target0来存储数据,数据存储从文件头部开始,容量为100MB;定义了一个target存储点target0,权限为rw(读和写),它使用先前定义的存储介质extent0来进行存储,该存储点允许IP段为0.0.0.0/0的机器访问。接下来是启用iSCSI服务,在/etc/rc.conf中增加如下行:iscsi_target=YES接下来便可以启动iSCSI服务了:#/etc/rc.d/iscsi_targetstart如果你的配置正确,你将会看到类似以下的启动信息:Startingiscsi_target.Readingconfigurationfrom`/etc/iscsi/targets'target0:rw:0.0.0.0/0extent0:/tmp/iscsi-target0:0:104857600DISK:1logicalunits(204800blocks,512bytes/block),typeiscsifsDISK:LU0:100MBdiskstoragefortarget0TARGET:TargetNameisiqn.1994-04.org.netbsd.iscsi-target这表示iSCSI服务已经启动成功,是不是非常简便呢?客户端连接iSCSI服务现在iSCSI服务已经开始工作了,下面就是用客户端连接上iSCSI,以检测我们之前的工作是否正确。这里我使用的客户端是MicrosoftiSCSIInitiator2.01x86,你可以从得到它,需要注意的是,它只支持Windows2000SP3及以上的Windows版本。下载完并安装好后,你会在桌面上看到一个名为MicrosoftiSCSIInitiator的图标,双击打开后,可以看到MicrosoftiSCSIInitiator窗口,如图1。图1点击Discovery标签,再点击Add按钮,出现增加TargetPortal的对话杠,输入你的NetBSD服务器的IP地址,然后点确定,如图2。图2这里就可以看到你的NetBSD服务器的IP已经添加到TargetPortals中,点击Targets标签,你将看到刚才我们设置的存储点target0,如果没有出现,请点击Refresh按钮刷新,如图3,点击LogOn铵钮,出现登录框,直接点击OK即可,如图4。图3图4登录成功后,你可以看到Targts中的状态已经变为Connected,同时NetBSD上的/var/log/messages中你也可以看到一条类似以下的initiator登录提示信息:Mar3009:07:59iscsi-target:Normalloginfromiqn.1991-05.com.microsoft:minilabon192.168.0.9接下来就是初始化iSCSI硬盘了。进入控制面板-管理工具-计算机管理,点击磁盘管理,这里会出现磁盘签署升级向导,如图5。图5点击下一步按钮,这里列出了要签署的硬盘,选中它,继续点击下一步,出现硬盘升级列表,同样选中它,点击下一步完成升级。这里,计算机管理的磁盘管理器列表中会多出一个硬盘,本例中为Disk1,如图6。图6右击它,创建新的磁盘卷。本例中创建了一个新的卷G,打开我的电脑,你便可以看到它,现在你就可以像使用本地硬盘一样使用它。如图7为向该硬盘(G:)中复制文件。图7到此,我们便完成了iSCSI服务的建立和客户端的连接,接下来我们继续看看如何使用NetBSD的RAIDframe提高存储性能和保护数据的安全性。使用RAID5保护iSCSI数据安全首先要确认你的Kernel是否已经包含对RAID的支持(GENERIC内核默认情况下支持RAID),方法如下:#grepRAIDframe/var/run/dmesg.boot如果看到:KernelizedRAIDframeactivated说明你的内核已经开启了RAID支持,如果没有看到,你就需要在你的内核配置文件中加入:optionsRAID_AUTOCONFIGpseudo-deviceraid并重新编译内核。RAIDframe使用/sbin/raidctl来对内核RAID进行管理,raidctl将读取一个配置文件来实现对RAID设备的配置,raid配置文件分为4个部分和2个可选部分,每个部分使用START标示该部分的开始。以下是本例中的RAID配置文件/etc/raid5.conf:STARTarray131STARTdisks/dev/sd0a/dev/sd1a/dev/sd2aSTARTspare/dev/sd3aSTARTlayout#sectPerSUSUsPerParityUnitSUsPerReconUnitRAID_level32115STARTqueuefifo100配置文件的具体意义如下:STARTarray131这里是一个array的配置,它分别表示该配置为1个RAID,3个磁盘设备,1个备用盘。STARTdisks/dev/sd0a/dev/sd1a/dev/sd2a这里是一个disks的配置,它列出了要加入到RAID中的硬盘设备为sd0a、sd1a、sd2a。STARTspare/dev/sd3a这里是一个备用盘的配置,它说明sd3a将作为备用盘加入到RAID中。STARTlayout#sectPerSUSUsPerParityUnitSUsPerReconUnitRAID_level32115这里配置了RAID的具体细节,分别表示每个段占用32个扇区,每个校验单位占用1个段,每个重建单位点用1个段,该RAID的级别为RAID5。STARTqueuefifo100这里主要配置了队列参数,使用fifo队列,每个部分的队列限制为100个请求。接下来初始化RAID设备,使用/dev/raid5作为RAID设备:#raidctl-C/etc/raid5.confraid5设置启动时自动配置RAID设备:#raidctl-Ayesraid5成功时将返回:raid5:Autoconfigure:Yes初始化RAID序列号,这里的序列号为22334455,可根据需要改变:#raidctl-I22334455raid5检测RAID是否配置成功:#raidctl-sraid5Components:/dev/sd0a:optimal/dev/sd1a:optimal/dev/sd2a:optimalSpares:/dev/sd3a:spareComponentlabelfor/dev/sd0a:Row:0,Column:0,NumRows:1,NumColumns:3Version:2,SerialNumber:22334455,ModCounter:15Clean:No,Status:0sectPerSU:32,SUsPerPU:1,SUsPerRU:1Queuesize:100,blocksize:512,numBlocks:2097088RAIDLevel:5Autoconfig:YesRootpartition:NoLastconfiguredas:raid5Componentlabelfor/dev/sd1a:Row:0,Column:1,NumRows:1,NumColumns:3Version:2,SerialNumber:22334455,ModCounter:15Clean:No,Status:0sectPerSU:32,SUsPerPU:1,SUsPerRU:1Queuesize:100,blocksize:512,numBlocks:2097088RAIDLevel:5Autoconfig:YesRootpartition:NoLastconfiguredas:raid5Componentlabelfor/dev/sd2a:Row:0,Column:2,NumRows:1,NumColumns:3Version:2,SerialNumber:22334455,ModCount
本文标题:使用NetBSD构建基于iSCSI的小型SAN
链接地址:https://www.777doc.com/doc-2709837 .html