跳至正文
Wener Notes

Storage Awesome

约 4 分钟阅读
标签:资源精选

考虑因素

  • 怎么用
    • 确定使用方
      • 用户 - 例如: 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

Awesome

  • Distributed File Systems/Software Defined Storage
      • LGPLv2.1
      • by RedHat
      • S3 - 对象存储
      • POSIX - 文件存储
      • RBD - 块存储
      • RAOD - 底层
      • 对网络带宽和磁盘带宽要求高
    • - POSIX
    • lustre
    • hdfs - 大数据, 计算->存储
    • openio-sds
    • longhorn
    • - S3
      • AGPLv3, Go
      • 支持作为 S3 代理
      • Rust
      • Apache-2.0, Go
      • S3 Gateway
      • Local -> S3, S3 -> S3
  • S3 to FS/FUSE
      • AGPLv3. Rust
      • 9P/NFS/NBD on top of S3
      • GPLv2, C++
      • inotify 不会检测到外部修改
      • 不支持原子 rename
      • GPLv2, C
      • FUSE/NBD single file backing store via Amazon S3
    • rclone mount
      • Apache-2.0, Go
      • 性能更好,更少的 POSIX 兼容
      • 不怎么维护
      • GPLv3, Python
      • 自有存储格式
  • Object Storage/对象存储
  • 文件存储/File Storage
  • 块存储/Block Storage
    • GFS2
      • Global File System 2
      • Symmetric Shared-Disk
      • 分布式锁管理器 (DLM) 来协调节点间的访问 - Pacemaker、 Corosync
  • Drive/Cloud Storage/云盘
      • AGPLv3, PHP
      • file sync and share platform
      • GPLv3, Go
      • file management and sharing system, supports multiple storage providers
      • Apache-2.0, TS
      • open source alternative to Google Drive, One Drive, iCloud, etc.

国人开发/维护

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

协议库

Fuse

Sync/Transfer/Backup

Web Client

关联信息

反向链接、本文链接的其他页面和外部资料。

反向链接

  • 存储服务
    笔记 · Awesome

    Awesome · 常见问题 · 术语

站内链接

  • 分区类型代码 (Partition Type Codes)
    笔记 · 文件系统

    List of file systems - Wikipedia · See internal list ( command). · | Code | Description | · | 0700 | Microsoft basic data |

  • Ceph
    笔记 · ceph

    适用场景 · 单独存储集群 · 大存储集群 - 100TB+ PB+ · 不适用场景 · 不太适合于直接部署到 k8s 小集群作为微服务存储使用 · 简单的分布式文件系统 · ceph/ceph · LGPL-2.1+LGPL-3.0, C++

  • filebrowser
    笔记 · filebrowser

    filebrowser/filebrowser · Apache-2.0, Go, Vue · 简单的文件浏览器 · Need Maintainers · gtsteffaniak/filebrowser · 配置分为服务配置和系统设置 - 只有服务配置才能 JSON 传递

  • garage
    笔记 · garage

    Deuxfleurs/garage · AGPLv3, Rust · 分布式 S3-compatible object store · metadata + chunk · metadata - lmdb, sqlite · chunk - 1M

  • Gluster
    笔记 · glusterfs

    heketi/heketi · RESTful based volume management framework for GlusterFS · #268 - 不兼容 alpine musl · Ceph · 基于对象 · 支持非结构化数据

  • juicefs
    笔记 · juicefs

    juicedata/juicefs · Apache-2.0, Go · 元数据 和 数据 分离 · distributed POSIX fs · metadata - Redis, Postgres, MySQL, SQLite3, badger, TiKV

  • MinIO
    笔记 · minio

    最后的 Apache-2.0 协议版本为 MinIO 6.7.4 · minio 是什么? · MinIO 全线产品 AGPL 协议 · 提供 S3 对象存储协议的服务 · 支持分布式高可用 · 支持用户、分组、策略、KMS · 支持 OpenID 和 LDAP

  • NextCloud
    笔记 · nextcloud

    Primary Storage · 可以使用 S3 或 Swift 作为主要存储 · lib/Files/ObjectStore · User Authentication with LDAP · The LDAP app is not compatible with the User backend using remote HTTP servers...

  • rclone
    笔记 · rclone

    rclone/rclone · https://rclone.org/ · 默认配置文件 · 不支持 watch #249 · minio 的 mc 支持 mirror - 双向 watch · - · 可以用 mount · 不支持 fs 属性同步 #1202

  • restic
    笔记 · restic/restic

    restic/restic · BSD-2, Go · fast, secure, efficient backup · Linux, macOS, Windows

  • rsync
    笔记 · rsync

    数据量大,有条件的情况下,尽量用 rclone,支持并发。 · 3.x GPLv2 -> GPLv3 · macOS 带的还是 rsync 2.x - GPLv2 · librsync · GNU LGPL v2.1 · kristapsdz/openrsync

  • S3
    笔记 · S3

    garage · MinIO · oxyno-zeta/s3-proxy · Apache-2.0, Go · Reverse Proxy with GET, PUT and DELETE methods and authentication

  • seaweedfs
    笔记 · seaweedfs

    默认构建的单 只支持 30G - 对分布式文件系统来说太小了 · weed 的 filer/s3 依赖 metadata - 维护 metadata db 增加复杂度,影响稳定性 · chrislusf/seaweedfs · Apache-2.0, Go

  • zsync
    笔记 · zsync

    rsync 算法 · 支持 http · 针对压缩文件进行优化

参考资料

GitHub39 条
Wikipedia1 条
其他外链3 条
最近更新commit 4b6e1d9编辑