# 简介

# 存储类型

  • 块存储

    • :不管数据内容,只管提供一定容量的存储空间。
    • 比如硬盘等块设备。
  • 文件存储

    • :按目录树存储文件,每个文件通过唯一的路径寻址。
    • 主要用于存储非结构化数据,比如视频、图片,而结构化数据通常用数据库存储。
    • 比如 FTP、HTTP、NFS 等服务器。
  • 对象存储

    • :以 key-value 形式存储文件。
      • 用文件名作为 key ,知道了 key 就可以读取一个文件的内容。不使用目录树,这样可以避免路径寻址的耗时。
      • 用文件内容作为 value ,且分成多段存储,这样可以通过并行读写提高访问速度。不支持修改 value 。
    • Amazon S3(Simple Storage Service)是目前最流行的对象存储协议,允许用户通过 RESTful API 或 aws 命令访问对象存储服务器。
    • 对象存储是新一代的存储方案,介于块存储与文件存储之间,优点较多。但成本稍高。更适合远程存储文件的场景。

# 存储软件

  • Ceph :支持块存储、文件存储、对象存储。
    • 与 FTP、NFS 等存储软件相比,ceph 支持部署多实例、存储多副本,从而实现高可用。但运维复杂。
  • GlusterFS :用于文件存储。2011 年被红帽公司收购。
  • GoogleFS :用于文件存储。由 Google 公司开发,闭源。
  • HDFS :用于文件存储,借鉴了 GoogleFS 。
  • FastDFS :用于文件存储。
  • Swift :用于对象存储。
  • MinIO :用于对象存储。

# NFS

:网络文件系统(Network File System),一个用于共享文件系统的网络协议。

  • 1984 年由 Sun 公司发布。
  • 采用 C/S 架构。
    • 客户端需要通过 RPC 协议访问服务器的 UDP 111 端口,查询到 NFS 各项服务进程当前监听的端口,然后与其建立 TCP 连接。
    • 客户端可以挂载服务器上共享的文件系统,直接读写其中的文件,像读写本机文件一样方便。

# iSCSI

:因特网小型计算机系统接口(Internet Small Computer System Interface),一个用于共享存储设备的网络协议。

  • 2003 年由 IBM 公司发布。
  • 采用 C/S 架构,基于 TCP/IP 协议通信。
  • 比 NFS 更底层,可以将远程主机的存储设备(比如磁盘)挂载到本机。
    • 原理:将本机发出的 SCSI 命令,传输到远程主机上执行。