Posts 干货!服务器阵列卡如何添加硬盘
Post
Cancel

干货!服务器阵列卡如何添加硬盘

这是一篇实际操作,解决问题的长文,没耐心者请直接跳过!!!

声明!此类对服务器的操作都及其危险,此文仅供参考、学习,任何人因此造成的后果一律与我无关!

声明!此类对服务器的操作都及其危险,此文仅供参考、学习,任何人因此造成的后果一律与我无关!

声明!此类对服务器的操作都及其危险,此文仅供参考、学习,任何人因此造成的后果一律与我无关!

可能有人觉得不就是把硬盘插进去,然后格式化下就完了吗!这么认为的人一定是没有亲自运维过服务器的底层硬件。实际上的服务器(还不是集群,集群更复杂,涉及到分布式存储系统之类的)系统还是挺复杂的,也比较考验服务器方面的综合操作能力。

基础环境

服务器为DELL R730XD 2U服务器,配24物理核(48逻辑核),H730 mini阵列卡,12个硬盘位,配Centos 7 Server mini版。初始配置为3块3T的SAS硬盘组raid5虚拟VD盘,没有热备盘,所以实际可用的磁盘空间为3T*2,约5.5T左右。目前服务器上已经保存好了各种数据库文件,各种分析流程所依赖的外部参考文件,以及对应的所有代码,脚本,流程,而且所有的生产都依赖于目前的服务器,记住,这是最重要的环境前提!!! 图1,左边3个就是3块3T的,右边上面那个就是新加上去的6T的 DELL R730XD

问题所在

我们知道,NGS数据都非常大,尤其是全外,动不动测序量上百个G,再加上分析过程中的一些临时文件的产生,各种配置文件,参考基因组,各种数据库等等,磁盘空间是很快达到了警戒值。于是,亟需新增硬盘扩容。于是购入一块DELL原装的6T SAS硬盘(二手货,没办法,公司穷)以做扩容使用

服务器硬盘如何扩容?

并不像我们的台式PC,或者笔记本,把硬盘插进去,格式化一下OK了。服务器的特别之处就是对于数据保护的考虑,对磁盘有各种阵列卡进行管理,比如前面所说的raid5,还有raid0,raid1,raid10等等之类的磁盘管理方式,具体是什么意思,请自行查阅。所以对服务器扩容意味需要对阵列卡进行设置,我们新增的硬盘是需要在阵列卡里成为一个虚拟VD盘。

如何实际操作?

虽然对服务器的硬件、系统都有所了解,但是实际动手的机会并不是很多,因为服务器实在是太考虑稳定性了。然而现实目前就需要上手干了,怎么办呢?我很快想到了在线扩容的方法,也就是把目前的VD进行扩容。查阅得知,DELL官方是有这个服务的,包括support里有专门的软件叫做OMSA来做这个事情,OMSA把现有的VD通过一些设置,能够将新加的硬盘跟现有VD合并,且不丢失现有数据(这是最最最重要的事情)。但是非常遗憾,在官方网站的驱动里,并没有Centos系统的支持,只有RedHat和SUSE,想着Centos是从红帽源起一家,应该是通用的吧?于是吧红帽的OMSA下载了。然而安装的时候却提示不支持的操作系统。然后又下载了一个名为linux-based的OMSA,想着这应该是个通用驱动吧?然而,依旧是不支持的OS,就这样在各种查阅、安装的过程中一天的时间很快就过去了,新加进去的硬盘依旧还不知道如何去识别它。望着fdisk -l结果里无法出现的新硬盘我陷入了沉思

阵列卡和磁盘

第二天,肯定是要做啊,不做没有钱用啊。不管你在谷歌搜raid5 add disk, centos sever add disk,R730 add disk等等之类的关键字,你搜到的大部分都是上述DELL OMSA软件如何如何进行操作,为此我还保存了stackexchange里的有些老哥的详尽的亲身解决方案,想着自己能用,比如OMSA。但是后来查阅到DELL的官方工程师提到的dell OMSA,扩容只能通过DELL官方的OMSA方式进行操作,无法通过在BIOS里对阵列卡进行操作,除非你的数据不想要了,那么你可以对磁盘进行重新config。

干货知识点

好吧,工程师的回答让我有点绝望,有且只有通过OMSA才能进行扩容,但是centos又没办法安装官方的OMSA,难不成我还要去找非官方的方式?这样的后果到底会有多严重呢??或者我只能把6T的数据全部拷贝出来,对硬盘组重新配置???这里有必要再次强调一遍,从始至终,我都没有轻易的尝试改变或者操作什么,就是因为考虑到安全性这个第一要素,必须要以现有系统安全运行为首要目的,否则,你面临的,必将是删库跑路的后果!!

这里我直接提出解决方案,具体怎么得到这个解决方案的就不赘述了,不然又是一大篇,各位只需要知道结果就行了!

从始至终的扩容就是一个错误的词汇

首先提出的就是,我们以前一直强调的,和一直做的所谓的扩容,这个想法就是根本错误的(当然也不是全错,只是针对我们这种环境下是错误的),所谓的扩容是针对目前的raid,让现有的raid去做改变,这个必然是需要OMSA去做的,不然你只能删数据重新配置raid,我们真正需要的目的只是让阵列卡能够识别到新增加的硬盘而已,我们需要的只是跟现有的硬盘组相互独立的一个空间,并不需要去跟原有的磁盘组产生关系

阵列卡和raid

再次回到服务器的阵列卡和raid上面来,我们插进去的硬盘并不像平时我们的机器,我们插进去就能识别,服务器因为有阵列卡的存在,如果不进行配置,服务器是不能在OS层面上直接去识别磁盘的,所以现在我们明白后就很简单了,我们就是去对阵列卡进行配置,去识别硬盘就行了,前面我们被什么dell官方工程师的话吓坏了,什么bios设置是无效的,只能通过OMSA,那是针对扩容的操作而言的,但是,其实针对我们的需求,还真就是要去bios设置才能解决问题,所以解决问题一定不能教条主义

raid5和raid0

图1 H730阵列卡首页 这是服务器我进入阵列卡以后的显式图,可以看到我们最开始的3块3T的SAS硬盘确实是被组成了一个raid5的VD盘,编号Disk Group 0,然后下面会详细列出组成group 0的物理硬盘有哪些,容量,热备盘等等信息,最下面还有一个Unconfigured Physical Disks就是我们新插进去的磁盘,我们需要对这个盘进行设置,在图2也能看出,6T的新盘并没有online,处于ready状态,并不能真正的使用 图2 PD Mgmt1

在图1最上面PERC H730 Mini处点回车就会弹出来新盘的设置界面(很遗憾,这个地方忘记拍照了,哈哈),一个盘只能被设置成raid0,然后选中新盘,点ok处就行了,这样,我们就新增加了一个只有一个物理盘的raid0 VD盘,我们再次看看盘管理界面(PD Mgmt),可以看到6T的新盘已经Online了,且编码是01,跟原始的00是不一样的,应该不会影响到以前的磁盘组 图3 PD Mgmt2

在看看控制管理界面(Ctrl Mgmt),boot device是0号VD,还是原始的磁盘组,也没问题,其实操作很简单,但是我依旧心惊胆战,毕竟对这个还不是很有把握,可是依然决定赌一把,保存退出重启,一气呵成,然后等待决定成败的重启! 图4 Ctrl Mgmt

喜大普奔

最终的结局是喜剧!!硬盘被成功识别了,用fdisk -l就可以看到6000GB的新盘了,用lsblk命令则更加直观的看到磁盘情况,5.5T的sdb能够识别了,虽然还没分区

NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  5.5T  0 disk
├─sda1            8:1    0    1M  0 part
├─sda2            8:2    0    1G  0 part /boot
└─sda3            8:3    0  5.5T  0 part
  ├─centos-root 253:0    0   50G  0 lvm  /
  ├─centos-swap 253:1    0    4G  0 lvm  [SWAP]
  └─centos-home 253:2    0  5.4T  0 lvm  /home
sdb               8:16   0  5.5T  0 disk

建分区,格式化,挂载

