### 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中我們設置的