在2007年,GlusterFS演变为大型分布式存储方案后,任何配备合适硬件的公司,单位都可以利用个做分布式的流媒体,数据分析。在2011年,Red Hat收购了GlusterFS.
Minio是GlusterFS创始人之一Anand Babu Periasamy发布新的开源项目。Minio兼容Amason的S3分布式对象存储项目,采用Golang实现,客户端支持Java,Python,Javacript, Golang语言。
Minio 提供对象存储服务,兼容了 AWS S3 存储协议,用于非结构化的数据存。非结构化对象,比如图像,音、视频,日志文件,备份镜像…等等管理不方便,不定长,大小变化大、类型多,云端的访问复杂,minio就是来解决这种场景的。非结构化的文件从数KB到5TB都能很好的支持。开源并且用Go语言开发,有web操作界面,我们可以用它来搭建兼容S3协议的存储云服务。
Minio可以做为云存储的解决方案用来保存海量的图片,视频,文档。由于采用Golang实现,服务端可以工作在Windows,Linux, OS X和FreeBSD上。配置简单,基本是复制可执行程序,单行命令可以运行起来。
那么,如何自己搭建一个私有的S3存储云服务呢?
官方的话是推荐用Docker来搞,我们先用普通的二进制文件来直接解决了!
######################################################################################
# mkdir /data/aws_s3
# wget https://dl.minio.io/server/minio/release/linux-amd64/minio
# mv minio /usr/local/bin/
# chmod 755 /usr/local/bin/minio
# minio server /data/aws_s3
#############################################################
Created minio configuration file successfully at /root/.minio
Endpoint:http://10.5.10.89:9000 http://127.0.0.1:9000 http://172.17.0.1:9000
AccessKey: U3XLU4IMXY3IDKHU268F
SecretKey: /6NCL6HGacviaCgRqr2qLbVOjhkkJdRpV7wz0JJD
Region: us-east-1
SQS ARNs:
Browser Access:
http://10.5.10.89:9000 http://127.0.0.1:9000 http://172.17.0.1:9000
Command-line Access: https://docs.minio.io/docs/minio-client-quickstart-guide
################################################################
$ mc config host add myminio http://10.5.10.89:9000 U3XLU4IMXY3IDKHU268F /6NCL6HGacviaCgRqr2qLbVOjhkkJdRpV7wz0JJD
Object API (Amazon S3 compatible):
Go: https://docs.minio.io/docs/golang-client-quickstart-guide
Java: https://docs.minio.io/docs/java-client-quickstart-guide
Python: https://docs.minio.io/docs/python-client-quickstart-guide
JavaScript: https://docs.minio.io/docs/javascript-client-quickstart-guide
Drive Capacity: 8.3 GiB Free, 9.1 GiB Total
##############################################################
我们就成功启动了minio的s3服务,默认端口9000,可以通过网页访问:
注意:第一次打开时候需要填写AccessKey和SecretKey才能进入,我们上面启动服务的时候,已经看到屏幕有输出:
AccessKey: U3XLU4IMXY3IDKHU268F
SecretKey:6NCL6HGacviaCgRqr2qLbVOjhkkJdRpV7wz0JJD
把这两个Key填入,就能顺利进入,进入后展开页面如下:
这就是我们的S3云存储的管理页面了,看着是不是和七牛什么的提供云存储的产品页面挺像的,大家都是基于S3协议开发的!
上传个文件试试:
点击右下角的红色小加号按钮,弹出的菜单选择”create bucket”则会创建一个桶,输入名字”test”
点击刚才那个红色小加号按钮,这次选择”Upload file”上传文件,给这个桶上传了一个叫login.txt的文本文档
此时页面如下:
至此我们可以看到文件已经上传,要访问这个文件,可以点击文件右侧的三个点的按钮,选择分享就可以得到一个外链,在浏览器中访问这个外链就可以直接访问文件。
那么文件到底被存到哪里去了呢,我们启动命令中其实指定了工作路径/data/aws_s3/,所以到服务器这个目录下看看:
# ls /data/aws_s3/
test
# ls /data/aws_s3/test/
login.txt
桶名称test是一个目录,其下就有上传的login.txt文件。
如果想指定ip和端口,可以这样写:
# minio server /data/aws_s3 --address=0.0.0.0:9000
如果想让服务在后台运行:
# nohup minio server /data/aws_s3 --address=0.0.0.0:443 &
[1] 19882
// nohup: 忽略输入并把输出追加到启动命令的当前目录下的 "nohup.out"文件
minio可以用来搭建分布式存储系统 GlusterFS,这样就成了真正的云存储了,有时间再研究下把它从现在的单机测试,变成一朵存储云!
minio官网:https://minio.io
minio官方文档:https://docs.minio.io/docs/minio-docker-quickstart-guide
minio github主页:https://github.com/minio/minio