接下来,就是对识别的硬盘进行新建分区,格式化,挂载等常规操作了,但是这里又有个地方要强调下,因为我们的硬盘是6T的,属于大硬盘(>2T),所以fdisk可能并不会很好的支持,需要我们利用别的方式去格式化,这里我就简单的说下步骤了

  1. parted /dev/sdb mklabel gpt mkpart 1新建磁盘分区,parted也有交互式的方式操作,具体可以自行查阅,这个命令的意思就是对/dev/sdb磁盘就行操作,首先mklabel为gpt模式(对应的还有MBR模式,对于大硬盘,这里选择gpt模式,具体两者区别也请自行查阅),然后mkpart是设置为分区,这里就设置为1,当然默认还有其他操作,比如这里会设置为文件系统为ext2模式,大小为整个磁盘,文件格式我们下一步额外进行操作,什么格式在这里无所谓

  2. mkfs.xfs /dev/sdb1,第1步完成后用fdisk应该可以看到新配置的/dev/sdb1分区,然后我们用mkfs.xfs对磁盘进行格式化成xfs格式,以前我记得都是ext4格式,但是现在xfs应该是更先进的一种文件格式,所以我们设置成xfs格式

  3. mount /dev/sdb1 /disks/disk1 对格式化完后的分区记性挂载,这里我选择的是/disks/disk1,未来我想增加的磁盘以disk2,disk3方式递增下去

  4. 挂载完后,顺利的话就没问题了,尝试在/disks/disk1进行cp,mv,vi,df,du等操作看看顺利否,顺利的话就进行下一步定义挂载配置文件

  5. 在/etc/fstab文件的末尾添加/dev/sdb1 /disks/disk1 xfs defaults 0 0(/dev/sdb1是磁盘分区设备号,/disks/disk1是自定义的挂载目录)一行,然后重启服务器,顺利的话重启后依旧可以直接进入/disks/disk1目录

  6. lsblk再次确认下,sdb1成功mount在了/disks/disk1

NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  5.5T  0 disk
├─sda1            8:1    0    1M  0 part
├─sda2            8:2    0    1G  0 part /boot
└─sda3            8:3    0  5.5T  0 part
  ├─centos-root 253:0    0   50G  0 lvm  /
  ├─centos-swap 253:1    0    4G  0 lvm  [SWAP]
  └─centos-home 253:2    0  5.4T  0 lvm  /home
sdb               8:16   0  5.5T  0 disk
└─sdb1            8:17   0  5.5T  0 part /disks/disk1

大功告成

至此,新加的6T硬盘成功的添加并进行使用了,可以把大部分数据都转移到新盘了,这里再次明确一点,从硬盘被识别以后,上述的第一步开始,不要害怕,可以放心大胆的做,敲命令,因为毕竟是新硬盘,没有数据,大不了从头再来,胆大心细就好了!但是,对于有数据的硬盘切记一定一定一定要慎重再慎重,删库跑路这句话并不是随便说说的。尤其对于有研发、生产任务在其中的服务器,比如我这个,再没有调查清楚,以及非常有自信的情况下,我是真的不敢敲下OK按钮的。不过还好的是,最终并没有出现重大事故,而且,通过此次实际操作,自己也掌握了很多服务器硬件层次上的设置、配置知识点和经验,技多不压身吗!也祝各位也顺顺利利的!

小结

  1. 明确服务器磁盘到底是扩容的需求,还是扩展的需求,扩容需要对现有raid做重新分配,因为涉及到不同raid的设计目的不一样,使用的条件不一样,所以从硬件层次来说,不能够直接进行扩容,必须要针对某些阵列卡(比如H730以上的卡才支持扩容)使用特定的软件(OMSA),才能达到扩容的目的,而且扩容的准备也很多,包括新增的硬盘从大小、品牌、转速等多方面都要和原始磁盘组的磁盘相匹配等等,这个步骤还是很复杂的
  2. 相对扩容,扩展就稍显独立点了,可以独立的扩展硬盘,独立的重组raid。扩展硬盘其实在硬件层次就是扩展一个阵列,所以阵列卡需要支持多阵列(我不知道是不是有只能有一个raid的阵列卡,但是从原理上来讲,如果不支持多raid,那么意味着现有raid会被重置,也就意味着整个磁盘,整个数据会消失,也就意味着删库跑路),就算支持多raid的阵列卡,也千万千万千万,一定一定一定不要对现有raid组进行任何更改,不然结局就是一样的
  3. 也是最终的解决方法,找个有钱的地方,直接用上超算,用上大型集群,什么核不够,磁盘不够,运维什么的不存在的!有什么事都是专业的工程师来解决,自己动手也不存在的!
  4. 如果上面是梦的话,那就只能自己动手了,就4个字,胆大心细
OLDER POSTS NEWER POSTS

Comments powered by Disqus.

Contents

Search Results