一、MinIO快速入門
1. MinIO簡介
MinIO 是一個基於Apache License v2.0開源協議的物件儲存服務。它相容亞馬遜S3雲端儲存服務介面,非常適合於儲存大容量非結構化的資料,例如圖片、視訊、日誌檔案、備份資料和容器/虛擬機器映象等,而一個物件檔案可以是任意大小,從幾kb到最大5T不等。
MinIO 是一個基於Apache License MinIO是一個非常輕量的服務,可以很簡單的和其他應用的結合,類似 NodeJS, Redis 或者 MySQL。
2. CentOS7更換成阿里雲映象
https://www.cnblogs.com/lishen2021/p/14680564.html
3. 安裝
3.1 下載
下載:
wget https://dl.min.io/server/minio/release/linux-amd64/minio
3.2 執行測試
修改檔案執行許可權:
chmod +x minio
執行:
MINIO_ACCESS_KEY=minioadmin MINIO_SECRET_KEY=minioadmin ./minio server /data/minio/standalone
安裝啟動後使用瀏覽器訪問http://ip:port,預設埠為:9000,如果可以訪問,則表示minio已經安裝成功。賬號和密碼分別為:MINIO_ACCESS_KEY、MINIO_SECRET_KEY
4. 配置指令碼執行檔案
4.1 建立配置執行檔案
建立可執行檔案 minio.sh
touch minio.sh
新增以下指令碼內容:
#!/bin/sh
function start() {
export MINIO_ACCESS_KEY=minioadmin
export MINIO_SECRET_KEY=2020_minio@admin
nohup /home/minio/minio server /home/minio/data > /home/minio/logs/minio.log 2>&1 &
}
NUM=`ps -C "minio" --no-header | wc -l`
ID=$(ps -ef | grep "minio" | grep -v "grep" | grep -v "sh" | awk '{print $2}')
#if [ "start" = $1 ]; then
# if [ 0 -eq $NUM ]; then
# start
# fi
#elif [ "restart" = $1 ]; then
# if [ 0 -ne $NUM ]; then
# kill -9 $ID | start
# else
# start
# fi
#elif [ "stop" = $1 ]; then
# if [ 0 -ne $NUM ]; then
# kill -9 $ID
# fi
#else
# echo "No sush command '$1'"
#fi
case $1 in
"start")
if [ 0 -eq $NUM ]; then
start
fi
;;
"restart")
if [ 0 -ne $NUM ]; then
kill -9 $ID | start
else
start
fi
;;
"stop")
if [ 0 -ne $NUM ]; then
kill -9 $ID
fi
;;
*)
echo "No sush command '$1'"
;;
esac
指令碼中使用 if 或 case 都可以
4.2 執行
啟動:
sh minio.sh start
輸出執行資訊方式啟動:
sh -x minio.sh start
重啟:
sh minio.sh restart
停止服務:
sh minio.sh stop
二、分散式MinIO快速入門
1. 分散式MinIO快速入門
分散式Minio可以讓你將多塊硬碟(甚至在不同的機器上)組成一個物件儲存服務。由於硬碟分佈在不同的節點上,分散式Minio避免了單點故障。
1.1 分散式Minio有什麼好處?
在大資料領域,通常的設計理念都是無中心和分散式。Minio分散式模式可以幫助你搭建一個高可用的物件儲存服務,你可以使用這些儲存裝置,而不用考慮其真實物理位置。
1.2 資料保護
分散式Minio採用 糾刪碼 來防範多個節點當機和位衰減bit rot。分散式Minio至少需要4個硬碟,使用分散式Minio自動引入了糾刪碼功能。
1.3 高可用
單機Minio服務存在單點故障,相反,如果是一個有N塊硬碟的分散式Minio,只要有N/2硬碟線上,你的資料就是安全的。不過你需要至少有N/2+1個硬碟來建立新的物件。
例如,一個16節點的Minio叢集,每個節點16塊硬碟,就算8臺伺服器當機,這個叢集仍然是可讀的,不過你需要9臺伺服器才能寫資料。
注意:只要遵守分散式Minio的限制,你可以組合不同的節點和每個節點幾塊硬碟。比如,你可以使用2個節點,每個節點4塊硬碟,也可以使用4個節點,每個節點兩塊硬碟,諸如此類。
1.4 一致性
Minio在分散式和單機模式下,所有讀寫操作都嚴格遵守read-after-write一致性模型。
2. 配置執行分散式Minio
啟動一個分散式Minio例項,你只需要把硬碟位置做為引數傳給minio server命令即可,然後,你需要在所有其它節點執行同樣的命令。
注意:
1. 分散式Minio裡所有的節點需要有同樣的access祕鑰和secret祕鑰,這樣這些節點才能建立聯接。為了實現這個,你需要在執行minio server命令之前,先將access祕鑰和secret祕鑰export成環境變數。
2. 分散式Minio使用的磁碟裡必須是乾淨的,裡面沒有資料。
3. 分散式Minio裡的節點時間差不能超過3秒,你可以使用NTP來保證時間一致。
2.1 將access祕鑰和secret祕鑰export成環境變數
注:需要在每個節點上都執行
export MINIO_ACCESS_KEY=minioadmin
export MINIO_SECRET_KEY=minioadmin
2.2 啟動分散式Minio例項
配置:2個節點,每個節點2塊盤。
執行命令:
./minio server http://192.168.199.140/data/minio/export1 http://192.168.199.140/data/minio/export2 http://192.168.199.141/data/minio/export1 http://192.168.199.141/data/minio/export2
注:需要在兩個節點上都執行
2.3 配置成啟動指令碼
2.3.1 建立配置執行檔案
建立可執行檔案 minio-cluster.sh
touch minio-cluster.sh
新增內容如下:
#!/bin/sh
export MINIO_ACCESS_KEY=minioadmin
export MINIO_SECRET_KEY=minioadmin
#nohup /opt/minio/minio server http://192.168.199.140/data/minio/export1 \
# http://192.168.199.140/data/minio/export2 \
# http://192.168.199.141/data/minio/export1 \
# http://192.168.199.141/data/minio/export2 \
# > /dev/null 2>&1 &
nohup /opt/minio/minio server http://192.168.199.140/data/minio/export1 \
http://192.168.199.140/data/minio/export2 \
http://192.168.199.141/data/minio/export1 \
http://192.168.199.141/data/minio/export2 \
> /opt/minio/minio.log 2>&1 &
2.3.2 執行
啟動:
sh minio-cluster.sh
輸出執行資訊方式啟動:
sh -x minio-cluster.sh
三、糾刪碼(erasure code)
Minio使用糾刪碼erasure code和校驗和checksum來保護資料免受硬體故障和無聲資料損壞。 即便您丟失一半數量(N/2)的硬碟,您仍然可以恢復資料。
1. 糾刪碼(erasure code)
1.1 什麼是糾刪碼erasure code?
糾刪碼是一種恢復丟失和損壞資料的數學演算法, Minio採用Reed-Solomon code將物件拆分成N/2資料和N/2 奇偶校驗塊。 這就意味著如果是12塊盤,一個物件會被分成6個資料塊、6個奇偶校驗塊,你可以丟失任意6塊盤(不管其是存放的資料塊還是奇偶校驗塊),你仍可以從剩下的盤中的資料進行恢復,是不是很NB,感興趣的同學請翻牆google。
1.2 為什麼糾刪碼有用?
糾刪碼的工作原理和RAID或者複製不同,像RAID6可以在損失兩塊盤的情況下不丟資料,而Minio糾刪碼可以在丟失一半的盤的情況下,仍可以保證資料安全。 而且Minio糾刪碼是作用在物件級別,可以一次恢復一個物件,而RAID是作用在卷級別,資料恢復時間很長。 Minio對每個物件單獨編碼,儲存服務一經部署,通常情況下是不需要更換硬碟或者修復。Minio糾刪碼的設計目標是為了效能和儘可能的使用硬體加速。
1.3 什麼是位衰減bit rot保護?
位衰減又被稱為資料腐化Data Rot、無聲資料損壞Silent Data Corruption,是目前硬碟資料的一種嚴重資料丟失問題。硬碟上的資料可能會神不知鬼不覺就損壞了,也沒有什麼錯誤日誌。正所謂明槍易躲,暗箭難防,這種背地裡犯的錯比硬碟直接咔咔宕了還危險。 不過不用怕,Minio糾刪碼採用了高速 HighwayHash 基於雜湊的校驗和來防範位衰減。