忽如一夜春风来,千树万树梨花开——CentOS7.5新功能简介

  昨天在Azure创建虚机时,无意中发现CentOS7.5已正式在Azure发布:

mark

  CentOS7.5虽然只是一个小版本升级,但是却引入了很多新功能。特别是存储方面,可以大大方便我们的工作。

  首先,在China Azure创建一台CentOS7.5的虚机,位于China Azure的新region北2区(目前该区域还在内测):

mark

  进入虚机检查kernel,是5月22号发布的最新版:

mark

  现在可以愉快的测试CentOS的新功能了。

跨Region的SMB访问

  众所周知,Azure提供了基于SMB2.X和3.0的文件共享服务,对于Linux,由于kernel限制,必须使用一定版本以上(例如CentOS7)才能支持,并且因为不支持SMB3.0加密,Linux无法做到像Windows那样跨广域网访问文件共享存储。

  现在CentOS新升级了kernel,再来做测试 。

  在Global Azure上创一个文件共享服务:

mark

  从该共享的域名地址:sa011.file.core.windows.net可以看出,属于Global Azure的服务。

  现从China Azure的虚机来mount这个文件共享:

mark

  成功实现。

  进入加载点,并创建一个文件:

mark

  回到Azure的该文件共享服务,刷新可看到该文件已出现:

mark

  跨Region的文件共享可以大大简化我们的架构部署,实现数据的一致性,避免各Region之间文件复制导致的复杂性。甚至在家也可以通过internet访问文件共享服务。

块级重复数据消除

  如果说SMB3.0加密支持只是一个小改进,块级重复数据消除就是个重磅炸弹了。

  这个功能最早是在各存储厂商的盘阵推出(Thin-Provision),简单解释就是超分配,例如有1TB的空间,但在分配时,可以分配远远大于1TB的空间给用户(例如100TB),而用户并没有真正拥有该空间,只是在存放文件时,根据实际文件大小分配空间;管理员可以在后台随时扩充,而对客户是完全透明,没有感知。

  设想这样一个场景,IT运维人员调查五个业务部门的空间需求,每个业务部门都狮子大开口,需要50TB,但老板给的预算远远不够,只能买10TB存储。如果按实际容量分配给业务部门,每个业务部门只能有2TB空间,很有可能半年后一个部门的实际空间需求超过2TB,需要停机扩容,而另外的部门可能200GB都没用到,总空间有富裕却不能使用。如果采用了重复数据消除,给每个部门都分配50TB空间,就无需关心每个部门的空间使用情况,只需关注总的空间占用情况,快到10TB时,直接在后台对总空间扩容,而业务部门无感知。通过这种方式可大大提高存储的性价比。

  CentOS7.5的kernel已经内置了块级重复数据消除功能(VDO),下边看看如何使用。

  首先安装VDO模块:

mark

  可以看到在Azure的CentOS7.5已默认安装VDO所需模块。

  给虚机附加一块30GB磁盘(sdc),并在该磁盘上创建一个100GB的VDO设备:

mark

  使用xfs格式化该设备:

mark

  并挂载给一个目录(-o discard可以自动回收空间):

mark

  可以看到,虽然sdc只有30GB容量,但我们却在上边建立了一个100GB的空间分配给系统使用。

  检查设备的容量情况,可以看到逻辑容量、实际使用量等:

mark

  该设备分配了100GB空间,但实际只占用了4.0GB(用来存放元数据等)。

  现在通过dd命令在该加载点下生成一个10GB的文件:

mark

  再次检查VDO设备的容量情况:

mark

  目录里虽然多了一个10GB的文件,但实际占用空间并没有增加,因为这个文件里全部是0(来源/dev/zero),vdo会自动抛弃这部分内容,只是记录指针。

​ 再生成一个10GB有内容的文件:

mark

  这次文件的来源是/dev/sda,相当于讲sda这块硬盘的前10GB内容复制到file02这个文件里。再次检查容量情况:

mark

  实际占用空间4.5GB,存放了2个10Gb的文件,消重率达到97%。

  通过实际测试可以发现,块级数据消重确实可以大量节省空间。但是文件读写过程中,可能大量顺序读写变味了随机读写,可能会导致一定性能损失。随着SSD高速磁盘的性能迅速提升,相信性能损失会降到基本忽略的水平。

  如果客户是容量成本比较敏感,可以通过此方式为客户节约成本。对VDO设备的创建作进一步改进,不是放到基本磁盘而是放到lvm设备,还可实现实际空间快满时的无间断扩容,满足性价比的需求。


  CentOS7.5在存储方面的新特性简单介绍到此为止,希望大家都能愉快的使用。

MS Love Linux!