### Ceph
优点
- 成熟
- 红帽继子,ceph创始人已经加入红帽
- 国内有所谓的ceph中国社区,私人机构,不活跃,文档有滞后,而且没有更新的迹象。
- 功能强大
- 支持数千节点
- 支持动态增加节点,自动平衡数据分布。
- 可配置性强,可针对不同场景进行调优
缺点
学习成本高,安装运维复杂。
### Minio
优点
- 学习成本低,安装运维简单,开箱即用
- 目前minio论坛推广给力,有问必答
- 有java客户端、js客户端
- 数据保护:分布式Minio采用 纠删码来防范多个节点宕机和位衰减bit rot。分布式Minio至少需要4个硬盘,使用分布式Minio自动引入了纠删码功能。
- 一致性:Minio在分布式和单机模式下,所有读写操作都严格遵守read-after-write一致性模型。
- 支持联盟模式扩展集群
缺点
- 不支持动态增加节点,minio创始人的设计理念就是动态增加节点太复杂,后续会采用其它方案来支持扩容。
### FastDFS
fastdfs是阿里余庆做的一个个人项目,在一些互联网创业公司中有应用,没有官网,不活跃,
Minio使用纠删码erasure code
和校验和checksum
来保护数据免受硬件故障和无声数据损坏。 即便丢失一半数量(N/2)的硬盘,仍然可以恢复数据。
纠删码是一种恢复丢失和损坏数据的数学算法,目前,纠删码技术在分布式存储系统中的应用主要有三类,阵列纠删码(Array Code: RAID5、RAID6等)、RS(Reed-Solomon)里德-所罗门类纠删码和LDPC(LowDensity Parity Check Code)低密度奇偶校验纠删码。Erasure Code是一种编码技术,它可以将n份原始数据,增加m份数据,并能通过n+m份中的任意n份数据,还原为原始数据。即如果有任意小于等于m份的数据失效,仍然能通过剩下的数据还原出来。
minio存储数据原理:https://blog.csdn.net/huangbaoling66/article/details/90179658
minio集群搭建:(centos7及以上版本)
生产环境建议最少4节点
节点 IP data
minio1 10.10.0.1 /data/minio/data
minio2 10.10.0.2 /data/minio/data
minio3 10.10.0.3 /data/minio/data
minio4 10.10.0.4 /data/minio/data
1、获取Minio
https://dl.min.io/server/minio/release/linux-amd64/minio
2、目录创建
启动脚本及二进制文件目录 run
数据存储目录 data
配置文件目录/etc/minio
mkdir -p /data/minio/{run,data} && mkdir -p /etc/minio
3、集群启动文件
vim /data/minio/run/run.sh
MINIO_ACCESS_KEY:用户名,长度最小是5个字符
MINIO_SECRET_KEY:密码,密码不能设置过于简单,不然minio会启动失败,长度最小是8个字符
–config-dir:指定集群配置文件目录
#!/bin/bash
export MINIO_ACCESS_KEY=Minio
export MINIO_SECRET_KEY=Test1234!
/data/minio/run/minio server --config-dir /etc/minio \
http://10.10.0.1/data/minio/data \
http://10.10.0.2/data/minio/data \
http://10.10.0.3/data/minio/data \
http://10.10.0.4/data/minio/data \
4、minio.service
WorkingDirectory:二进制文件目录
ExecStart:指定集群启动脚本
vim /usr/lib/systemd/system/minio.service
[Unit]
Description=Minio service
Documentation=https://docs.minio.io/
[Service]
WorkingDirectory=/data/minio/run/
ExecStart=/data/minio/run/run.sh
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
5、二进制文件
将minio二进制文件上传到/data/minio/run目录
6、权限修改
给所有涉及到的文件或目录添加权限
service文件
二进制文件
集群启动脚本
chmod +x /usr/lib/systemd/system/minio.service && chmod +x /data/minio/run/minio && chmod +x /data/minio/run/run.sh
7、启动集群
systemctl daemon-reload
systemctl enable minio && systemctl start minio
8、代理集群
生产环境需要使用Nginx将集群地址进行代理,对外统一入口
upstream minio{
server 10.10.0.1:9000;
server 10.10.0.2:9000;
server 10.10.0.3:9000;
server 10.10.0.4:9000;
}
server {
listen 9000;
server_name minio;
location / {
proxy_pass http://minio;
proxy_set_header Host $http_host;
client_max_body_size 1000m;
}
}
9、测试
浏览器访问minio集群代理地址+9000端口,用户名密码为上文中启动文件run.sh中我们设置的
mc命令安装教程:https://blog.csdn.net/qq_38461773/article/details/107534421