存储配置

以前主要都在搞应用开发,对硬件和网络接触很少。这次出差玩了一下硬件,机会难得。虽然依然所知甚少,还是尽量记录一下

一、存储

我以前对存储的理解仅限于硬盘,感觉服务器的存储跟PC存储的区别也就是大一些快一些,现在知道还是很有讲究

这里的机房,服务器有刀片和IBM x3850,这次预研用的是刀片。配置是8核CPU,48G内存,自带200G硬盘。200G空间当然是相当少了,速度和稳定性也不行,所以是有专门的存储设备

刀片放在机框里(一框12片),存储则是在单独的机框里,两个机框通过光纤连起来(有的在一个机柜,有的不在)

每个存储机框里有24块硬盘,每块硬盘600G。然后机框有一个专门的存储控制器,并有配套的管理软件,专门用来管理存储。然后刀片上的自带的200G空间基本就不用了,只用来放点安装包什么的

二、组RAID

接下来从硬盘中选出几块来组成RAID(磁盘阵列,简称磁阵)

RAID也有好几种,0,1,5,目前只知道RAID0就是空间简单叠加,RAID1就是互备冗余,RAID5比较复杂,好像是专门有一块硬盘用来管理,其他的几块叠加。不是很了解,暂时也不深究

我是把6块硬盘组成了一个1:5的RAID5,所以总空间就是3000G(600*5)。在逻辑上就看做是一个单独的磁阵,6块物理硬盘从上层看是透明的。这里专门问了下管理员,他说6块硬盘都来自同一个机框,这种方式其实不太好。因为如果这个机框掉电了,整个磁阵就不能用了。但是因为我们用的存储产品比较低端,如果跨机框的话,速度和稳定性都无法保证,所以还是选了同一个机框的硬盘。以前他用过EMC的高端存储,一般RAID中的硬盘,都是从不同的机柜来的,这样就算其中一个机柜掉电了,整个RAID依然可以工作

接下来这个磁阵不能直接给服务器使用,而是先要划分成LUN(Logical Unit Number),划分LUN的数量和空间则没有特别的限制。比如把整个RAID就分成1个LUN也是可以的。不过linux文件系统本身有要求,一个LUN只能mount到一个分区下,所以如果操作系统有多个分区,就需要有多个LUN才行

不过下面会提到,我这次是预研虚拟化部署,所以我今天的做法是把一个LUN给到一个物理机,然后这个物理机又会分出多个虚拟机,并且虚拟机装操作系统时也会有多个分区。所以实际上,我觉得LUN也是可以再继续分的。看来只是linux文件系统的限制而已,而不是LUN自身不可再分

三、划分LUN,映射到服务器

上面我就得到了一个3000G的RAID,由于我打算给3台服务器用,也没什么经验,我就直观上把这个RAID分成了3个1000G的LUN,分别分配给3台服务器。所以每个LUN都是独占的,不是服务器共享的

具体的步骤是:

创建3个LUN,分别命名为VM_LUN_1,VM_LUN_2,VM_LUN_3(全是1000G);

然后在存储管理软件里,创建3个HOST_GROUP,分别命名为VM_HOST_GROUP1,VM_HOST_GROUP2,VM_HOST_GROUP3。这里的HOST_GROUP是主机组,是一个逻辑的概念,用来表示一组服务器的集合,并不是物理上的概念

然后同样在存储管理软件里,创建3个HOST,分别命名为VM_HOST1,VM_HOST2,VM_HOST3,用来表示我的3台服务器。这里的HOST同样也是逻辑的概念,不过和物理服务器是一一对应的,可以认为就等同于服务器

然后把上面创建的VM_HOST1放到VM_HOST_GROUP1里,2和3类似。最后就得到了3个主机组,里面分别只有一台主机

接下来把VM_LUN_1“映射”到VM_HOST_GROUP1上,2和3类似。这样主机组1号里的主机,就全部能够看到LUN1号了,但是由于这个主机组里实际上只有一台服务器,所以这个LUN就变成独占的了。如果主机组里有多台服务器,这个LUN就是共享的。这里可以看到,LUN是映射到主机组,而不是直接映射到服务器上的。不知道这是一个公共的做法,还是我们的存储产品特有的设计

最后一步是设置“启动器”,每个刀片上有2个FC(Fiber Channel),在操作系统里可以查到FC对应的WWN(World Wide Name),然后在存储管理软件里,将LUN的“启动器”映射到FC上,这里需要映射2次(因为每个刀片有2个FC),好像是为了双通道。但是这是因为我的LUN是独占的,如果LUN是2台服务器共享的,那么就需要映射4次(各2次)

完成了上述步骤之后,需要重启服务器,或者用什么linux命令刷新一下存储设备,刚挂载上来的LUN就可以看见了。之后就可以视为本地硬盘一样的使用,不需要关心它是真的本地硬盘,还是网络上的逻辑存储设备

四、创建“数据存储”,及创建虚拟机

然后在虚拟机的Hypervisor client上,创建“数据存储”。这次我们用的虚拟化平台,不能直接使用存储设备,而是要先把存储设备变成“数据存储”,然后才能使用。一个LUN可以变成一个“数据存储”。所以我这里每台主机,都有一个独占的“数据存储”

接下来创建虚拟机,其中有一步会选择使用哪个“数据存储”,然后选择分配其中的多少空间给这个虚拟机。我打算一台服务器虚拟化成4个虚拟机,所以每个虚拟机就得到了250G的空间,在一个LUN上

五、遗留问题

如果只是配置存储的话,到这里就结束了。但是由于我这次是预研产品的虚拟化部署,用到了虚拟机,所以这里就还有一个问题。因为虚拟机有一个“迁移”的特性:某虚拟机原本是在主机A上创建的,后来由于主机A硬件故障,需要将虚拟机迁移到主机B上。这个特性我觉得有一个要求,就是主机A和主机B应该是共享存储的,这样迁移的成本就很低。否则的话,按照我目前上面的配置,主机A和主机B使用的存储是分别独占的,那迁移就必须把虚拟机对应的文件从存储A拷贝到存储B上才行,性能肯定比共享存储差很多

所以现在我怀疑我的配置应该是错了,我应该把现在的3台主机都放到一个HOST_GROUP里,然后所有的LUN(1个或多个,好像差不多)都映射到这个唯一的HOST_GROUP上。这样存储是共享的,才能支撑未来虚拟机迁移的场景

回忆了一下,我确定存储产品是支持这样配置的,但是还需要hypervisor client也支持才行。印象中在创建“数据存储”的时候,需要指定从某一个主机创建,并没有 独立于主机创建的选项。如果按照上面我设想的配置方法,如果“数据存储”是在主机A上创建的,那当我想在主机B上创建虚拟机的时候,似乎就选不到这个“数据存储”了,因为client好像限制了 虚拟机和“数据存储”必须在同一台主机。听起来十分愚蠢,不过我很怕这个虚拟化平台产品它就是真有这么蠢

你可能感兴趣的:(raid,存储,虚拟化,LUN,磁阵)