装在笔记本里的私有云环境:网络存储篇(上)

本篇是系列中的第三篇内容,我们继续聊聊如何把一个简化过的私有云环境部署在笔记本里,以满足低成本、低功耗、低延时的实验环境。

在前两篇文章中,我们聊过了基础虚拟化相关的前置准备、以及为了避免在搭建过程中盲人摸象,而准备的监控服务。接下来我们来进行另外一个基础技术设施的搭建,网络存储服务。

写在前面

考虑到实际能够使用的资源有限,并且我们不希望监控、日志等基础服务的数据和这个通用的存储服务产生循环依赖,导致升级维护的时候“产生死锁”现象。所以,对于之前提到的监控日志(非归档数据)并暂时并不会使用这个方式进行存储。以及,因为资源有限,我们也不会使用块存储方案来提供云上的数据库数据落地方案(下文中会提到具体原因)。

本文中技术方案、应用架构的设计考虑,更多是出于对接下来各种基础技术设施日常使用是否方便,容器集群中应用集成使用体验是否良好、相关应用维护是否简单出发。

此外,在正式搭建网络存储的之前,我们需要先了解下什么是“网络存储”,以及这类服务有哪些典型“代表产品”,可以相对低成本的拿来即用。

存储技术选型

在我们熟悉的公有云平台上,网络存储类型一般会分为:块存储、对象存储、文件存储三类。其他更多的品类,则更多是基于这三类进行了一些不同侧重功能的场景定制,赋予了更强的业务能力。

《A map of storage options in Google Cloud》一文配图

上图简单的概括了三大类存储方案的应用场景,至于为什么适合这样的场景,下图中的性能偏好则简明的揭示了原因。
《The Performance of Storage Systems: 3 Criteria to Take into Account》一文配图

不过,我猜如果你没有折腾或者从事过云产品相关开发,可能单从上面两张图还并不能够理解这三种存储之间的差异,以及在本文的语境下,为什么会选择某些方案,舍弃某些方案。下面我们就来展开聊聊。

块存储

现实中的“块存储”设备

块存储(Block Storage),可以通俗的理解为最底层的存储技术,一般会伴随之前文章中提到的基础虚拟化技术一同使用,在某些角度你可以把它看作更灵活的纯软件实现的底层 Raid 技术,但是拥有更迅速的灾难恢复重建能力(大容量Raid重建真的非常慢),并且不像 Raid 需要相同规格的存储磁盘,可以进行不同规格磁盘混用。不过这些相较之 Raid 更强大的能力,需要有强大、稳定的基础网络、以及适量冗余副本来提供,所以这一技术非常适合有海量资源冗余的公有云平台。

因为拥有比较低的操作延时、支持配置非常大容量的存储额度,并且拥有数据自动恢复的能力,所以块存储非常适合作为传统数据库的底层存储技术来使用。以及,当我们在创建公有云云磁盘的时候,可以动态的对磁盘进行扩缩容,为服务器添加市面上购买不到的超大规格容量磁盘,底层也是使用到了块存储技术。

本文的试验环境限制在一台拥有双磁盘位的笔记本,本身存储总量就非常有限,在这个场景下,不论是走 Raid 还是走 Ceph 都会存在资源浪费、并且也因为磁盘副本数量不够多,达不到预期的效果。所以,本文并不适合采用块存储技术配合前两篇文章中提到的虚拟机们一起使用。

如果你对块存储好奇,想实际体验一下效果,可以试试曾经提到的 Proxmox VE 中,这套虚拟化系统默认就支持安装使用 Ceph 作为存储后端。如果你只是想了解块存储技术是如何工作的,我推荐你简单阅读 Ceph 官方关于 RBD 的文档。

此外,在多年折腾的过程中,有一个成本节约的小技巧:存储和计算分离 ,如果你有灵活的、大量数据的存储和使用需求,可以考虑单独购置一台设备用于 “NAS” 需求,和你的计算设备走网络连接即可,如果你担心家用路由性能跟不上,可以在设备之间添加一台百十来块钱的交换机。(感觉此处应有一篇番外篇)

对象存储

对象存储(Object Storage)可以理解为面向文件的 KEY-VALUE 数据库。如果说块存储是面向底层操作系统,运行在“系统级别”,那么对象存储则是运行在“应用级别”,服务于应用。(当然,在一些场景下,我们也可能选择使用诸如 s3fs 之类的手段,将其挂载为本地磁盘使用。)

《File Storage vs. Object Storage:Understanding Differences, Applications and Benefits》配图

有的时候,我们会对文件存储和对象存储产生模糊,其实本质上来说这两种存储都是“对象存储”,差异在于文件存储贴近我们一般使用的操作系统,具备目录层级,以及以单一文件进行逻辑存储和读取。而对象存储则是将文件的元信息和具体数据剥离开,分别进行存取,在对象存储底层,其实并没有传统文件存储的层级概念。

目前业界普遍采用的产品方案,是提供无限逼近、兼容已经形成事实规范的 Amazon S3 API,提供 HTTP REST API 给用户使用。目前鲜有具备一定用户量的应用软件,在有外部文件存储需求,而不支持通过 “S3 协议” 进行能力扩展的。

相比较传统文件操作系统(包含 NFS)而言,因为采用 KEY-VALUE 思路进行设计,所以对象存储拥有了极其变态的水平扩展能力,理论来说,你可以通过水平扩容来实现需要无穷多的文件的存储的场景(简直是黄金搭档),比如我们熟悉的:网盘类应用、在线数据表格类应用、拥有大量日志文件的数据分析场景、拥有大量片段文件的直点播场景,以及配合 CDN 直接使用的场景。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值