文档

数据压缩

概述

MinIO 服务器支持压缩对象以减少磁盘使用量。对象在 PUT 之前被压缩,然后再写入磁盘,在 GET 之前被解压缩,然后再发送到客户端。这使得压缩过程对客户端应用程序和服务透明。

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

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

默认文件类型

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

文件扩展名

媒体 (MIME) 类型

.txt

.log

.csv

.json

.tar

.xml

.bin

text/*

application/json

application/xml

binary/octet-stream

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

现有对象不会被修改

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

排除的文件类型

某些数据无法有效压缩。例如:视频、已经压缩的数据或小于 4 KiB 的文件。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 设置 compressionenable 选项为 on

以下内容将为 默认类型 的新对象启用压缩。

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

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

要查看当前的压缩设置,请执行以下操作:

mc admin config get ALIAS compression

禁用数据压缩

要禁用数据压缩,请使用 mc admin config set 设置 compressionenable 选项为 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

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

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

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

压缩所有可压缩的对象

要压缩所有对象(除了 默认排除的类型),请使用 mc admin config set 设置 compressionextensionsmime_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 set 设置 compressionmime_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