买存储的时候,报价单上通常只写容量:五百 G、一 T、两 T。而运行一段时间之后发现,磁盘明明还有一半空间,数据库的写入却开始变慢。这就是容量和 IOPS 脱节的情形。

IOPS 是每秒能处理的读写次数,容量是能装多少数据。这两者由不同的因素决定:容量看单盘大小和盘数,IOPS 看盘的介质的类型和并行度。而盘位是有限的,所以两者常常要取舍。
判断该往哪边倾斜,要看业务是容量敏感还是随机读写敏感。
下面把这两者的关系和取舍讲清:先说清为什么容量够速度可能不够,再讲盘位有限时怎么选,然后给按业务类型的配置方法。
上面这些落到实际,终究要挑一台机器来跑——这几家都是云服务器里比较有代表性的,4 家可选,价格从 22 元拉到 43 元
| 商家 | 推荐款 | 配置 | 带宽与流量 | 月费 | 档位参照 |
|---|---|---|---|---|---|
| 云途 | HK.N4.A | 2 核 2G 20G | 200Mbps / 500G | 22 元 | 存储型,盘位优先 |
| isvoro | HK CN2 Core | 2 核 2G 30G | 100Mbps / 300G | 25 元 | 入门档,先验线路 |
| rabisu | Aydn VPS x8 | 4 核 8G 60G | 500Mbps / 不限 | 34.5 元 | 常规口径,注意超售比 |
| spartanhost | 10Gbps 系列 | 4 核 8G 40G | 10Gbps / 2T | 43.2 元 | 见正文 |
为什么容量够速度可能不够
还有一个:这块差异在最开始就能测出来。
判断方法是采购前要一个试用期。
而试用过的,后面就不会踩坑。
最后一个:先测再买。
判断方法是拿现成机器跑一次压测。
而凭容量买盘的,几乎都会踩这个坑。
还有一个:小文件多的场景消耗更大。
判断方法是统计文件数量。文件越多,元数据操作越多。
而这类操作占用的 IOPS 往往比数据本身还多。
还有一点:目录层级深也会拖慢。
判断方法是看目录结构。层数多的查找更慢。
而这个因素在设计存储结构时就定了。
最后一个:容量用满之后速度会更慢。
判断方法是看剩余空间。太满会影响写入效率。
而留出两成空间是基本要求。
还有一个例子:同样的容量,用一块大容量盘和四块小盘,前者快不了。
判断方法是看总 IOPS 的算法。多盘可以并行处理。
而单盘受物理限制。
还有一点:固态盘也有写放大的问题。
判断方法是看写入模式。随机小写会放大写入量。
而这会加速介质消耗。
还有一个:缓存会掩盖问题。
判断方法是看缓存命中率。命中率高时测不出真实瓶颈。
而缓存失效时问题立刻显现。
容量和 IOPS 是两套指标。
判断方法是区分「能装多少」和「每秒能处理几次」。两者不相关。
而一个增大的时候另一个不一定跟着涨。
小容量盘和大容量盘的 IOPS 差别很大。
判断方法是看同类型的盘,容量翻倍时 IOPS 涨了多少。涨幅通常远低于两倍。
而这个差距在高容量盘上更明显。
机械盘和固态盘差了一个数量级。
判断方法是比较两种介质。固态盘的随机读写强得多。
而这决定了大盘的容量能不能真用上。
还有一点:随机和顺序读写差别很大。
判断方法是看业务的访问模式。随机读写的开销高得多。
而数据库的访问通常是随机的。
所以「容量够」只说明不会存满。
判断方法是看有没有测过随机读写。没测过就不知道快不快。
而多数人只测了存储满不满。
盘数决定并行度,所以盘位多的机器在随机读写上占优。云途那条产品线里高配档的盘位更宽松,适合需要撑住 IOPS 的数据库。
IOPS 由什么决定
还有一个:单块盘的速度上限是硬的。
判断方法是查规格书。
而超过上限只能靠加盘。
最后一个:这些因素会互相影响。
判断方法是不要单独调整一项。
而综合起来看才有意义。
还有一个:写入的策略。
判断方法是看是否开启写缓存。开启能提升写入速度。
而缓存需要断电保护,否则会丢数据。
还有一点:读取的预取。
判断方法是看是否启用预读。顺序读时效果明显。
而随机读时预读反而是浪费。
最后一个:IOPS 是个综合指标。
判断方法是不要只看一个数。要结合实际访问模式。
而脱离场景的 IOPS 数字没有意义。
还有一个因素:读写比例。
判断方法是看业务以读为主还是写为主。两者消耗不同。
而写为主的更受校验影响。
还有一点:块大小也影响。
判断方法是看每次读写多少字节。小块的开销更大。
而大块的能更好利用带宽。
还有一个:存储的网络协议。
判断方法是看是本地盘还是网络存储。网络存储多一层开销。

而这个开销在高 IOPS 场景下很明显。
第一个因素是介质类型。
判断方法是看是机械盘还是固态盘。这是最大的变量。
而固态盘没有寻道时间,随机性能强。
第二个因素是并行度。
判断方法是看有几块盘同时工作。盘数多的总 IOPS 更高。
而单块盘的 IOPS 有物理上限。
第三个因素是队列深度。
判断方法是看并发请求有多少个同时发出。深度大的能更好利用并行度。
而深度不够时,多盘也不会更快。
第四个因素是阵列方式。
判断方法是看用的是什么冗余方式。不同方式对写入的影响不同。
而校验计算会增加写入开销。
还有一个常被忽略的因素:文件系统。
判断方法是看其元数据的设计是否适合大量小文件。小文件场景差异明显。
而这类差异在文件数量多时才显现。
盘位不够最省事的办法是把热数据分散开。rabisu那个按月付费的档价格不高,多开一台专门跑冷数据比加盘便宜。
盘位不够时怎么取舍
还有一个:盘位限制通常比预算更硬。
判断方法是先确定能装几块。
而在这个约束内选,方案才落地。
最后一个:把取舍的理由写下来。
判断方法是记录为什么这样选。
而写清楚的,日后不用重新论证。
还有一个:混合配置的思路。
判断方法是高速盘放热数据,大容量盘放冷数据。
而这个组合比单一方案更经济。
还有一点:盘位分配要留余量。
判断方法是不要一次占满。留一两个位置备用。
而占满之后连替换都要先拆。
最后一个:先做减法再做加法。
判断方法是先看能删能移的有多少。
而减法做完了,往往就不用加盘了。
还有一个:算总价而不是单价。
判断方法是比较两个方案的总成本。单价便宜的总价可能更高。
而这个对比要做完整。
还有一点:考虑扩展性。
判断方法是看未来一年数据会涨多少。
而只为当下选的,很快又要换。
还有一个:评估迁移成本。
判断方法是看换盘是否需要停机。需要停机的代价更高。
而这部分常被低估。
第一种选择是用大盘。
判断方法是看单盘容量的上限。选最大的能装更多数据。
而代价是单盘 IOPS 提升有限。
第二种选择是用多盘。
判断方法是看盘位数。盘位多的,并行度更高。
而代价是总容量受单盘大小限制。
第三种选择是用固态盘换速度。
判断方法是看容量需求能否压缩。能压缩的话,固态盘更优。
而这个压缩往往比想象中容易。
第四种选择是外接存储。
判断方法是看能否扩展到外部。外部存储不受盘位限制。
而外接会带来额外的网络延迟。
还有一个判断依据:业务的真实数据量。
判断方法是减去可以归档的部分。归档的数据不需要放在高速盘上。
而这一减法能让固态盘方案变得可行。
冷热分层是最省钱的配置思路。sixtynet那几档规格标得明确,能精确对上热数据的量。
按业务类型配置
还有一个:监控要覆盖磁盘等待。
判断方法是看等待时间的占比。
而这个指标最直接反映存储压力。
最后一个:问业务方数据增长的预期。
判断方法是拿到一个数字。

