golang,go,博客,开源,编程
MinIO 是一个高性能的分布式对象存储系统,兼容 Amazon S3 接口,适用于私有云、公有云和混合云环境。
项目地址:
🔗 GitHub:https://github.com/minio/minio
MinIO 是用 Go 语言编写 的开源对象存储服务,它遵循 S3 API 协议,因此可以与大量现有工具无缝对接。
MinIO 的目标是成为云原生时代的 “现代对象存储解决方案”,广泛应用于 Kubernetes、数据湖、AI/ML 存储等场景。
MinIO 完全兼容 Amazon S3 的 API,意味着你可以用 AWS 的 SDK 或工具(如 s3cmd
, rclone
, awscli
)直接对接 MinIO,无需修改业务逻辑。
支持横向扩展,节点越多,容量越大、性能越高。
官方提供 Operator,可用于自动部署和管理 MinIO 集群,支持持久卷、服务发现等。
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
./minio server /data
默认会在本地的 9000
端口启动服务,管理 UI 在 http://localhost:9001
。
默认账号密码:
export MINIO_ROOT_USER=minioadmin
export MINIO_ROOT_PASSWORD=minioadmin
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
./mc alias set local http://localhost:9000 minioadmin minioadmin
./mc mb local/mybucket
./mc cp test.jpg local/mybucket
使用 AWS SDK for Go 访问 MinIO:
import (
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/credentials"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/s3"
)
func main() {
sess := session.Must(session.NewSession(&aws.Config{
Region: aws.String("us-east-1"),
Endpoint: aws.String("http://localhost:9000"),
S3ForcePathStyle: aws.Bool(true),
Credentials: credentials.NewStaticCredentials("minioadmin", "minioadmin", ""),
}))
svc := s3.New(sess)
_, err := svc.CreateBucket(&s3.CreateBucketInput{
Bucket: aws.String("test-bucket"),
})
if err != nil {
panic(err)
}
}
名称 | 说明 |
---|---|
minio | 服务端组件,主程序 |
mc | 官方客户端工具,命令行风格类似 awscli |
minio-operator | Kubernetes Operator,自动部署和管理集群 |
MinIO 是一个 轻量、快速、云原生 的对象存储系统,S3 兼容性极强,非常适合需要私有部署对象存储的企业和开发者。尤其适用于 分布式部署、云原生环境、边缘计算 等场景。