浅析固态盘应用程度及文件系统难题

  • A+
所属分类:未分类

基于闪存的固态盘(SSD)正在成为企业存储用户的一个大难题;和我一起工作的很多用户出于很多原因正打算采用这种新型“Tier 0”数据存储,可能这些原因非常简单,比如每瓦IOPS、每单位成本IOPS、(或者对于某些应用来说)每GB/s存储的带宽。

相比传统磁盘存储来说,固态盘有很多缺点,到目前为止最大的缺点恐怕就是成本了。有人说,因为闪存固态盘的出现,旋转硬盘很快将成为历史,但我认为这在短期内是不太可能发生的,即使发生了,取代了旋转硬盘的设备也不会是基于闪存的,并且不会在这个十年结束之前出现。厂商们说磁带将走向灭亡已经说了20多年了,但是磁带至今仍然在数据保护策略中扮演着重要的角色。看上去似乎多层存储将一直存在。

这是关于闪存固态盘部署系列文章的第一篇,将谈到适用于闪存的应用,以及一些用于部署的文件系统和其他等问题。第二篇文章将谈到硬件问题,第三篇将谈一谈固态盘设计和所使用的SAS以及RAID控制器。

适用于固态盘的应用

我们都知道,高IOPS架构有利于数据库等应用,但是当你尝试向架构中引入闪存固态盘的时候你应该考虑些什么?

对于应用来说,固态盘真正的好处包括小块I/O请求的延迟。现在,大多数企业级固态盘很轻松地就可以保持40000的读取IOPS和30000的写入IOPS,而最快的2.5英寸1.5万转硬盘只能做250个随机IOPS。当然,你需要硬件来实现这一性能,后面的第二篇文章我们将谈到这个问题。

显然使用密集的数据库可以从固态盘技术中获益,最突出的要算数据库索引了,其次是数据库日志文件。这些文件一般要比表格空间小,而且通常是保存在1.5万转硬盘中的,甚至经常受到性能方面的限制。像iostat这样的性能工具、sar和其他等性能监控工具通常被用于评估与这些设备相连接的LUN附加存储的延迟。

尽管闪存存储相比旋转磁盘来说仍然是非常昂贵,但是了解闪存所能带来的潜在好处是非常关键的。如果你的设备上有较大型的命令队列,而且每个命令的延迟较高,那么也许你的数据库比较适合于使用闪存存储。

闪存的文件系统难题

另外一个新出现可利用闪存的潜在领域就是文件系统元数据。现在有很多文件系统是将数据与元数据分离开来的,这样我们就可以把元数据保存在固态盘上。这种类型的文件系统将变得越来越普遍。顺便说一下,当我与文件系统设计者交流,或者我自己设计文件系统的时候,我个人比较推崇这种文件系统。这种方法很有意义,因为元数据通常有不同的访问模式。除了文件系统元数据以外,与数据库一样,对于那些有日志的文件系统来说,这些文件系统的日志也适合保存在固态盘中。

对于大多数闪存固态盘来说,最大的问题之一就是它们的读写限制在4096字节范围内。你可能会认为这并不算是个问题,因为索引节点大多数是512字节的,而且就我所知文件系统元数据的分配通常是成对的。这时候出现的问题我们通常称之为文件系统超级块(superblock)。超级块包括关于文件系统的基本信息:用于文件系统的卷和位置,配置和可调节的大小,分配映射表和其他关键数据的不同种类。一些文件系统不会将超级块设定在4096字节。这对于缓存大小固定的RAID控制器来说显然是一个问题,而且对于闪存设备也是一样的。这并不是说性能十分糟糕,但是对于大多数企业级闪存设备来说,在4096字节的限制基础上进行调整和读写性能降低达50%已经是很不错的了。这要比磁盘好多了,但是对于一种高成本设备来说,为什么要浪费那50%的性能呢?

对于我们这些有幸拥有足够预算为文件系统购买固态盘的人们来说,你需要考虑文件系统调节参数。有些文件系统的配置是允许超过64KB的,那么使用大型配置对于基于磁盘的文件系统来说是有利的,而且你可以为浪费空间买单。因此,如果你的配置是1MB,在磁盘上保存了很多大容量文件和一些小容量文件,每个文件的大小都在几MB,那么牺牲小型文件的空间但是有效地配置大型文件,这样你就不需要遵循以往针对大型文件的常规配置。固态盘能够起到帮助作用,因为元数据的分配开销很小,因此遵循常规分配方式往往不会影响到性能。尽管固态盘空间的成本很高,但是当你既有大型文件又有小型文件的时候使用大型分配方式并没有太大意义。按照最小的文件那样进行分配,这样就不会浪费宝贵的固态盘空间。例如,我的笔记本电脑使用了固态盘,我设置NTFS为1024字节,而不是默认的4096字节,因为我知道我有很多小型文件。

其他固态盘软件问题

当利用闪存固态盘设备满足高IOPS需求的时候,你还要考虑到其他一些软件规划的问题。例如,如果你在固态盘上将元数据分为文件系统和数据库,那么你的备份和找回程序需要能够访问固态盘。有时候这些程序有一些认证的硬件,那么你需要确保固态盘是支持这些硬件的。

到目前为之最大的问题恐怕就是你需要多大的空间了。如果你使用固态盘来保存文件系统元数据或者日志、数据索引或者日志的话,那么空间计算就会变得极其复杂。文件系统中的超级块通常很小,不便于计算。往往管理员也不了解目录中的文件数或者目录数。文件系统的不同空间分配也是不同的,你肯定不希望空间被占满,因为你无法添加更多文件或者完成请求中的文件写入操作。文件系统日志也是一样。在数据库方面也面临和文件系统一样的问题。你不希望空间被占满,但是用于索引和日志的空间是很容易计算出来的。对于数据库来说,另外一个需要考虑的就是,如果你在文件系统上运行数据库的话,你就需要计算数据库和文件系统的空间需求。所有这些都会变成一个难题,因为固态盘的成本要远远高于磁盘的成本,因此浪费空间在我看来是非最优的。

本文出自:亿恩科技【www.enkj.com】

河南亿恩科技股份有限公司(www.enkj.com)始创于2000年,专注服务器托管19年,是国家工信部认定的综合电信服务运营商。亿恩为近五十万的用户提供服务器托管、服务器租用、机柜租用、云服务器、网站建设等网络基础服务,另有网总管、名片侠网络推广服务,使得客户不断的获得更大的收益。 服务热线:400-723-6868 服务器/云主机 24小时售后服务电话:0371-60135900 虚拟主机/智能建站 24小时售后服务电话:0371-55621053
广告也精彩
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: