docker安装minio,和其基本使用

一.什么是分布式文件系统及拓展知识

分布式文件系统Distributed file system,DFS),或是网络文件系统(Network File System),是一种允许文件透过网络在多台主机上分享的文件系统,可让多机器上的多用户分享文件和存储空间。分布式文件系统解决的最大的问题是资源共享的问题,因此分布式文件系统最大的特点是多个客户端可以访问相同的服务端。

1.存储方式

块存储、文件存储、对象存储

1.1 块存储

就好比硬盘一样,直接挂在到主机, 一般用于主机的直接存储空间和数据库应用(MySQL)的存储

块存储(DAS/SAN)通常应用在某些专有的系统中,这类应用要求很高的随机读写性能和高可靠性,上面搭载的通常是 Oracle/DB2 这种传统数据库,连接通常是以 FC 光纤(8Gb/16Gb)为主,走光纤协议。如果要求稍低一些,也会出现基于千兆/万兆以太网的连接方式,MySQL 这种数据库就可能会使用 IP SAN,走 iSCSI 协议

通常使用块存储的都是系统而非用户,并发访问不会很多,经常出现一套存储只服务一个应用系统,例如如交易系统,计费系统。典型行业如金融,制造,能源,电信等

1.2 文件存储

文件存储(NAS)相对来说就更能兼顾多个应用和更多用户访问,同时提供方便的数据共享手段

在 PC 时代,数据共享也大多是用文件的形式,比如常见的的 FTP 服务,NFS 服务,Samba 共享这些都是属于典型的文件存储。几十个用户甚至上百用户的文件存储共享访问都可以用 NAS 存储加以解决

在中小企业市场,一两台 NAS 存储设备就能支撑整个 IT 部门了。CRM 系统,SCM 系统,OA 系统,邮件系统都可以使用 NAS 存储统统搞定。甚至在公有云发展的早几年,用户规模没有上来时,云存储的底层硬件也有用几套 NAS 存储设备就解决的,甚至云主机的镜像也有放在 NAS 存储上的例子

文件存储的广泛兼容性和易用性,是这类存储的突出特点,但是从性能上来看,相对 SAN 就要低一些。NAS 存储基本上是以太网访问模式,普通千兆网,走 NFS/CIFS 协议

1.3 对象存储

前面说到的块存储文件存储,基本上都还是在专有的局域网络内部使用,而对象存储的优势场景却是互联网或者公网,主要解决海量数据,海量并发访问的需求

基于互联网的应用才是对象存储的主要适配(当然这个条件同样适用于云计算,基于互联网的应用最容易迁移到云上),基本所有成熟的公有云都提供了对象存储产品,不管是国内还是国外

对象存储常见的适配应用如网盘、媒体娱乐,医疗 PACS,气象,归档等数据量超大而又相对 冷数据 和非在线处理的应用类型,这类应用单个数据大,总量也大,适合对象存储海量和易扩展的特点

网盘类应用也差不多,数据总量很大,另外还有并发访问量也大,支持 10 万级用户访问这种需求就值得单列一个项目了。归档类应用只是数据量大的 冷数据,并发访问的需求倒是不太突出

另外基于移动端的一些新兴应用也是适合的,智能手机和移动互联网普及的情况下,所谓 UGD(用户产生的数据,手机的照片视频)总量和用户数都是很大挑战。毕竟直接使用 HTTP get/put 就能直接实现数据存取,对移动应用来说还是有一定吸引力的

对象存储的访问通常是在互联网,走 HTTP 协议,性能方面,单独看一个连接的是不高的(还要解决掉线断点续传之类的可靠性问题),主要强大的地方是支持的并发数量,聚合起来的性能带宽就非常可观了

1.4 性能对比

  • 块存储就像超跑,根本不在意能不能多载几个人,要的就是极限速度和高速下的稳定性和可靠性,各大厂商出新产品都要去纽北赛道刷个单圈最快纪录,千方百计就为提高一两秒。块存储容量也不大,TB 这个数量级,支持的应用和适用的环境也比较专业(FC+Oracle),在乎的都是 IOPS 的性能值
  • 文件存储像集卡,普适各种场合,又能装数据(数百TB),而且兼容性好,只要你是文件,各种货物都能往里塞,在不超过性能载荷的前提下,能拉动常见的各种系统。标准 POXIS 接口,后车门打开就能装卸。卡车也不挑路,不像块存储非要上赛道才能开,普通的千兆公路就能畅通无阻。速度虽然没有块存储超跑那么块,但跑个 80/100 码还是稳稳当当
  • 对象存储就像海运货轮,应对的是"真·海量",几十上百 PB 的数据,以集装箱 /container(桶/bucket)为单位码得整整齐齐,里面装满各种对象数据,十万客户发的货(数据),一条船就都处理得过来,按照键值(KeyVaule)记得清清楚楚。海运速度慢是慢点,有时候遇到点网络风暴还不稳定,但支持断点续传,最终还是能安全送达的,对大宗货物尤其是非结构化数据,整体上来看是最快捷便利的

