工作,学习,生活,这里将会有一些记录. 备用域名:http://meisw.51099.com 注册 | 登陆
浏览模式: 标准 | 列表分类:共享存储

虚拟化基础架构之使用openfiler搭建iSCSI网络共享存储(IPSAN)

随着虚拟化架构的不断完善与扩充,后台集中的网络存储已开始成为虚拟化整体解决方案中的一部分(尤其是对VDI、高可用性群集等架构),实现网络存储的方法有以下几种:
      直接向EMC、NetApp等厂商购买存储设备:性能较好,价格高昂
      在Windows平台安装模拟器:配制简单,但性能一般,且由于商业软件的试用期限制较难以长期使用  
      使用FreeNAS、Openfiler等Linux核心的iSCSI Target端程序:基于Linux内核的裸金属服务器端,性能较为理想,免费可自由下载,比较适合于系统测试或评估使用。
  
  这里将介绍使用Openfiler2.3来搭建基于iSCSI的网络共享存储
  首先来看下基本架构与一些基本概念,了解基本概念的请跳过。。。

  在整个架构中,所有的设备都通过以太网相连,两台需要连接存储的服务器分别为两个节点,称之为Initiator端(也可只有一个节点或多个节点),存储设备可以是专门的硬件存储设备,也可以由普通服务器充当,只需安装上述所说的模拟软件或者Openfiler等精简版Linux来充当,称之为Target端。
  所以整个iSCSI架构其实也是类似于C/S架构,Target段为存储服务器,Initiator端为客户端,通过iSCSI协议将存储设备上的逻辑卷作为自己的存储设备使用。

    下面切入正题,整个配置过程分为三大步骤:
  在存储服务器上安装Openfiler
   通过Web方式远程配置Openfiler存储设备
  配置客户端服务器连接Openfiler存储设备

一、在存储服务器上安装Openfile(基本的只有下一步可按的页面就跳过了~)
首先在http://www.openfiler.com/community/download/中下载合适的版本,从光驱引导后是典型的Linux安装界面
直接回车进入图形化安装界面
  
在磁盘设置这里如果不熟悉Linux磁盘分区的话可以直接选择自动分区,但是为了增强对磁盘分区的可控性,这里选择手动分区。

系统询问是否初始化磁盘并删除所有数据,选择YES,连续选择两次No的话则Restart。。。

进入磁盘分区页面,在这个系统中我有两个磁盘,我的规划是较小的磁盘安装Openfiler,并且划分一个区作为群集的仲裁磁盘,较大的磁盘作为共享数据磁盘(当然这是后话了,并且Linux系统的安装并不局限于一块物理磁盘,这里只是根据惯有的思路做一个预先规划)

安装Openfiler本身的推荐分区方法则根常规的Linux分区方法是一样的,需要一个引导分区,一个根分区,一个交换分区
点击较小的磁盘的Free空间,选择新建,在挂载点中择/boot,文件类型为ext3,只选择较小的磁盘(还是那句话,根据惯有思维,实在不习惯将一个分区横跨两个无力磁盘),大小设为100M即可,确定下方为固定大小,勾选强制为主分区选项。

用同样的方法建立根分区,挂载点位/,文件格式为ext3,挂载在较小的物理磁盘,大小为1GB-2GB即可,因为是精简版的Linux,且以后也不大会安装其它软件,所以1GB足矣(又是那句话,按照惯性思维,我设了2G,被微软惯性坏了。。。),下面则同样是固定大小,强制为主分区。
最后建立一个交换分区,不需要选择挂载点,文件类型为swap,第一块无力磁盘,大小为内存的两倍即可,其余设置一样,这里发现少截张图。。。

分区完成后最终的效果应该是这样的,其余的分区保持为Free状态,不然在Openfiler中可能无法分配。

配置网络属性,建议设为固定IP,因为Openfiler安装完成之后没有图形界面,所有的配置都通过web方式完成,没有固定的IP会给以后的配置造成不必要的麻烦。

接下来是选择时区,设置Root帐户密码,然后光盘中的文件拷贝至硬盘中开始正式安装,都比较简单,安装完成后取出光盘,按下Restart,整个安装过程就算完成了,其实跟安装普通的Linux没有任何区别。


二、通过Web方式远程配置Openfiler存储设备
启动Openfiler之后会显示他的Web管理的URL:
https://IP:446

通过远程客户端浏览器登录,用户名为openfiler,密码为password
进入管理界面之后首先看到是一些常规设备信息,关系不大,在上方导航栏中选择system,拉到页面下方,在Network Access Configuration中添加Initiator客户端所在的网段地址,用以在之后选择是否授权这个网段的计算机能够连接本台存储,可以通过子网掩码进一步控制数量,类型保留为share,点击Update。

