![]()
关于分布式存储,这是你应该知道的(图文详解)
顾炯 高效运维 2017-11-07
前言
分布式存储存在的风险,其实就是因为“共享”、“大数据量”、“高性能”和X86服务器+廉价的磁盘为载体之间的矛盾所产生的,不是有些读者说的“数据架构”的问题。其实任何存储都存在这个问题,只是分布式存储更严重。
本文其实是从主机的网络、磁盘的吞吐角度分析存在的风险,所以和用那个厂家的存储无关。
还有人说你是危言耸听,如果按照你说的,这么用了分布式存储有这样的地雷岂不是要炸飞?软件定义的东西其实有很多BUG,重要的是能发现问题,事先做好弥补或方案。
还有人说,分布式存储用到现在也不超过2年,发生你说的问题还早。但是我们已经发现问题了,不能搁置不管。钓鱼岛问题搁置了,现在还不是造成麻烦了吗?

抛砖引玉
存储最重要的指标是什么?
很包括存储专家都会认为是存储的性能指标,比如IOPS和吞吐量。但是我认为存储最重要的是数据的安全性。
一个跑的飞快的存储,突然数据丢失了,后果会怎么样?数据的丢失,对于任何系统来说,都是灭顶之灾。
所以,不管什么样的存储,数据的安全可靠都是第一位的。
原来传统的存储使用了专用硬件,从可靠性上有比较高的保证,所以大家首先会关注性能指标。但是用X86为基础的SRVSAN的可靠性就不容乐观。
为什么说传统存储这个问题不是太突出呢?
除了外,还有应用场景和数据量不同等原因。在传统行业如电信、银行原来的系统建设是烟囱模式。不但网络是独立一套,存储也是。
往往是服务和日志记录,用2台服务器和8个端口的小光交相连,小光交下只挂一个存储。数据量也没有这样大,存储的容量也在5T以下。这样存储的数据迁移是很容易和快速的,方法也很多。
由于是专用存储,所以完全可以采用“非”的手段,数据量也不大,可以在夜深人静的时候停机完成。
据悉,arm架构数据中心联合实验室的研发和建设将以自主创新和绿色节能为导向,以自主可控的国产处理器、服务器、存储、交换机等硬件平台技术和以云计算管理技术、数据加密技术、大数据处理技术、数据中心软件生态建设等为研究重点,以实现高效、安全、海量、高性能、低功耗、高可用性等自主安全可控数据中心关键技术为主要研究内容。a) 云存储:高可靠存储虚拟化,跨平台、可集中或分布式部署、面向资源的管理、提升整体存储能力和资源利用率,能够面向多媒体存储特征进行设计,如数据安全性冗余和更加简单的多媒体储架构,从而在保证整体可靠性基础上降低存储成本,减少维护使用费用。终端数据不在本机存储,而是存储在中心主机(服务器),数据存储更安全可靠,同时云终端n490主机无病毒感染的可能性,具备完美的防病毒特性。
我们在2014年下半年,开始搭建以X86为载体的分布式块存储,经过严格的测试,在同年底投入商用,是业界首个商用的软件定义的分布式存储,当时各种媒体都争相报道。
到现在为止已经商用了近2年,存储运行稳定,表现优良。并从原来2P裸容量扩容到4.5P。
由于熄火问题涉及安全隐患,对此厂家于2011年9月9日召回部分搭载ew10型号发动机的车辆,免费升级发动机软件以消除故障隐患。一是围绕g20重大国际峰会安保等重大政治任务,扎实推进“主要风险隐患专项治理三年行动计划”,推动各地、各部门开展风险预控,建立起城市风险隐患“评估、治理、再评价、再整改”的工作模式,构建形成隐患排查治理与风险分级管控双重预防性机制。规定每周各科室负责人组织对本科室辖区进行安全自查,每月在科室检查的基础上保卫科组织一次全校安全隐患大排查,对查出的安全隐患能限期整改的记入《一般隐患台账》并发《隐患整改通知书》,对一时难以整改的重大安全隐患记入《重大安全隐患台账》并报校领导批准后实施整改。
其实我在写这篇文章前2个月,我已经将这个担忧和想法告诉了现有分布式块存储的产品线总经理,得到他的重视,已经在弥补了。很多软件定义的东西,就怕想不到,突然发生了,想到了就会有相应的解决方案。
存储这个东西,大部分读者并不是太了解,从比较基础知识开始写,并引出问题和大家一起讨论解决的办法。盘算了一下大致分为七个部分,由于篇幅限制,在本篇将先介绍前三部分:
一、存储类型
一般情况下,我们将存储分成了4种类型,基于本机的DAS和网络的NAS存储、SAN存储、对象存储。对象存储是SAN存储和NAS存储结合后的产物,汲取了SAN存储和NAS存储的优点。

ͼ1
我们来了解一下应用是怎么样获取它想要的存在存储里的某个文件信息,并用大家熟悉的Windows来举例,如图1。
1、应用会发出一个指令“读取本目录下的readme.txt 文件的前1K数据”。
2、通过内存通信到目录层,将相对目录转换为实际目录,“读取C:\ test\readme.txt文件前1K数据”

3、通过文件系统,比如FAT32,通过查询文件分配表和目录项,获取文件存储的LBA地址位置、权限等信息。
文件系统先查询缓存中有没有数据,如果有直接返回数据;没有,文件系统通过内存通信传递到下一环节命令“读取起始位置LBA1000,长度1024的信息”。
2. ip转发过程实际上不会再ip报头中写入路由器的地址,而是由主机把数据报和路由器的ip地址向下传递到网络访问层,该层的协议软件会使用一个独立的查询过程把数据包封装到一个帧中,通过本地网段传递给路由器。ping命令会构建一个固定格式的icmp请求数据包然后由icmp协议将这个数据包连同地址“192.168.0.5”一起交给ip层协议ip层协议将以地址“192.168.0.5”作为目的地址。冯·诺依曼结构的计算机由cpu和存储器构成,其程序和数据共用一个存储空间,程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置。
5、磁盘控制器根据命令从磁盘中获取相应的信息。
如果磁盘扇区大小是4K,实际一次I/O读取的数据是4K,磁头读取的4K数据到达服务器上的内容后,有文件系统截取前1K的数据传递给应用,如果下次应用再发起同样的请求,文件系统就可以从服务器的内存中直接读取。
不管是DAS、NAS还是SAN,数据访问的流程都是差不多的。DAS将计算、存储能力一把抓,封装在一个服务器里。大家日常用的电脑,就是一个DAS系统,如图1。

