

minio对象存储简介
source link: https://www.maideliang.com/index.php/archives/22/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

minio简介
Minio是GlusterFS创始人之一Anand Babu Periasamy发布新的开源项目。Minio兼容Amason的S3分布式对象存储项目,采用Golang实现,客户端支持Java,Python,Javacript, Golang语言。
Minio服务端可以工作在Windows,Linux, OS X和FreeBSD上。配置简单,基本是复制可执行程序,单行命令可以运行起来.
minio server安装
Minio 基于 golang 开发,所以编译后只有一个可执行文件,启动一个 Minio 服务器极其简单,只需要使用 server 参数,并附带一个或多个存储目录即可
# 下载 Minio
wget https://dl.minio.io/server/minio/release/linux-amd64/minio
# 赋予可执行权限
chmod +x minio
# 创建一个目录用于存放 minio 文件
mkdir -p /data
# 以后台方式启动一个 minio 服务器
nohup ./minio server /data &
启动后minio 默认监听所有网卡的 9000 端口,此时直接访问 http://ip:9000 即可查看 web ui 界面。
minio使用
minio官网提供了非常详细的客户端和各个语言的jdk的使用方法和例子,以客户端使用为例,minio的客户端为minio client,简称mc,使用方法和AWS CLI非常相似,也很简单。
- 客户端安装
chmod +x mc
./mc --help
- 添加server的秘钥信息,可以接入aws s3、Google Cloud Storage、和minio server,以minio server为例
mc config host add <ALIAS> <YOUR-S3-ENDPOINT> <YOUR-ACCESS-KEY> <YOUR-SECRET-KEY> <API-SIGNATURE>
- 进行bucket和对象的操作,支持的操作有
$ ./mc --help
NAME:
mc - Minio Client for cloud storage and filesystems.
USAGE:
mc [FLAGS] COMMAND [COMMAND FLAGS | -h] [ARGUMENTS...]
COMMANDS:
ls List files and folders.
mb Make a bucket or a folder.
cat Display file and object contents.
pipe Redirect STDIN to an object or file or STDOUT.
share Generate URL for sharing.
cp Copy files and objects.
mirror Mirror buckets and folders.
find Search for files and objects.
stat Stat contents of objects and folders.
diff List objects with size difference or missing between two folders or buckets.
rm Remove files and objects.
events Manage object notifications.
watch Watch for file and object events.
policy Manage anonymous access to objects.
admin Manage Minio servers
session Manage saved sessions for cp command.
config Manage mc configuration file.
update Check for a new software update.
version Print version info.
GLOBAL FLAGS:
--config-folder value, -C value Path to configuration folder. (default: "/home/apps/.mc")
--quiet, -q Disable progress bar display.
--no-color Disable color theme.
--json Enable JSON formatted output.
--debug Enable debug output.
--insecure Disable SSL certificate verification.
--help, -h Show help.
VERSION:
2018-01-18T21:18:56Z
上传:
./mc cp /local/file minioserver/bucket
下载:
./mc cp minioserver/bucket/object /local/file
minio优化
摘自官网。
调优网络参数
以下网络参数设置可帮助确保Minio服务器在生产环境负载上的最佳性能。
- tcp_fin_timeout : 一个socket连接大约需要1.5KB的内存,关闭未使用的socket连接可以减少内存占用,避免出现内存泄露。即使另一方由于某种原因没有关闭socket连接,系统本身也会在到达超时时间时断开连接。 tcp_fin_timeout参数定义了内核保持sockets在FIN-WAIT-2状态的超时时间。我们建议设成20,你可以按下面的示例进行设置。
sysctl -w net.ipv4.tcp_fin_timeout=30 - tcp_keepalive_probes : 这个参数定义了经过几次无回应的探测之后,认为连接断开了。你可以按下面的示例进行设置。
sysctl -w net.ipv4.tcp_keepalive_probes=5 - wmem_max: 这个参数定义了针对所有类型的连接,操作系统的最大发送buffer大小。
sysctl -w net.core.wmem_max=540000 - rmem_max: 这个参数定义了针对所有类型的连接,操作系统最大接收buffer大小。
sysctl -w net.core.rmem_max=540000
调优虚拟内存
下面是推荐的虚拟内存设置。
- swappiness : 此参数控制了交换运行时内存的相对权重,而不是从page缓存中删除page。取值范围是[0,100],我们建议设成10。
sysctl -w vm.swappiness=10 - dirty_background_ratio: 这个是脏页可以占系统内存的百分比,内存页仍需要写到磁盘上。我们建议要尽早将数据写到磁盘上,越早越好。为了达到这个目的,将 dirty_background_ratio 设成1。
sysctl -w vm.dirty_background_ratio=1 - dirty_ratio: 这定义了在所有事务必须提交到磁盘之前,可以用脏页填充的系统内存的绝对最大数量。
sysctl -w vm.dirty_ratio=5
调优调度程序
正确的调度程序配置确保Minio进程获得足够的CPU时间。 以下是推荐的调度程序设置。
- sched_min_granularity_ns: 此参数定义了一个任务在被其它任务抢占时,可在CPU一次运行的最短时间,我们建议设成10ms。
sysctl -w kernel.sched_min_granularity_ns=10000000 - sched_wakeup_granularity_ns: 降低该参数值可以减少唤醒延迟,提高吞吐量。
sysctl -w kernel.sched_wakeup_granularity_ns=15000000
Amazon S3 api接口
Amazon S3,也叫AWS S3全称是:Amazon Simple Storage Service。官网有详细的文档介绍。
Amazon S3 是专为从任意位置存储和检索任意数量的数据而构建的对象存储,我们可以通过程序对文件进行上传、下载、删除、遍历等操作。
Amazon S3的操作包括三部分:Service,Buckets和Objects。Service只包括GET操作,就是返回所有的Buckets的列表。Object顾名思义,是指存储的文件,值得注意的是,S3中并没有明确的文件夹的概念,而是通过指定object的路径来实现,比如说,object可以为“photos/1.jpg”。而Bucket拥有全局名,名称由用户定义,用来存放Object,由于是全局名,所以要确保名字是别人没用过的。
将aws s3和我们熟悉的ftp大致对比下比较容易理解:
访问Web服务时,Http request headers可能需要一些参数。主要包括:
- Date:当前UTC时间,形式为“ Wed, 01 Mar 2009 12:00:00 GMT ”。
- Content-Length: 当对Object进行操作的时候,返回内容的长度,注意不要包括headers中的内容。
- Content-MD5:用base64编码文件内容的MD5值。
- Content-Type:资源的类型,比如:text/plain。
- Host:Get Service时为“ s3.amazonaws.com ”。在对bucket和object进行操作时,例如bucket的名字是“bucketname”,那么Host就是“bucketname.s3.amazonaws.com”。
- Authorization:这个是最重要的,主要作用是签名,Amazon根据的请求计算出一个签名值和这里计算的签名值进行比对,只有相同时,访问才是合法的。
例如,使用我们熟悉的curl来进行操作:
- 创建bucket
curl -v -X PUT "http://${bucket}.s3.mydomain.com" \
-H "Host: ${bucket}.s3.mydomain.com" \
-H "Date: ${dateValue}"\
-H "Authorization: AWS ${s3Key}:${signature}"
- 上传对象到bucket
curl -X PUT -T "${file}" \
-H "Host: ${bucket}.${url}" \
-H "Date: ${dateValue}" \
-H "Content-Type: ${contentType}" \
-H "Authorization: AWS ${s3Key}:${signature}" "http://${bucket}.${url}/${objname}"
curl -o ${file} -X GET \
-H "Host: ${bucket}.${url}" \
-H "Date: ${dateValue}" \
-H "Content-Type: ${contentType}" \
-H "Authorization: AWS ${s3Key}:${signature}" "http://${bucket}.${url}/${objname}"
Recommend
-
33
在数据库中存的就是一张张有着千丝万缕关系的表,所以表设计的好坏,将直接影响着整个数据库。而在设计表的时候,我们都会关注一个问题,使用什么存储引擎。等一下,存储引擎?什么是存储引擎? 什么是存储引擎? MyS...
-
19
在后端开发中,存储是工作的常见部分。应用程序数据存储在数据库中,文件存储在对象存储中,瞬态数据存储在高速缓存中……似乎存在无...
-
50
MinIO存储桶通知指南 可以使用存储桶事件通知来监视存储桶中对象上发生的事件。 MinIO服务器支持的事件类型是 Supported Event Types s3:ObjectCreated:Put s3:ObjectCreated:CompleteMultipartUpload
-
10
什么是MinIO ?根据官方定义: MinIO 是在 Apache License v2.0 下发布的对象存储服务器。 它与 Amazon S3 云存储服务兼容。 它最适合存储非结构化数据,如照片,视频,日志文件,备份和容器/ VM 映像。 对象的大小可以从几 KB 到最大 5TB...
-
20
纠删码的原理介绍可以参考:https://www.jianshu.com/p/4abf65ad03af 一般上我们如果要保证数据高可用,主流的有两种策略: 副本(Replication)策略: 副本,实打实的...
-
7
by zhangxinxu from https://www.zhangxinxu.com 本文地址:https://www.zhangxinxu.com/wordpress/?p=16...
-
7
Open edX跟S3有许多整合,包括日志的存储,成绩单的存储,静态文件的存储和加速等,当然需要开启才被采用.亚马逊的服务真是业界标杆式的存在,一旦用过,便曾经沧海。 可惜我们与S3无缘。 后来想做edxapp负载均衡的时候,又想到这个问题,edxapp是有状...
-
8
contos7使用s3fs挂载minio对象存储实践 精选 原创 主机可以访问到对象存储API、例如...
-
3
js tutorial javascript对象简介 在JavaScript对象的属性是无序的集合。每个键值对称为一个属性 ...
-
7
Minio简介 Minio 是一个开源的对象存储服务器。对象存储服务(Object Storage Service,OSS)是一种海量、安全、低成本、高可靠的云存储服务,适合存放任意类型的文件。容量和处理能力弹性扩展,多种存储类型供选择,全面优化存储成本。它是对 Amazon S3 云...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK