若何对待minio跑分性能超越HDFS?
云和平安办理办事专家新钛云服 祝祥原创
OpenStack Glance是一种供给发现、注册、和下载的镜像办事,也能够理解成是一个供给虚拟机镜像的集中式仓库。通过Glance的RESTful API,能够查询镜像元数据下载镜像。
虚拟机的镜像能够很便利的存储在各类处所,从简单的文件系统到对象存储系统(如OpenStack Swift项目)。在Glane里镜像被当做模板来存储,用于启动新实例。
Glance是一个能够组织和办理大量虚拟磁盘镜像的独立办事。Glance为云磁盘镜像供给了一个端到端的处理计划。它还能够从正在运行的实例成立快照用于备份虚拟机的形态。
凡是情况下,我们会利用 NFS,Ceph,File 等做 为 Glance 映像和 Cinder 卷供给共享存储,有时候我们以至会操纵 iSCSI 的 Cinder 驱动法式。总而言之,那是一个遍及的设置装备摆设体例,能够用来测试 OpenStack 功用。
我们比来发现了 Minio,Minio 是一个基于 Apache License v2.0 开源协议的对象存储办事。它兼容亚马逊 S3 云存储办事接口,十分合适于存储大容量非构造化的数据,例如图片、视频、日记文件、备份数据和容器/虚拟机镜像等,而一个对象文件能够是肆意大小,从几 kb 到更大 5T 不等。
Minio 可与 Docker 一路安拆,因而我们决定在 Glance 中测试 OpenStack从头引入的对 S3 后端的撑持。以至,我们也会利用它来做为 Cinder 的卷备份。
设置装备摆设 Minio为了在我们的情况中通过 Docker 安拆 Minio。
安拆后,只需起码的设置装备摆设即可与 Glance 以及 Cinder 一路利用。你需要如下设置装备摆设:
· 具有 r/w 权限的用户
· 定义的区域
Docker 安拆 Minio 仅需要一个号令:
docker run -p 9000:9000 -p 8800:8000--name minio --restart=always \ -e "MINIO_ACCESS_KEY=admin" \ -e "MINIO_SECRET_KEY=admin12345" \ -v /mydata/minio/data:/data \ -v /mydata/minio/config:/root/.minio \ minio/minio server /data要创建用户,请导航到用户->创建用户并供给拜候密钥和奥秘密钥以及恰当的权限:
ACCESS_KEY: admin SECRET_KEY: admin123456 POLICY: readwrite要定义区域,请导航至设置->区域并在办事器位置字段中设置区域名称。
MinIO Client (mc)为ls,cat,cp,mirror,diff,find等UNIX号令供给了一种替代计划。它撑持文件系统和兼容Amazon S3的云存储办事(AWS Signature v2和v4)。
ls 列出文件和文件夹。 mb 创建一个存储桶或一个文件夹。 cat 显示文件和对象内容。 pipe 将一个STDIN重定向到一个对象或者文件或者STDOUT。 share 生成用于共享的URL。 cp 拷贝文件和对象。 mirror 给存储桶和文件夹做镜像。 find 基于参数查找文件。 diff 对两个文件夹或者存储桶比力差别。 rm 删除文件和对象。 events 办理对象通知。 watch 监听文件和对象的事务。 policy 办理拜候战略。 session 为cp号令办理保留的会话。 config 办理mc设置装备摆设文件。 update 查抄软件更新。 version 输出书本信息。下载安拆
wget https://dl.min.io/client/mc/release/linux-amd64/mc chmod +x mc ./mc --help 设置装备摆设 Glance 利用 Minio若是通过 OpenStack-Ansible 停止安拆的话,那么有些设置装备摆设需要变动,修改 playbook 设置装备摆设 Glance 的后端。利用glance_additional_stores变量,留意必需确保同时还指定了其他默认值(因为是附加变量,而不是完全笼盖)。
下面的name能够是肆意的,本处利用minio,用来指定 Minio 存储,同时type是指定后端存储的类型,本处利用 s3 。
glance_additional_stores: - http - cinder - name: minio type: s3除了glance_additional_stores,您还必需定义一个映射到新后端定义的新设置装备摆设块。关于 OpenStack-Ansible,那能够做为设置装备摆设笼盖来完成:
glance_glance_api_conf_overrides: minio: s3_store_host: http://10.100.100.110:9000 s3_store_access_key: admin s3_store_secret_key: admin123456 s3_store_bucket: glance s3_store_create_bucket_on_put: True s3_store_bucket_url_format: auto在glance-api.conf中,完好的设置装备摆设信息如下:
[minio] s3_store_host = http://10.100.100.110:9000 s3_store_access_key = admin s3_store_secret_key = admin123456 s3_store_bucket = glance110 s3_store_create_bucket_on_put = True s3_store_bucket_url_format = auto若是利用的是 Kolla 停止 Openstack 的安拆,则创建如下
/etc/kolla/config/glance/glance-api.conf设置装备摆设文件,停止笼盖: [DEFAULT] enabled_backends = file:file, http:http, cinder:cinder, minio:s3 [glance_store] default_backend = minio [minio] s3_store_host = http://10.100.100.110:9000 s3_store_access_key = admin s3_store_secret_key = admin123456 s3_store_bucket = glance110 s3_store_create_bucket_on_put = True s3_store_bucket_url_format = auto 设置装备摆设 Cinder-backup 利用 Minio若是利用的是 Kolla 停止 Openstack 的安拆,则创建如下
/etc/kolla/config/cinder/cinder-backup.conf设置装备摆设文件,停止笼盖: [DEFAULT] backup_driver = cinder.backup.drivers.s3.S3BackupDriver backup_s3_endpoint_url = http://10.100.100.110:9000 backup_s3_store_access_key = admin backup_s3_store_secret_key = admin123456 backup_s3_store_bucket = cinderbackup110若是利用 OpenStack-Ansible 安拆的话,修改体例同 Glance。
测试后端若是默认 Glance 后端(文件)没有更改,仍然能够利用glance客户端将单个镜像上传到新的 S3 后端。
在此示例中,将上传 Cirros 镜像像到minio后端:
[root@node110 ~(keystone_admin)]#~/images# glance image-create --file cirros-0.5.1-x86_64-disk.img --disk-format raw --container-format bare --name cirros3 --store minio --progress
[=============================>] 100%
+------------------+----------------------------------------------------------------------------------+
| Property | Value |
+------------------+----------------------------------------------------------------------------------+
| checksum | b874c39491a2377b8490f5f1e89761a4 |
| container_format | bare |
| created_at | 2022-09-13T08:53:50Z |
| disk_format | qcow2|
| id | bfe5579e-96ce-4acb-8c36-871935beda33 |
| min_disk | 0 |
| min_ram | 0 |
| name | cirros3 |
| os_hash_algo | sha512 |
| os_hash_value | 6b813aa46bb90b4da216a4d19376593fa3f4fc7e617f03a92b7fe11e9a3981cbe8f0959dbebe3622 |
| | 5e5f53dc4492341a4863cac4ed1ee0909f3fc78ef9c3e869 |
| os_hidden | False |
| owner | 71a836dac0b044a4b47f6a9ecd4533c6 |
| protected | False |
| size | 16300544 |
| status | active |
| stores | minio |
| tags | [] |
| updated_at | 2022-09-13T08:53:51Z |
| virtual_size | 117440512 |
| visibility | shared|
+------------------+----------------------------------------------------------------------------------+上传后,能够通过指定镜像名称或 UUID 来创建实例。
在如下的案例中,将会创建卷vol1以及对应的备份。
[root@node110 ~(keystone_admin)]# openstack volume create --size 1 vol1 +---------------------+--------------------------------------+ | Field | Value | +---------------------+--------------------------------------+ | attachments | [] | | availability_zone | nova | | bootable | false | | consistencygroup_id | None | | created_at | 2022-09-13T08:56:19.058924 | | description | None | | encrypted | False | | id | 683c20ed-debb-4531-b176-f623826a9197 | | migration_status | None | | multiattach | False | | name | vol1 | | properties | | | replication_status | None | | size | 1 | | snapshot_id | None | | source_volid | None | | status | creating | | type | __DEFAULT__ | | updated_at | None | | user_id | b80333df70ad4856a7fb7a490ade7063 | +---------------------+--------------------------------------+ [root@node110 ~(keystone_admin)]# openstack volume backup create --name vol1-back1 683c20ed-debb-4531-b176-f623826a9197 +-------+--------------------------------------+ | Field | Value | +-------+--------------------------------------+ | id | 231d4985-ef9e-43b1-bb50-ec653556c711 | | name | vol1-back1 | +-------+--------------------------------------+ [root@node110 ~(keystone_admin)]# openstack volume backup show 231d4985-ef9e-43b1-bb50-ec653556c711 +-----------------------+--------------------------------------+ | Field | Value | +-----------------------+--------------------------------------+ | availability_zone | None | | container | cinderbackup110 | | created_at | 2022-09-13T08:59:19.000000 | | data_timestamp | 2022-09-13T08:59:19.000000 | | description | None | | fail_reason | None | | has_dependent_backups | False | | id | 231d4985-ef9e-43b1-bb50-ec653556c711 | | is_incremental | False | | name | vol1-back1 | | object_count | 21 | | size | 1 | | snapshot_id | None | | status | available | | updated_at | 2022-09-13T08:59:43.000000 | | volume_id | 683c20ed-debb-4531-b176-f623826a9197 | +-----------------------+--------------------------------------+通过 Minio 供给的客户端号令 mc 查看 Minio 中的数据:
[root@node110 ~(keystone_admin)]# mc ls minio/glance110/ [2022-09-11 17:49:43 CST] 243MiB STANDARD 0f56bb90-8c40-44dd-8ad8-650a0c2afd64 [2022-09-13 16:53:51 CST] 16MiB STANDARD bfe5579e-96ce-4acb-8c36-871935beda33 [root@node110 ~(keystone_admin)]# mc ls minio/cinderbackup110/ [2022-09-13 17:09:13 CST] 0B volume_683c20ed-debb-4531-b176-f623826a9197/ 基准测试 MinioMinio 团队供给了一个名为 Warp 的基准测试适用法式,它能够在Github(
https://github.com/minio/warp) 上做为预编译二进造文件的源代码获得。要停止测试,您需要 Minio 端点以及拜候密钥和密钥:
# warp mixed --host=10.100.100.110:9000 --access-key=admin --secret-key=admin123456 --autoterm Throughput 7.3 objects/s within 7.500000% for 25.802s. Assuming stability. Terminating benchmark. warp: Benchmark data written to "warp-mixed-2021-12-24[050521]-hCzP.csv.zst" Mixed operations. Operation: DELETE, 10%, Concurrency: 20, Ran 1m33s. * Throughput: 2.39 obj/s Operation: GET, 44%, Concurrency: 20, Ran 1m33s. * Throughput: 104.80 MiB/s, 10.48 obj/s Operation: PUT, 15%, Concurrency: 20, Ran 1m32s. * Throughput: 36.17 MiB/s, 3.62 obj/s Operation: STAT, 30%, Concurrency: 20, Ran 1m33s. * Throughput: 7.00 obj/s Cluster Total: 139.94 MiB/s, 23.35 obj/s over 1m34s. 归纳综合在本文中,我们很轻松的实现通过 Minio 的 S3 接口来存储 Glance 镜像以及 Cinder 卷的备份数据。同时我们也上传了镜像以及创建卷备份来验证 Minio 能否一般存储了数据。
关于我们的用例来说,利用像 Ceph,Swift(用于对象)如许的散布式存储有点过重,在良多中小情况以及尝试情况中,我们仅仅需要一个快速,高效,简单的对象存储。别的,我们也可能会测验考试实现一个 Swift 代办署理来将 Swift 后端指向 Minio, 如许就实现了 Minio 与 Openstack 的完好对接。
Tags: