跳到主要内容

Storage Awesome

考虑因素

  • 怎么用
    • 确定使用方
      • 用户 - 例如: S3
      • 操作系统 - 例如: GFS, DRBD, NFS
      • SaaS 服务 - 有 软件定义存储 的能力 - 租户、隔离、BYOD
    • 选择网络接口协议
    • 块 vs 文件 vs 对象
    • 需要什么样的功能 - 快照、备份、加密
    • SDS
    • 特殊场景 - 小文件、批处理、机器学习、锁、实时性
  • 有什么
    • 网络带宽、网络延时
    • 存储设备情况 - NVME、SATA、SAS
    • SAN 环境?
  • 面对什么样的威胁
    • 磁盘损坏
    • 网络异常
提示

90% 的情况下都不需要分布式存储,单机使用 ZFS 可以把存储能力叠到很高。

基于单机存储也可以实现 SDS - 软件定义存储。

网络接口协议

  • 对象存储协议 - KV, 不需要文件语义
    • s3
    • swift
  • 文件服务 - 通用, 有文件语意, 不需要 POSIX
    • webdav - 唯一 Web 环境可用的协议, 支持面广, 简单
    • ftp,sftp,ftps
  • 本地文件共享 - 对速度和使用环境有要求, 通常是 POSIX 兼容
    • nfs
    • smb,cifs
    • afp
  • 分布式文件 - 数据处理, 代码靠近数据
    • hdfs
  • 块设备协议
    • iscsi
    • nvme-tcp
    • sata
    • ide
  • 操作系统接口
    • fuse
    • sshfs
    • rdb
    • SPDK, NVMe-oF
    • virtio-fs

分布式存储服务

国人开发/维护

  • seaweedfs - 快存储,小文件优化
    • Apache-2.0, Go
    • 对象存储+filter 提供文件存储
    • S3 基于 filter 纬度
    • 开发活跃,作者活跃
  • juicefs
    • Apache-2.0, Go
    • AGPL-3.0 -> Apache-2.0
    • 代理层
    • metadata - Redis, TiKV, PG, MySQL
    • data - S3, OSS, Ceph, MinIO
    • 使用 S3 提供数据,但不会用 S3 结构,而是自己的逻辑结构,因此文件无法对应
  • opencurve/curve
    • Apache-2.0, C++
    • 块存储
    • by 网易
  • cubefs
    • Apache-2.0, Go,C++
    • by 京东, OPPO
    • chubaofs -> cubeFS
    • CNCF 项目
    • 提供 S3 接口
    • POSIX
    • 多租户
  • happyfish100/fastdfs
    • GPL-3.0, C
  • haiwen/seafile
    • GPL, C
    • 🚧 开发不活跃

协议库

Fuse

Sync/Transfer/Backup

Web Client