《图片存储服务器》由会员分享,可在线阅读,更多相关《图片存储服务器(8页珍藏版)》请在金锄头文库上搜索。
1、图片存储服务器1、存储架构同时,客户对图片的访问比较频繁。因此,图片存储服务器必须采用CDN分布式、分级处理热点数据、专业缓存层、防盗链功能,从架构上尽量减少读取图片所需的I/O操作次数。2、接口协议从web页面上,上传的文件直接根据 GFS接口协议将图片存入 GFS系统中,用户可以 通过GFS可以自主选择存储备份情况,这样即使某块磁盘死掉并不会造成图片丢失。GFS访问接口协议的制定:GFS访问接口的编写:3、目录存储规则前端存储使用的域名一直保持不变,后端存储目录对用户是透明的,当存储或访问图片时,通过目录规则,请求将访问后台不同的存储服务器。当存储空间随着时间增加达到系统的空间/负载的瓶颈
2、。GFS定期启用新的存储节点。4、重点:自动数据分层技术分层存储是根据数据的重要性、访问频率、保留时间、容量、性能等指标,将数据采取不同的存储方式分别存储在不同性能的存储设备上,通过分级存储管理实现数据在存储设备之间的自动迁移,即把那些不常被访问的数据或过时的数据转移到速度较慢、成本较低的存储介质上,例如SATA磁盘,以此来降低硬件成本; 而把那些经常被访问或重要的数据放在 速度较快、成本较高的光纤磁盘甚至固态硬盘(SSD)上,以此来提升性能。因此如何将各个级别存储中数据统一管理起来便成了最为关键的问题。7K SATA图自动存储数据分层架构自动分层存储主要抛弃了分层存储中甄别数据和迁移数据的人
3、工操作,而实现了智能化和自动化,自动实现对热点数据的甄别和迁移:(1)存储层次的确定:硬盘架构和文件系统性能高低和上层文件10需求是用来界定存储层次的关键指标。硬盘架构:当上层要求访问某些数据的时候,应当具有较高的并发度,而不是高带宽,所选择的硬盘架构应该是 RAID5而不是RAID3 ;文件系统:当大量的文件平均尺寸小于1KB时,所选用的文件系统 BLOCK SIZE应该为1KB而不是4KB。潜在问题:(1)数据管理层自动利用 SSD来加快I/O和减少延迟性,但整个环境的其他部分必须 足够快才能够充分利用它的优点;(2)如果数据被以近似均匀的频率访问,则数据分层会异常困难和复杂;(3)数据被
4、分成为多个数据小块分别存储与不同的存储层次,增加了元数据管理的复 杂性,一旦系统发生故障,数据的恢复将会更加复杂和缓慢。2)数据分级策略:分级管理引擎 是根据数据的生命周期、 上次访问时间、 大小、 数据信息的关联性等多个 参数对数据所在存储层次进行分级。基于文件级的分级策略 :第一,文件系统的静态特征,如大小文件的分布;第二,文件 系统的访问规律, 如大小文件的访问次数分布; 第三,文件的访问模式是否具有访问局部性; 第四,文件之间的访问关联特征, 如同一程序中的一个文件被访问, 另一个文件何时被访问。 然后, 根据这些文件特征和存储设备的分级情况, 文件分级变化的触发条件和数据迁移, 从
5、而可以在合适的时间把合适的文件存放在合适的存储级别上。文件级的分级可以做到更细化的策略, 比如根据文件的关联应用程序 (扩展名)、目录、 用户、组、调用方式、大小、访问频度等各种属性来作为分类条件和触发条件,以任意卷或 者目录为迁移目标进行迁移。 文件从原始级别存储被迁移到其它层存储之后, 在原始层存储 设备必须保持一个类似硬链接的占位指针, 它的一切属性和操作方法与原文件完全一致, 只 是实体内容不在对应对应位置而已, 并且这个占位符允许其对应的实体内容位于其他文件系 统空间。因为为了保持用户层面的透明性, 用户程序不可能感知到其文件实体内容放在哪里, 但是却必须知道文件存在于哪个路径以更发
6、起访问,而同时路径不能被底层擅自改变。底层存储端实现文件级的数据分级管理策略: 底层实现文件级分级管理时,在文件系 统驱动层上插入过滤驱动程序来监测用户程序发起的文件 IO 操作,并根据策略来将这些 IO 进行重定向迁移等操作。 元数据管理器会参考对应的元数据以判断是否进行迁移以及迁移至 何处。问题: 为了减少不必要的迁移颠簸, 数据能否在一开始创建的时候, 就能预测其访问特 性进而给出相应存储级别?热点数据的甄别 :不同厂商对热点数据有不同的理解和判断依据, 冷与热数据之间没有 严格的分界,都是相对而言。一般是利用二八原则,即 10 分数据,如果把每 1 分数据按照 单位时间内被 IO 的次
7、数来进行排序,被访问次数最多的 2 份数据即为热数据。(3)数据自动迁移存储技术根据文件最后访问时间来判断文件的访问热度, 然后将其实体内容迁移到指定的地点存 放,如何做到实时 IO 重定向是迁移技术的核心。被迁移数据的粒度大小:分为卷级、子卷级、 文件级和数据块级。EMC、3PAR是子卷 级,NetAPP是文件级,Compellent做到了数据块级。一般来讲,迁移粒度越小,物尽其用 的程度就越高,但是所需要维护的元数据以及耗费的系统资源也越多。基于文件级的数据迁移策略:文件级的分级迁移其粒度大小一般就为整个文件。如果要达到更小的粒度,比如将整个文件分为多个逻辑部分,针对每个部分都维护一个描述
8、表用来描述这个部分的访问频度、最后访问时间等信息,这会对系统性能有一定的影响。问题:如何保持上层10重定向后的响应速度?数据在不同存储层次间移动,分级管理引擎会根据这两个存储层之间的性能差距来执行 不同的动作。有两种不同的访问策略:如下图所示:f 上层10速度尚可速度尚可图访问策略2图访问策略1图片1的访问:如果上层10数据从SSD被迁移到SAS层,SSD层与SAS层差别不是太大,引擎可会直接从 SAS层对应的空间内读出内容返回给上层10,这样访问的速度相对可以;图片2的访问:如果上层10数据从SSD被迁移到SATA层,SSD层与SAS层性能差 异很大,不可能实时将上层的10重定向到SATA层
9、,访问速度较慢;(4)在线迁移中的一致性保证技术数据迁移可分为升级迁移和降级迁移。升级迁移是指数据由慢速存储设备和低一级存储设备向快速存储设备或高一级的存储设备迁移,降级迁移正好相反。但由于迁移目的不同,生;但对于升级迁移来说,迁移几乎是发生在I/O最密集的时候,需要保证在迁移过程中,尽可能减小迁移进程对前台I/O的影响。目前可以采用读写锁来保证数据一致性,以数据块为调度粒度来减小对前台I/O性能的影响。迁移进程为当前数据块申请读写锁,以保证迁移进程与写操作进程之间的数据一致性。文件存放路径:/SSD/日期/文件名/SAS/日期/文件名/SATA/日期/文件名6难点:元数据管理器:迁移时,文件
10、访问接口不变每个图片的元数据信息只包括:文件描述符、文件路径、文件最后访问时间、 访问频度。元数据管理器写数据流程:其中1、2、3这三步是原子操作。当一级存储SSD存满时,需要进行分层存储。需要将数据放置到一级存元数据管理器读数据流程: 在三级存储直接提供数据的时候, 储,然后再去元数据服务器修改元数据信息。元数据管理器修改文件流程:程序在修改文件时, 往往是先读后修改, 此时文件已在最高级存储设备,即在读操作后,写入操作在最高级存储设备完成。元数据服务器文件路径存放算法:(1)以目录为单位(2)以文件为单位元数据服务器文件路径查找算法:由于文件存放以下形式/SSD/日期/文件名等,所以在进行
11、文件路径查找时,要面对非常 庞大的元数据信息,元数据服务器是否会成为瓶颈:(1) 由于每张图片都以文件形式单独存储, 庞大的图片量导致更为庞大的元数据规模, 每次请求都会导致元数据服务器大量查找操作, 因此合理的查找算法是提升文件定位速度的 关键。(2)同时在对文件进行分层时,大量图片会放入下一级存储,元数据服务器要进行大 量的路径信息的修改操作。增量扫描技术:分级存储管理工具需要获得文件访问情况并利用这一特性,通过增量扫描技术扫描系统元数据来获得文件信息与文件访问情况,如本周期内所有被访问文件的访问统计(包括访问次数和文件大小)、总访问热度等信息,元数据服务器不必扫描整个文件系统,而通过定期
12、 获取近期访问过的文件信息,大幅度减少文件扫描规模。瓶颈问题:5、图片防止盗链技术,可以根据域名和URL地址进行防盗链设置采用云存储服务,通过 CDN 加速网络,无论访问者身在何处,总能访问网络结构中节 点服务器中离他最近的那台节点服务器, 内容分发系统还可以选择最快的服务器给每一位访 问者。这样就最大程度的节省了图片传输速度。1整体架构CDN的全称是Con te nt Delivery Network,即内容分发网络。其目的是通过在现有的In ternet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络”边缘,使用户可以就近取得所需的内容,解决 In ternet网络拥挤的状况,提
13、高用户访问网站的响应速度。从技术上 全面解决由于网络带宽小、用户访问量大、网点分布不均等原因所造成的用户访问网站响应 速度慢的问题。(也就是一个服务器的内容,平均分部到多个服务器上,服务器智能识别, 让用户获取离用户最近的服务器,提高速度。)事实上通过在 dns解析的时候用了一定的负载均衡的技术让你能访问到最接近自己的 镜像服务器,直接访问该服务器,快速地得到资料。这时候对于一些比较大的文件,并且长 时间不变的东西是非常高效的,如静态的图片网页,一些视频。同时对减少互联网的冗余的流量与压力有很重大的意义使用Nginx前必须了解的事项1. 目前官方Nginx 并不支持 Windows,您只能在包括Linux、UNIX BSD系 统下安装和使用;2. Nginx本身只是一个HTTP和反向代理服务器,它无法像Apache 一样通过安装各种模块来支持不同的页面脚本,例如PHP、CGI等;3. Nginx支持简单的负载均衡和容错;4. 支持作为基本HTTP服务器的功能,例如日志、压缩、Byte ranges、 Chunked responses、SSL虚拟主机等等,应有尽有。