儲存—物件儲存_Minio

辰令發表於2024-07-15

Minio

Minio 是 GlusterFS
  採用 Golang 實現,客戶端支援 Java,Python,Javacript, Golang 語言
  docker pull minio/minio
  MinIO使用鍵值對(Key-Value)的資料模型,適用於非結構化資料

Minio安裝

1.下載映象:  docker pull minio/minio
2.構建容器
 docker run -d  \
   --name minio \
   -p 9000:9000 \
   -p 9001:9001 \
   --restart=always \
   -v /opt/minio/data:/data \
   -v /opt/minio/config:/root/.minio \
   -e "MINIO_ROOT_USER=myminioadmin" \
   -e "MINIO_ROOT_PASSWORD=myminioadmin" \
   minio/minio:RELEASE.2022-01-04T07-41-07Z \
   server /data \
   --console-address ":9001"
Console和API兩個服務的埠。在需要在啟動命令中對映兩個埠,然後指定哪個埠做哪項服務
    一個用來存放配置,一個用來儲存上傳檔案的目錄
埠對映,前一個是伺服器的埠, API 透過API進行訪問
          後一個是客戶端 console-address  WebUI
		  
   啟動MinIO伺服器的命令如下:
       ./minio server ./data		  

使用

 MinIO 控制檯
    http://<你的IP地址>:9001
 Minio命令列工具:Minio官方提供的命令列工具,可以在終端中直接進行Minio管理操作,
     如列出儲存桶、上傳檔案等。該工具對於快速測試和部署非常有用	
	 MinIO伺服器 (minio) 和 MinIO命令列介面 CLI (mc) 
  命令列 mc 
 Minio Python SDK:Minio官方提供的Python SDK,基於Python的requests庫構建,提供了類似Java SDK的功能,方便Python開發者使用。
	  
###訪問
   MinIO支援兩種訪問方式

核心概念

  MinIO部署由一組儲存和計算資源組成,執行一個或多個 minio server 節點
        minio server 命令用於啟動 MinIO 伺服器程序
		
   MinIO使用 Prometheus 資料模型 釋出叢集和節點指標
  日誌記錄 MinIO將所有 minio server 操作釋出到系統控制檯。 MinIO還支援將伺服器日誌和稽核日誌釋出到HTTP Webhook
	
 應用-邏輯概念
   MinIO 物件儲存使用 buckets 來組織物件 
         MinIO 使用 / 作為分隔符自動從完整物件路徑推斷出中間字首	   
		 
分段上傳		 

許可權控制策略