在导航栏中选择Volumes,点击右侧的Block Devices,可以查看到当前存储服务器所拥有的物理磁盘,选择某一个物理磁盘的view,可以查看这块物理磁盘上已有的分区。

下面就开始正式划分我们所需要的共享仲裁磁盘和数据磁盘。
单击第一块物理磁盘:  /dev/sda
拉到页面下方(如果要说Openfiler有什么很让人火大的地方就是这里了,很多页面都设计的很长,要拉到很下面才能进行设置),在这里划分一个物理分区出来,注意将PartitionType设置为物理卷,类型为主要,通过设置开始柱面和结束柱面,系统会计算出划分的区为多大,调整到满意的值后点击Creat

接下来点击右侧的Volume Group,拉到页面下方,创建一个新的卷组,设置卷组名为Quorum,包含刚才创建的物理分区,点击Add Volume Group。

点击右侧的Add Volume,选择刚才创建的卷组,在这个卷组所包含的空间上创建一个真正的会挂接到Initiator客户端服务器上的逻辑卷(Lun),什么?你在这个页面中没看到创建?看到右侧的滚动条了么?对了。。。往下拉。。。

在创建逻辑Lun的时候可以选择所需要的大小,而不是选择整个卷组,Openfiler对磁盘的灵活性体现出来了,一个卷组可以划分多个逻辑Lun,卷组本身又可以来自多个物理磁盘,好了,被我说乱了?等下我来整理思路。这里定义完了卷名后在文件类型列表中选择iSCSI,点击Creat。

用同样的方法在第二块磁盘上创建一个物理分区,包含在data这个卷组中。

点击右侧的Add Volume,注意选择需要在哪个卷组上创建逻辑卷,选择data卷组后需要点击change,才能在data这个卷组中操作,和上面一样,拉到页面下方,创建一个用于data的逻辑卷。

在导航栏中选择Service,将下方服务中的iSCSI Target Server修改为Enable状态。
  
回到Volumes标签,点击右侧的iSCSI Targets,点击Add添加iSCSI Target。
  
单击导航栏下方的Lun Mapping,可以看到之前划出来可用于挂载的逻辑Lun,将两个逻辑卷全部Map至该Target。
  
最后单击Network ACL,可以看到先前设置的Initiator端所在的网段,在Access下选择Allow,单击Update,大功告成。
  

三、配置客户端服务器连接Openfiler存储设备

这个步骤比较简单,跟所有的连接iSCSI设备客户端所需的操作一样(硬件HBA卡除外),安装微软的iSCSI Initiator 2.0(如果是Server08的话不需要安装,系统自带)

在Discovery标签中,单击Add,填入Openfiler服务器的地址,端口默认,确认。

在Targets标签,单击Log On,勾选系统启动时自动恢复连接,确定,Target中的信息会由Inactive变为Connected。

打开磁盘管理,系统发现新的可初始化的磁盘,网络存储配置完成,只需在第二台节点进行同样的操作即可(第一台节点最好关闭,但实际坐下来问题不大,反正最后是由群集控制)。

在设备管理器中的磁盘驱动器下可以看到,有两个OpnFiler..SCSI的设备驱动器。

回到web控制台,进入Status标签,单击右侧的iSCSI Target,可以看到连上来的Initiator,选择View可以看到IP信息。




    整个配置到这里算是全部完成了,最后简单整理下Openfiler创建逻辑卷的整个过程:
1.首先在物理磁盘上创建物理分区,不能跨越物理磁盘
2.创建卷组,在卷组中可以包含任意的未被分配的物理分区,可以跨越物理磁盘,可以理解为将多个物理上的空间整合为一个可用的空间
3.在卷组中创建用于被连接的逻辑Lun,一个卷组可以创建一个逻辑Lun,也可以创建多个逻辑Lun,一个逻辑Lun被连接到客户端服务器后在磁盘管理器中最终看到的即是一个物理磁盘。
   
    在这里容易搞混得是卷组的名字是Volume Group,逻辑Lun的名字是Volume,在创建过程中是先创建VolumeGroup,最后才在相应的VolumeGroup中Add Volume的。

Openfiler 之Linux 安装ISCSI initiator和自动挂载

Openfiler 之Linux 安装ISCSI initiator和自动挂载
 
OPENFILER做TARGET,RED HAT做客户端,如果默认没有安装ISCSI initiator的话,可以在光盘上找到RPM包直接安装。service iscsi start,启动服务,service iscsi restart重启服务。用以下命令去发现ISCSI目标:

