云端存储
技巧一:尽可能使用高级别磁盘
随着云中硬盘的发展,磁盘已经从早期脆弱普通的云盘,发展到了高性能的 SSD 固态盘。磁盘的 I/O 性能从上千飙升到上百万,单盘存储达到 32T,单路延迟大大降低。所以,我们应该尽可能地选择性能更高的云盘,这样如果后续业务不断提升,磁盘不会成为发展的瓶颈。同时,高规格的磁盘在后续运维中能发挥极大用处,比如,能够创建快照一致性组或者快照极速可用等。
技巧二:使用云中的自动快照功能建立快照
云中有个好用的功能,就是磁盘的快照功能。快照,顾名思义,就是在某一时刻对磁盘进行的一次“拍照”,记录下这个瞬间的数据。一旦我们对数据误操作,就可以使用快照的回滚功能,将数据回滚到创建快照的那一刻。快照同时可以用于备份、容灾、持久化存储等功能,是云中虚拟机使用频率最多的服务之一。
快照可以设置自动备份,在特定的时间对云盘的数据进行备份。比如,设置每天备份后,如果需要恢复数据,可以进行回滚,回滚的 RPO 为从当前时间到上一次快照的时间。而快照是可以同时设置自动快照和手动快照的,我们可以使用自动快照和手动快照相结合的方式,进行更加精确的 RTP 和 RPO 设置。
技巧三:一块云盘不建议建立多分区
现在的虚拟机几乎都支持在线扩容,所以如果磁盘容量将要耗尽时,我们可以直接在控制台中购买云盘新空间,再进入系统使用 resize2fs 命令扩容文件系统,十分方便。整个过程可以在机器运行时进行(需支持的机型),不需要停机,不影响业务,秒级生效。如果磁盘使用的是多分区的话,反而会让整个过程变得更加复杂。如果是有特殊的需要,需要区分多个分区或者多个目录,也建议使用多块盘进行对应的挂载分区。
技巧四:不建议使用 LVM 功能
在云计算还未普及的时代,为了便于管理,提升磁盘的性能,我们会通过使用多块硬盘的拆分 - 组合,通过 LVM(Logical Volume Manager)机制虚拟出一块逻辑磁盘。这时候的磁盘 I/O 性能提升约 10%~30%,可以满足业务高 I/O 需求。
而进入云时代,云盘已经支持高 I/O 性能,我们大可不必使用 LVM 来提升性能。而且,不推荐使用 LVM 的原因还有一点——LVM 是对不同的磁盘进行统一的逻辑管理,而云中快照是对单一磁盘孤立地做快照。不同磁盘做快照的时间必然不一致,所以一旦发生问题,某块磁盘需要回滚,此时回滚磁盘会对数据造成不可逆的伤害。所以非必要,不建议使用 LVM 功能。
技巧五:使用快照一致性组
如果我们必须使用 LVM,是不是就没有解决方案了呢?答案是有的,使用快照一致性组进行快照可以解决这个问题。当机器正在运行时,人工或者系统对 A、B、C 三块盘同一时刻分别做快照,还是会产生微小的时间差,本质上各磁盘中的数据还是独立存在的,而快照一致性组,就可以很好地解决这个问题。
阿里云的快照一致性组可以同时创建快照,保证了数据写入云盘的时序一致性。快照一致性组是全新的一项功能,只对高级别的磁盘可用,所以这时候你就明白技巧一里说的了吧,选择高性能的磁盘,有利于后期整个业务的运维升级。
技巧六:云盘一般不随实例释放
在购买云盘的时候,通常会有一个选项,默认是云盘随着实例的销毁而释放。这种默认的选择很容易造成一种情况:在后续终止业务或机器到期时,释放机器的时候数据同时被自动销毁。建议你取消勾选这个选项,这样在实例释放后,云盘会被单独保留下来,你可以挂载到其他的服务器中,或者对其进行最终数据的备份。当然,如果你确认此磁盘数据不需要做持久化保留,也可随实例释放,根据你的需要选择合适的方案。
技巧七:巧用对象存储工具配合云盘备份
使用云盘的费用比对象存储更昂贵,对于磁盘内的部分数据需要根据时间进行多版本备份的时候,可以结合对象存储的 S3FS/OSSFS(AWS 称之为 S3,阿里云称之为 OSS)功能,来实现将对象存储的 K-V 映射到服务器中的文件系统中,让使用对象存储就像使用磁盘一样方便。此时我们就可以通过 cp/mv 等命令直接备份到 OSS 中,而不是使用对象存储的一些 API 工具进行备份,这样可以减少学习成本,提高使用效率。
技巧八:使用对象存储作为备份的备份库
对象存储有无限大、成本低、高可用的特性,被视为服务器、数据库、视频库等的冷备份方案。通常来说,我们可以结合 S3FS/OSSFS、AWS S3 CLI、OSSutil 等,将已有的数据自动或者手动地上传至对象存储的 bucket 存储桶中,实现冷备或归档及备份。现在 AWS 已经推出了包括标准、智能分层、灵活归档、深度归档在内的 9 种存储类别,总有一款适合你。
技巧九:使用云存储网关作为云中备份方式
虽然 S3FS/OSSFS 工具可以直接挂载在虚拟机中像使用磁盘一样使用,但是目前 S3FS/OSSFS 存在一些限制:
- 性能不稳定
- POSIX 兼容性差
- 大文件并发读写易失败
- 明文保存数据安全性差
- 文件随机读写性能差
所以,S3FS/OSSFS 不适合作为长期的备份方式。如果有长期的需求,我建议你使用云存储网关。云存储网关的服务可以完美地代替 S3FS/OSSFS。推出云存储网关的本意是解决 IDC 与云上的数据存储问题,用来打通本地和云端的存储。现在这个产品也可以直接挂载在虚拟机中作为配合云盘使用。
云存储网关的原理如图,使用云存储网关作为云盘和对象存储的桥梁,是云盘的拓展和延伸,是对数据的补充。
技巧十:使用成熟的弹性文件存储 EFS 系统代替自建 NFS
一个数据盘只能同时挂载在一台服务器上,对于多台服务器访问同一个存储的场景,我们通常使用 NFS 挂载。挂载之后可以在多台虚拟机上通过 TCP/IP 协议进行交互共享数据,如共享日志空间、共享容器空间及共享数据空间等。云中与 NFS 对应的就是 EFS,这里的 E 就是 Elastic(弹性)的意思,意味着云上 NFS 的高可用、弹性、高性能。
我们可以使用 keepalive+NFS 实现高可用,但是在云中部署 keepalive 的时候有一定概率会遇到“坑”,所以,如果需要部署 NFS 的话,我推荐你直接使用 EFS 这个成熟稳定的产品。