1.Identity
 使用者和使用者組
   許可權控制策略,允許管理員和開發者精確地管理
   不同使用者或使用者組對儲存桶及其中物件的訪問許可權
   Identity--Users-Groups——OpenID以及LDAP
     Minio提供了幾種預定義的IAM(Identity and Access Management)策略
    策略以JSON格式編寫,
	  包含一組宣告(Statements),每個宣告定義了哪些主體(Principal)、
	  在什麼條件下(Condition)、對哪些資源(Resource)擁有何種許可權(Action
2.Buckets
  可以為每個儲存桶設定獨立的訪問策略,控制誰可以訪問儲存桶以及他們可以進行哪些操作。Bucket策略透過JSON文件定義
    retention:保留是指在一段時間內防止物件刪除的規則。為了設定桶保留策略,必須啟用版本控制
	quota:配額用於限制桶內的資料量
	Access Poilcy:一共有三個值,private,public,custom。私有代表需要透過驗籤且生成的url只有7天有效期
	Encyption: 就是配置是否加密。
3.Policies
       readonly writeonly  readwrite  diagnostics consoleAdmin		   
    策略中常見的元素包括Action(允許的操作)、Effect(允許或拒絕)、Resource(目標資源)、Principal(執行者)
	
4.外部身份
     OpenID Connect (OIDC) 相容的 IDentity Provider (IDP)(例如 Okta、KeyCloak、Dex、Google 或 Facebook)對使用者身份進行外部管理	

監控Monitoring

管理部署的Minio
 透過檢視指標儀表板、伺服器或
         審計日誌、跟蹤歷史、S3事件或驅動器健康, 監控部署的Minio活動和健康狀況。
 透過新增或管理一個 通知目標 來配置警報

1.日誌和指標
   metrics 指標
   logs   日誌
   audit  審計
   trace  追蹤 部分提供了 HTTP 跟蹤功能
   watch 監控部分顯示了所選儲存桶上發生的 S3 事件。 這一部分提供了與 mc watch 類似的功能
   Tiering 分成(物件生命週期管理) 部分提供了一個用於新增和管理 遠端層 的介面,以支援生命週期管理轉換規則。
      	   MinIO的分層支援將物件從部署移動到遠端儲存,但不支援自動將它們恢復到部署
		    對於物件過渡, MinIO 自動將物件移動到配置好的遠端儲存層。 
			對於物件到期, MinIO 會自動刪除該物件
2.event Notifications 
     MinIO 儲存通知允許管理員將通知傳送到 支援特定物件或儲存桶事件的外部服		
	 minio支援桶事件通知機制
	  Event事件 部分提供了一個介面,用於檢視、新增或刪除 事件通知 目標
	  
3.Site Replocation 站點複製 部分提供了一個介面,用於新增和管理部署的 站點複製 配置

 encryption  加密

 Configuration 部分提供了一個介面,用於檢視和檢索部署中所有 MinIO 伺服器 配置設定

概念

 IDP  IDentity Provider		  
 Active Directory或LDAP (AD/LDAP)服務進行使用者身份的外部管理。
  配置外部身份提供程式(IDP)啟用單點登入(SSO)工作流,其中應用程式之前根據外部IDP進行身份驗證accessing Minlo。M	  
   OpenID Connect (OIDC) 相容的 IDentity Provider (IDP)(例如 Okta、KeyCloak、Dex、Google 或 Facebook)對使用者身份進行外部管理

 Daily Health report and Live Error logs
 Profile: cpu men block  mutex goroutines

命令列使用

 Minio 服務

    # 舉例:mc config host add minio2022 http://127.0.0.1:9000 IUKxxxfcc 5D0YvqFb6o5QIoasfdfdf --api s3v4
       mc config host add 伺服器名稱 endpoint地址 accesskey secretkey KEY

 mc.exe config host add myminio http://127.0.0.1:9000 ACCESS_KEY SECRET_KEY

  myminio是你給起的連線名
    ACCESS_KEY SECRET_KEY是在上面瀏覽器中下載的credentials.json檔案中的金鑰
	
  mc ls 伺服器名稱
    mc ls myminio

實際使用中問題

1.預設情況下,MinIO 自帶一套帳號管理體系,不需要任何配置,但缺點是一旦服務重啟則帳號資訊丟失。
  為了持久化儲存帳號資料,需要配合 Etcd 服務。

2.後設資料與資料一起存放在磁碟上:資料部分糾刪分片以後儲存在磁碟上,後設資料以明文形式存放在後設資料檔案裡(xl.json)
   MinIO物件儲存系統 無 後設資料資料庫,所有的操作都是物件級別的粒度的

3.簡單部署方式和糾刪碼部署方式


4.每個磁碟上,MinIO會建立一個`.minio.sys`資料夾,用於儲存後設資料和狀態資訊。當然,你也可以透過配置檔案來指定資料儲存的路
    .minio.sys/config/config.json
   
  客戶端--   ~/.mc資料夾下

參考

 https://www.minio.org.cn/docs/minio/linux/administration/minio-console.html
 https://www.minio.org.cn/docs/minio/linux/reference/minio-mc.html
 https://minio.org.cn/docs/minio/kubernetes/upstream/administration/console/managing-deployment.html	 
 Minio控制檯詳細教程 https://blog.csdn.net/qq_45374325/article/details/129350475
 https://minio.org.cn/docs/minio/linux/reference/minio-mc.html

相關文章