[root@localhost ~]# iscsiadm -m discovery -t sendtargets -p 10.10.1.110:3260
10.10.1.110:3260,1 iqn.2006-01.com.openfiler:tsn.2a5ab8637059


登录target :
 

iscsiadm -m node -p 10.10.1.110:3260 -l

登录所有的目标:

[root@localhost ~]# iscsiadm -m node --loginall=all
Login session [10.10.1.110:3260 iqn.2006-01.com.openfiler:tsn.2a5ab8637059]

查看目标的状态:

[root@localhost ~]# iscsiadm -m session -i
iscsiadm version 2.0-742
************************************
Session (sid 0) using module tcp:
************************************
TargetName: iqn.2006-01.com.openfiler:tsn.2a5ab8637059
Portal Group Tag: 1
Network Portal: 10.10.1.110:3260
iSCSI Connection State: LOGGED IN
Internal iscsid Session State: NO CHANGE

此时执行FDISK-L可以查看到当前挂载的硬盘,此时应该可以看到OPENFILER上的LUN。我们需要对其进行分区和格式化才能挂载使用,使用FDISK命令:

[root@rhel5 /]# fdisk /dev/sda

键入P进行分区,根据提示划分一个区出来,最好输入W保存。格式化分区:

mkfs.ext3 /dev/sda1


最后是挂载使用:

[root@rhel5 /]# mkdir /media/sda1 //创建挂载点

[root@rhel5 /]# mount /dev/sda1 /media/sda1/ //将新建的分区挂载使用。


做到这里,基本上就可以使用了,但我们要保证这个ISCSI盘重起后能自动挂载,那就需要修改/ETC/FSTAB:

[root@localhost ~]# vi /etc/fstab

 

LABEL=/ / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
devpts /dev/pts devpts gid=5,mode=620 0 0
tmpfs /dev/shm tmpfs defaults 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
LABEL=SWAP-sda2 swap swap defaults 0 0
/dev/sdd1 /mnt/sdd1 ext3 defaults 0 0

这里要做个记录,开始的时候一不小心,设为了1,2,以至开机时检查系统文件无法跳过,因为此时ISCSI网络还没有启动,须改为0,0。在启动时输入管理员密码后,输入:mount -n -o remount,rw /
,然后再重新编辑/etc/fstab 修改掉里面不正确挂载的分区参数,保存后重起即可。

另外一种更可靠的方法是使用卷分区的UUID来挂载卷,此时/etc/fstab.iscsi文件的格式如下:iSCSI服务重启后,会按照分区的UUID将设备挂载到指定的节点上。 

UUID=fb032900-9113-1213-fc09-086734fac1c1 /mnt/t0 ext3 defaults 0 0


UUID的查看:

[root@localhost ~]# sudo blkid /dev/sdd1
/dev/sdd1: UUID="da0907e8-7eda-46ec-b28f-3180c061cf3e" SEC_TYPE="ext2" TYPE="ext3"


保险一点,可以使用“_netdev”这个参数来等待网络连接后再挂载。

 

#/dev/sdd1 /mnt/sdd1 ext3 _netdev 0 0
UUID=da0907e8-7eda-46ec-b28f-3180c061cf3e /mnt/sdd1 ext3 _netdev 0 0

 

最后是注销ISCSI:

iscsiadm --mode node --targetname iqn.2006-01.com.openfiler:tsn.2a5ab8637059 --portal 10.10.1.110:3260 --logout


这里一定要加T即目标参数。登陆:

 

iscsiadm --mode node --targetname iqn.2006-01.com.openfiler:tsn.2a5ab8637059 --portal 10.10.1.110:3260 -l

 

linux iscsiadm的用法:
linux下iscsiadm命令的基本用法:
发现target,询问target名称
[root@RedHat5 ~]# iscsiadm -m discovery -t sendtargets -p targetIP地址:端口号
该命令将报告出target名称
建立连接
得到了target名称后,使用下面命令建立连接
[root@RedHat5 ~]# iscsiadm -m node -T target名称 -p targetIP地址:端口号 --login
这时应该看到映射到的逻辑磁盘名号,使用fdisk -l 可以看到有关逻辑磁盘的详细内容,可以象使用本地硬盘一样对其进行分区、创建文件系统、挂载、卸载等操作。
断开连接
如果逻辑磁盘已经挂载,断开连接前应先卸载,然后使用下面命令
[root@RedHat5 ~]# iscsiadm -m node -T target名称 -p targetIP地址:端口号 --logout
关机之前应该正确的卸载和断开逻辑磁盘,否则会在target服务器上留下僵死的进程,造成服务器资源的浪费。