而估算时这个数字比技巧更重要。
还有一个:数据仓库类的需求。
判断方法是看是否大量扫描。扫描吃的是带宽。
而带宽和 IOPS 不完全是一回事。
还有一点:流媒体类。
判断方法是看是否需要高并发读。并发的读更依赖带宽。
而这类的容量需求通常很大。
最后一个:把热冷分层写进方案。
判断方法是明确哪类数据放哪种介质。
而写清楚的,实施时不会走偏。
还有一个:消息队列类的需求。
判断方法是看是否有大量小写入。小写入对 IOPS 要求高。
而这类业务容量需求反而不大。
还有一点:搜索类业务。
判断方法是看索引大小和查询频率。两者共同决定需求。
而索引重建时压力最大。
还有一个:缓存服务。
判断方法是看是否需要持久化。持久化的写入会影响 IOPS。
而不持久化的可以更省。
数据库类业务要以 IOPS 为先。
判断方法是看是否有大量随机读写。有的必须保证 IOPS。
而这类业务通常数据量不大,容量需求不高。
日志类业务要以容量为先。
判断方法是看写入量是否顺序。顺序写对 IOPS 要求低。
而这类业务的数据量往往很大。
文件存储类介于两者之间。
判断方法是看文件大小。小文件多的更依赖 IOPS。
而大文件为主的对容量更敏感。
备份类业务只看容量。
判断方法是看是否需要频繁读取。不读的只考虑容量。
而这类业务用便宜的介质就够。
还有一个通用原则:热数据放高速盘,冷数据放低速盘。
判断方法是按访问频率分层。分层的效果最明显。
而全放高速的成本会高很多。
怎么估算自己的 IOPS 需求
还有一个:把峰值和均值都记下来。
判断方法是两个数字都留着。
而配置按峰值,容量按均值。
最后一个:估算结果要能对上实测。
判断方法是压测后回头对照。
而对不上的说明假设有问题。
还有一个:把估算做成表格。
判断方法是列出每类业务的需求。分项加总更准。
而笼统估一个总数的,误差很大。
还有一点:定期复核。
判断方法是按季度看实际数据。业务变了需求也变。
而只用一次估算的,很快就过期。
最后一个:估算要留可修正的余地。
判断方法是先在低配验证一期。
而验证过的数字,比任何推算都可靠。
还有一个:用压测验证估算。
判断方法是模拟真实访问模式。模拟比推算准。
而模式不对的压测会得出错误结论。
还有一点:注意业务的周期性。
判断方法是按周和按月看。周期性波动会影响峰值。
而按月看会平滑掉周内的峰。
还有一个:把估算结果和配置对比。
判断方法是看是否匹配。不匹配就要调整。
而这个对比应该在采购前做。
第一步是测当前的 IOPS。
判断方法是看磁盘的读写次数统计。现成的数据最准。
而没有统计的要先开起来。
第二步是找出峰值。
判断方法是按分钟看而不是按天。峰值远高于平均值。
而按平均值配的会扛不住高峰。
第三步是算增长预期。
判断方法是按业务增长推算。数据量涨了 IOPS 也会涨。
而只按当下配的,很快不够。
第四步是留出余量。

判断方法是留三到五成。太满会没有缓冲空间。
而没有余量的,一点波动就顶到上限。
还有一个关键点:区分读和写的需求。
判断方法是分开统计。两者对存储的压力不同。
而混在一起估的,会误判阵列方式。
阵列方式对两者的影响
还有一个:阵列卡的能力也要看。
判断方法是看是否带缓存和电池。
而没缓存的写入会明显更慢。
最后一个:冗余不能省。
判断方法是看数据能否重来。
而不能重来的必须有冗余。
还有一个:容量计算要算实际可用。
判断方法是扣掉校验和预留。标称容量不等于可用。
而这个差值在配置时经常被忽略。
还有一点:预留空间的设置。
判断方法是看是否留了预留。不留的写入会变慢。
而预留越多,实际可用越少。
最后一个:阵列方式选了就不好改。
判断方法是选之前多算一遍。
而后悔的成本是重建整个存储。
还有一个:重建时间的影响。
判断方法是看盘越大重建越久。重建期间性能下降。
而这个窗口在高容量盘上可能很长。
还有一点:单盘故障的影响范围。
判断方法是看冗余能否承受。承受不了的数据会丢。
而这个要按最坏情况评估。
还有一个:热备盘的作用。
判断方法是看是否有热备。有的话恢复更快。
而这个配置能显著缩短降级时间。
不同的冗余方式对容量和速度的影响不同。
判断方法是看校验是怎么分布的。校验占用的容量和写入次数不同。
而这直接决定可用容量。
镜像类的方式容量减半。
判断方法是算可用容量。一半用于冗余。
而速度上反而有提升,因为可以并行读。
校验类的方式容量损失小。
判断方法是算校验占用。可用容量更高。
而写入时需要计算校验,会拖慢写性能。
条形类的方式不损失容量。
判断方法是看是否做冗余。不做的没有保护。
而性能最好但风险最高。
所以选择要看哪一边更重要。
判断方法是权衡可用容量和写入速度。
而盲目追求大容量可能牺牲了写入。
几个常见的误区
还有一个:以为升级盘就能解决。
判断方法是先定位是否真是磁盘问题。
而有时候瓶颈在网络或内存。
最后一个误区:以为便宜就是省。
判断方法是算总成本。
而后期折腾的成本往往更高。
还有一个误区:以为 IOPS 越高越好。
判断方法是看业务是否用得上。用不上的只是浪费。
而按实际需求配,性价比最高。
还有一点:以为所有固态盘都一样。
判断方法是看介质的耐久等级。差异很大。
而选错等级的会提前损坏。
最后一个误区:以为配置一次到位最好。
判断方法是留出可扩展的路径。
而一步到位的,往往配得过头。
还有一个误区:以为固态盘不需要冗余。
判断方法是看数据重要性。重要的仍要冗余。
而固态盘也有故障率。
还有一点:以为容量越大成本越高。
判断方法是算单位容量价格。大容量盘的单价可能更低。
而这需要具体比较。
还有一个:忽略了温度对速度的影响。
判断方法是看散热条件。高温会触发降速。
而机房散热不足时这个问题很明显。
误区一:容量够就没问题。
判断方法是看是否测过 IOPS。没测过的不能这么说。