ͼ2
如果将计算和存储分离了,存储成为一个独立的设备,并且存储有自己的文件系统,可以自己管理数据,就是NAS,如图2分布式存储测试方案。
计算和存储间一般采用以太网络连接,走的是CIFS或NFS协议。服务器们可以共享一个文件系统,也就是说,不管服务器讲的是上海话还是杭州话,通过网络到达NAS的文件系统,都被翻译成为普通话。
1、在windows2000server上,从管理工具中进入“路由和远程访问”(routingandremoteaccess)服务,在服务器上鼠标右击,-》“配置并启用路由和远程访问”2、点“下一步”3、选“internet连接服务器”,让内网主机可以通过这台服务器访问internet.(最好先配置好nat共享,让内网主机可以正常上网,不然的话,配好端口映射后再来配置nat共享就有点麻烦了,弄的不好nat还共享不了。vsphere高级功能ha、drs、ft等,都需要有共享存储环境,即多台esxi主机同时连接一个共享存储,这样在新建虚拟机时,可以指定把虚拟磁盘保存在共享存储上,便于虚拟机在各个主机之间“飘移”。“平台即服务”首先是一个灵活的、可扩展的基础设施,通过云主机提供弹性计算处理能力、网络连接和存储设施等。

ͼ3
使用消息传递进行写入并使用 rest 来进行读取,可以从写入中独立优化读取。如果在5号位置存储数据,而同时2号位置前半段存储了数据,则需要先把数据搬出来,凑够4k才能存储在2号位置,也就是这个过程发生了“读取-修改-写入”三个过程,明显费时又费事。在glusterfs 3.3版本中增加的新功能包括: 统一的文件和对象存储:glusterfs实现了openstack里的对象存储api提供同步读取和写入文件或对象的数据的访问。
因为不带文件系统,所以也叫“裸存储”,有些应用就需要裸设备,如。存储只接受简单明了的命令,其他复杂的事情,有服务器端干了。再配合FC网络,这种存储数据读取/写入的速度很高。
但是每个服务器都有自己的文件系统进行管理,对于存储来说是不挑食的只要来数据我就存,不需要知道来的是什么,不管是英语还是法语,都忠实记录下来的。
但是只有懂英语的才能看懂英语的数据,懂法语的看懂法语的数据。所以,一般服务器和SAN存储区域是一夫一妻制的,SAN的共享性不好。当然,有些装了集群文件系统的主机是可以共享同一个存储区域的。
从上面分析,我们知道,决定存储的快慢是由网络和命令的复杂程度决定的。
内存通信速度>总线通信>网络通信
虽然当前以太网络已经抛弃了基于hub的共享网络采用交换机组成交换式以太网,解决了冲突问题,提高了通信效率,但以太的介质访问控制方式还是没有改变,仍然是复杂低效率的csma/cd。带有专用网络总线(dnb)的通信流架构为存储网络数据的系统内存提供了一条直接网络活动路径,能够消除pci瓶颈和缓解输入/输出(i/o)设备负载,从而可使用户享受到真正的千兆位以太网体验。2、电信宽带经过光纤改造后的地方,是光纤入户,由光纤传送网络、电视、电话信号,也必须经过光猫才能将光纤中的网络信号分离出来,转换成数字网络信号,由网线接入电脑网卡。
对存储的操作,除了熟悉的读/写以外,其实还有创建、打开、获取属性、设置属性、查找等等。
对于有大脑的SAN存储来说,除了读/写以外的命令,都可以在本地内存中完成,速度极快。
而NAS存储缺乏大脑,每次向存储传递命令,都需要IP封装并通过以太网络传递到NAS服务器上,这个速度就远远低于内存通信了。
总体上来讲,对象存储同兼具SAN高速直接访问磁盘特点及NAS的分布式共享特点。
NAS存储的基本单位是文件,SAN存储的基本单位是数据块,而对象存储的基本单位是对象,对象可以认为是文件的数据+一组属性信息的组合,这些属性信息可以定义基于文件的RAID参数、数据分布和服务质量等。
采取的是“控制信息”和“数据存储”分离的模式,客户端用对象ID+偏移量作为读写的依据,客户端先从“控制信息”获取数据存储的真实地址,再直接从“数据存储”中访问。
对象存储大量使用在互联网上,大家使用的网盘就是典型的对象存储。对象存储有很好的扩展性,可以线性扩容。并可以通过接口封装,还可以提供NAS存储服务和SAN存储服务。
VMware的vSAN本质就是一个对象存储。分布式对象存储就是SRVSAN的一种,也存在安全隐患。因为这个隐患是X86服务器带来的。
二、文件系统
计算机的文件系统是管理文件的“账房先生”。
如果没有这个“账房先生”,让每个“伙计”自由的出入仓库,就会导致仓库杂乱无章、货物遗失。

就像那年轻纺城机房刚启用的时候,大家的货物都堆在机房里,没有人统一管理,设备需要上架的时候,到一大堆货物中自行寻找,安装后的垃圾也没有人打扫,最后连堆积的地方都找不到,有时自己的货物找不到了,找到别人的就使用了……。
大家都怨声载道,后来建立了一个仓库,请来了仓库管理员,用一本本子记录了货物的归宿和存储的位置,建立货物的出入库制度,问题都解决了,这就是文件系统要做的事情。
文件系统管理存取文件的接口、文件的存储组织和分配、文件属性的管理(比如文件的归属、权限、创建事件等)。
linux系统如同unix系统将一切都可以看作文件来操作,linux系统下针对不同外设以及存储设备存在多种不同类型文件,这些不同类型文件有着相当的用途,实际软件应用中通常操作文件系统中普通文件应用比较常见,另外在网络通信中套接口文件等也比较常见。每一种操作系统都有成千上万的文件组成,对于linux这样“一切皆文件”的操作系统来说更不例外,大家应该都能很轻松使用windows下的文件查找功能,但是对linux这一功能可能并不是很熟悉,其实想玩linux的你更要牢牢掌握这个命令,因为linux不像windows那样有固定的文件名后缀,并且因为linux阵营下百家争鸣的特性,一个相同的文件在不同的发行版,可能会有不同,所以如果你能牢牢掌握find命令的使用,你在摸索linux的道路上将会顺利很多,同时你会发现linux下文件查找功能其实很简单,而且要比windows下查找功能强大很多很多。linux系统文件api主要包含文件创建、删除、打开、读写以及控制等,下面将会详细介绍linux系统内核提供的文件操作api的应用情况。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-101995-1.html
卡死机两次了
是因为你的家在
台湾问题得到彻底解决的那一天