1.5 访问方式

  • 块存储通常都是通过光纤网络连接,服务器/小机上配置 FC 光纤 HBA 卡,通过光纤交换机连接存储(IP SAN 可以通过千兆以太网,以 iSCSI 客户端连接存储),主机端以逻辑卷(Volume)的方式访问。连接成功后,应用访问存储是按起始地址,偏移量 Offset 的方法来访问的
  • 文件存储通常只要是局域网内,千兆/百兆的以太网环境皆可。网线连上,服务器端通过操作系统内置的 NAS 客户端,如 NFS/CIFS/FTP 客户端挂载存储成为一个本地的文件夹后访问,只要符合 POXIS 标准,应用就可以用标准的 open,seek,write/read,close 这些方法对其访问操作
  • 对象存储不在乎网络,而且它的访问比较有特色,只能存取删(put/get/delete),不能打开修改存盘。只能取下来改好后上传,去覆盖原对象

2. 文件系统

开源分布式存储系统对比,还有很多其他,这里只列举这几款

存储系统 Ceph Swift HDFS FastDFS Ambry MinIO
开发语言 C++ Python Java C Java Go
开源协议 LGPL Apache Apache GPL3 Apache Apache
存储方式 对象/文件/块 对象 文件 文件/块 对象 对象
在线扩容 支持 支持 支持 支持 支持 -
冗余备份 支持 支持 支持 支持 支持 -
单点故障 不存在 不存在 存在 不存在 不存在 -
易用性 一般 一般 一般 简单 简单 简单
跨集群 不支持 - 不支持 部分支持 不支持 -
适用场景 大中小文件 大中小文件 大中文件 中小文件 大中小文件 大中小文件

对比了 Github 的 Star,MinIO 增长的很快,而且官方还有中文文档提供,中小企业使用不错

二. docker安装Minio

2.1 拉取Minio docker镜像

docker pull minio //这里我是拉取的最新的镜像

2.2 运行镜像

docker run  -p 9000:9000 -p 9090:9090 --name minio \
 -d --restart=always \
 -e MINIO_ACCESS_KEY=minio \
 -e MINIO_SECRET_KEY=minio@123 \
 -v /usr/local/minio/data:/data \
 -v /usr/local/minio/config:/root/.minio \
  minio/minio server /data  --console-address ":9000" --address ":9090"

9000是minio控制台端口

9090是api交互端口

三. JavaSDK使用

3.1 上传文件

minioClient = MinioClient.builder().endpoint(Url).credentials(AccessKey,SecretKey).build();
        // Make 'asiatrip' bucket if not exist.
        boolean found =
                minioClient.bucketExists(BucketExistsArgs.builder().bucket(Bucket).build());
        if (!found) {
            // Make a new bucket called 'asiatrip'.
            //minioClient.makeBucket(MakeBucketArgs.builder().bucket("asiatrip").build());
            System.out.println("不存在!!!");
        } else {
            System.out.println("Bucket already exists.");
        }

        // Upload '/home/user/Photos/asiaphotos.zip' as object name 'asiaphotos-2015.zip' to bucket
        // 'asiatrip'.
        minioClient.uploadObject(
                UploadObjectArgs.builder()
                        .bucket(Bucket)
                        .object("笔记.zip")
                        .filename("/Users/woods/candaoCodes/woodsTest/src/main/resources/笔记.zip")
                        .build());

3.2 下载文件

minioClient = MinioClient.builder().endpoint(Url).credentials(AccessKey,SecretKey).build();
        String presignedObjectUrl = minioClient.getPresignedObjectUrl(
                GetPresignedObjectUrlArgs.builder()
                        .method(Method.GET)
                        .bucket(Bucket)
                        .object("笔记.zip")
                        .expiry(10000)
                        .build());
        System.out.println(presignedObjectUrl); //下载链接
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,976评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,249评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,449评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,433评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,460评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,132评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,721评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,641评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,180评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,267评论 3 339
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,408评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,076评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,767评论 3 332
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,255评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,386评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,764评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,413评论 2 358

推荐阅读更多精彩内容