而这个误区最普遍。
误区二:盘越大越好。
判断方法是看单盘的速度。大盘的速度不一定更高。
而盘中寻道距离变长,随机性能反而下降。
误区三:盘越多越慢。
判断方法是看阵列方式。合理的阵列下盘多更快。
而这个误解会限制合理扩容。
误区四:固态盘一定快。
判断方法是看接口和协议。旧接口会限制性能。
而接口不匹配的话,固态盘优势发挥不出来。
误区五:扩容只需加盘。
判断方法是看是否需要重建阵列。重建期间性能会下降。
而这个影响常被忽略。
盘位紧张时的实际做法
还有一个:先用成本最低的做。
判断方法是从删数据开始。
而删数据是唯一零成本的办法。
最后一个:把盘位当资源管理。
判断方法是记录每个位置的用途。
而心里有数,扩容时才不慌。
还有一个:评估是否需要归档系统。
判断方法是看历史数据的访问频率。很低的可以归档。
而归档之后主机上的压力会明显下降。
还有一点:把清理结果记录下来。
判断方法是看每次腾出多少空间。
而这个数据能帮你判断下次多久又要清理。
最后一个:把清理做成例行工作。
判断方法是定期检查占用。
而临时清理的,总是在最紧张的时候做。
还有一个:把日志和归档分开。
判断方法是看日志量有多大。分开能腾出空间。
而日志往往是最占地方的。
还有一点:定期清理临时文件。
判断方法是看临时目录的大小。这里有大量可删的。
而这部分常被遗忘。
还有一个:评估数据是否真的都需要保留。
判断方法是按业务要求核对。有些数据可以按期限清理。
而这个动作能一次腾出很多空间。
第一个做法是清理无用数据。
判断方法是列出占用最大的目录。常有大量可以删的东西。
而这个动作零成本。
第二个做法是把冷数据外移。
判断方法是按访问时间分类。长期不访问的移到别处。
而这个做法能腾出高速空间。
第三个做法是压缩存储。
判断方法是看数据是否可压缩。文本类压缩率高。
而压缩会带来一点 CPU 开销。
第四个做法是用分层的方案。
判断方法是看是否支持自动分层。支持的话能兼顾两边。
而这个方案的成本介于两者之间。
还有一个:评估是否值得升级整机。
判断方法是算盘位不够带来的损失。损失大的,升级更快。
而总在小修小补的,长期看更贵。
把整篇收一句
最后一个:把容量和速度分开看。
判断方法是两个指标都测一遍。
而只测一个的,问题藏得很深。
容量够不等于速度够,IOPS 和容量是两套独立指标。
判断方法是:先测当前的随机读写次数和峰值,按增长留出余量,再决定是加大盘还是加盘数。数据库类以 IOPS 为先,日志和备份类以容量为先。
盘位有限时的顺序是:先删无用数据,再外移冷数据,然后压缩,最后才考虑换盘或换机。
最后一句:存储选型的核心不是能装多少,是每秒能转几次。
本文只为提供市场讯息,所有内容及观点仅供参考,不构成投资建议,不代表本站观点和立场。投资者应自行决策与交易,对投资者交易形成的直接或间接损失,作者及本站将不承担任何责任!
此内容由AI根据文章内容自动生成,并已由人工审核

喜欢
顶
难过
囧
围观
无聊
服务器放在韩国
DODO (DODO) 币
Seppuku (SEPPU
台湾机房和香港