目錄
- 一、MinIO快速入門
- 1. MinIO簡介
- 2. CentOS7更換成阿里云鏡像
- 3. 安裝
- 3.1 下載
- 3.2 運行測驗
- 4. 配置腳本執行檔案
- 4.1 創建配置執行檔案
- 4.2 執行
- 二、分布式MinIO快速入門
- 1. 分布式MinIO快速入門
- 1.1 分布式Minio有什么好處?
- 1.2 資料保護
- 1.3 高可用
- 1.4 一致性
- 2. 配置運行分布式Minio
- 2.1 將access秘鑰和secret秘鑰export成環境變數
- 2.2 啟動分布式Minio實體
- 2.3 配置成啟動腳本
- 2.3.1 創建配置執行檔案
- 2.3.2 執行
- 1. 分布式MinIO快速入門
- 三、糾刪碼(erasure code)
- 1. 糾刪碼(erasure code)
- 1.1 什么是糾刪碼erasure code?
- 1.2 為什么糾刪碼有用?
- 1.3 什么是位衰減bit rot保護?
- 1. 糾刪碼(erasure code)
- 四、MinIO個人專案測驗
一、MinIO快速入門
1. MinIO簡介
MinIO 是一個基于Apache License v2.0開源協議的物件存盤服務,它兼容亞馬遜S3云存盤服務介面,非常適合于存盤大容量非結構化的資料,例如圖片、視頻、日志檔案、備份資料和容器/虛擬機鏡像等,而一個物件檔案可以是任意大小,從幾kb到最大5T不等,
MinIO 是一個基于Apache License MinIO是一個非常輕量的服務,可以很簡單的和其他應用的結合,類似 NodeJS, Redis 或者 MySQL,
2. CentOS7更換成阿里云鏡像
CentOS更換aliyun鏡像站
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 基于哈希的校驗和來防范位衰減,
四、MinIO個人專案測驗
- Gitee專案地址
- GitHub專案地址
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/278367.html
標籤:其他
