# 简介
# 存储类型
块存储
- :不管数据内容,只管提供一定容量的存储空间。
- 比如硬盘等块设备。
文件存储
- :按目录树存储文件,每个文件通过唯一的路径寻址。
- 主要用于存储非结构化数据,比如视频、图片,而结构化数据通常用数据库存储。
- 比如 FTP、HTTP、NFS 等服务器。
对象存储
- :以 key-value 形式存储文件。
- 用文件名作为 key ,知道了 key 就可以读取一个文件的内容。不使用目录树,这样可以避免路径寻址的耗时。
- 用文件内容作为 value ,且分成多段存储,这样可以通过并行读写提高访问速度。不支持修改 value 。
- Amazon S3(Simple Storage Service)是目前最流行的对象存储协议,允许用户通过 RESTful API 或 aws 命令访问对象存储服务器。
- 对象存储是新一代的存储方案,介于块存储与文件存储之间,优点较多。但成本稍高。更适合远程存储文件的场景。
- :以 key-value 形式存储文件。
# 存储软件
- 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 连接。
- 客户端可以挂载服务器上共享的文件系统,直接读写其中的文件,像读写本机文件一样方便。
- 部署流程如下,参考文档 https://documentation.ubuntu.com/server/how-to/networking/install-nfs (opens new window)
- 在一个主机上,部署 nfs 服务器。
- 安装:
apt install nfs-kernel-server systemctl start nfs-kernel-server
- 编辑
/etc/exports
文件,导出本机的目录,允许 nfs 客户端访问:然后执行/test *(rw,async,no_subtree_check,no_root_squash)
exportfs -a
让该配置文件生效。 - nfs 服务器默认监听 111、2049 等端口,执行命令
rpcinfo -p
可以查看。 - nfs 服务器默认没有密码认证,安全程度低。
- 用户可以添加防火墙规则,只允许被指定 IP 的 nfs 客户端访问。
- 用户可以添加 kerberos 认证。
- 安装:
- 在另一个主机上,部署 nfs 客户端。
- 安装:
apt install nfs-common
- 将 nfs 服务器的一个目录,挂载到本机:还可在
mount 10.0.0.1:/test /test
/etc/fstab
文件中加入以下配置,使得开机时自动挂载目录:10.0.0.1:/test /test nfs defaults 0 0
- 安装:
- nfs 服务器、客户端,都使用
/etc/nfs.conf
这个配置文件。
- 在一个主机上,部署 nfs 服务器。
# iSCSI
:因特网小型计算机系统接口(Internet Small Computer System Interface),一个用于共享存储设备的网络协议。
- 2003 年由 IBM 公司发布。
- 采用 C/S 架构,基于 TCP/IP 协议通信。
- 比 NFS 更底层,可以将远程主机的存储设备(比如磁盘)挂载到本机。
- 原理:将本机发出的 SCSI 命令,传输到远程主机上执行。