文档

数据压缩

概述

MinIO 服务器支持压缩对象以减少磁盘使用量。对象在写入磁盘之前在 PUT 期间进行压缩,并在发送到客户端之前在 GET 期间解压缩。这使得压缩过程对于客户端应用程序和服务是透明的。

根据数据类型,压缩也可能提高整体吞吐量。生产部署的写入吞吐量通常为每秒 500MB 或更高,每个系统中可用的 CPU 内核。每个 CPU 内核的解压缩速度约为每秒 1GB 或更高。

为了获得最佳效果,请查看 MinIO 的 推荐硬件配置 或使用 MinIO SUBNET 直接与工程师合作,以分析压缩性能。

默认文件类型

数据压缩是一个全局选项,配置的设置适用于部署中的所有存储桶。启用数据压缩默认会压缩以下类型的数据

文件扩展名

媒体 (MIME) 类型

.txt

.log

.csv

.json

.tar

.xml

.bin

text/*

application/json

application/xml

binary/octet-stream

您可以通过指定所需的文件扩展名和 媒体 (MIME) 类型 来控制压缩哪些对象。

现有对象不会被修改

启用、禁用或更新部署的压缩设置不会修改现有对象。新对象会根据创建时有效的设置进行压缩。

排除的文件类型

某些数据无法有效压缩。例如:视频、已压缩的数据或小于 4KiB 的文件。MinIO 不会压缩常见的不压缩文件类型,即使它们在压缩配置中指定。

这些类型的对象永远不会被压缩

对象类型

文件扩展名

媒体 (MIME) 类型

音频

audio/*

视频

*.mp4
*.mkv
*.mov

video/*

图像

*.jpg
*.png
*.gif

application/x-compress (LZW)

7ZIP 压缩

*.7z

BZIP2 压缩

*.bz2

application/x-bz2

GZIP 压缩

*.gz

application/x-gzip

RAR 压缩

*.rar

LZMA 压缩

*.xz

application/x-xz

ZIP 压缩

*.zip

application/zip
application-x-zip-compressed

小于 4 KiB

数据压缩和加密

MinIO 支持加密压缩对象,但不建议在没有事先进行风险评估的情况下将压缩和加密结合使用。在为压缩对象启用加密之前,请仔细考虑您环境的安全需求。

有关将压缩和加密结合使用的更多信息,请参阅 MinIO 上的透明数据压缩MinIO SUBNET 用户可以 登录 并与我们的工程和安全团队联系以审查加密选项。

教程

启用数据压缩

要启用数据压缩,请使用 mc admin config set 设置 compression 密钥的 enable 选项为 on

以下操作将为 默认类型 的新对象启用压缩

mc admin config set ALIAS compression enable=on
  • ALIAS 替换为已配置的 MinIO 部署的 alias

现有的未压缩对象不会被修改。要配置要压缩的扩展名和类型,请参阅 配置要压缩的对象

要查看当前压缩设置

mc admin config get ALIAS compression

禁用数据压缩

要禁用数据压缩,请使用 mc admin config set 设置 compression 密钥的 enable 选项为 off

以下操作将为新对象禁用数据压缩

mc admin config set ALIAS compression enable=off
  • ALIAS 替换为已配置的 MinIO 部署的 alias

现有的压缩对象不会被修改。

配置要压缩的对象

通过在 extensionsmime_types 参数中指定所需的扩展名和媒体类型来配置要压缩的对象。

默认的数据压缩配置会压缩以下类型的数据

文件扩展名

媒体 (MIME) 类型

.txt

.log

.csv

.json

.tar

.xml

.bin

text/*

application/json

application/xml

binary/octet-stream

默认排除的扩展名和类型永远不会被压缩

某些对象无法有效压缩。MinIO 不会尝试压缩这些对象,即使它们在 extensionsmime_types 参数中指定。请参阅 排除的文件类型 以获取排除类型的列表。

以下部分介绍了如何为所需的文件扩展名和媒体类型配置压缩。

压缩所有可压缩对象

要压缩除 默认排除的类型 之外的所有对象,请使用 mc admin config set 设置 compression 密钥的 extensionsmime_types 选项为空列表

mc admin config set ALIAS compression extensions= mime_types=
  • ALIAS 替换为已配置的 MinIO 部署的 alias

按文件扩展名压缩对象

要压缩具有某些文件扩展名的对象,请使用 mc admin config setextensions 参数中设置所需的文件扩展名。

以下命令将压缩扩展名为 .bin.txt 的文件

mc admin config set ALIAS compression extensions=".bin, .txt"
  • ALIAS 替换为已配置的 MinIO 部署的 alias

新的文件扩展名列表将替换以前的列表。要添加或删除扩展名,请使用要压缩的扩展名的完整列表重复 extensions 命令。

以下操作将 .pdf 添加到上一示例中的文件扩展名列表中

mc admin config set ALIAS compression extensions=".bin, .txt, .pdf"
  • ALIAS 替换为已配置的 MinIO 部署的 alias

按媒体类型压缩对象

要压缩某些媒体类型的对象,请使用 mc admin config setcompression 密钥的 mime_types 选项设置为所需类型的列表。

以下示例压缩类型为 application/jsonimage/bmp 的文件

mc admin config set ALIAS compression mime_types="application/json, image/bmp"
  • ALIAS 替换为已配置的 MinIO 部署的 alias

新的媒体类型列表将替换以前的列表。要添加或删除类型,请使用要压缩的类型的完整列表重复 mime_types 命令。

您可以使用 * 指定单个媒体类型的所有子类型。以下命令将所有 text 子类型添加到上一示例中的列表中

mc admin config set ALIAS compression mime_types="application/json, image/bmp, text/*"
  • ALIAS 替换为已配置的 MinIO 部署的 alias