文档

数据压缩

概述

MinIO Server 支持对对象进行压缩,以减少磁盘使用量。 对象在 PUT 时会先压缩再写入磁盘,在 GET 时会先解压再发送给客户端。这样一来,压缩过程对客户端应用程序和服务是透明的。

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

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

默认文件类型

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

文件扩展名

媒体(MIME)类型

.txt

.log

.csv

.json

.tar

.xml

.bin

text/*

application/json

application/xml

binary/octet-stream

你可以通过指定所需的文件扩展名和 media (MIME) types 来控制哪些对象会被压缩。

现有对象不会被修改

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

排除的文件类型

某些数据无法被有效压缩。 例如:视频、已经压缩过的数据,或小于 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 支持对压缩后的对象进行加密,但不建议在未事先进行风险评估的情况下同时启用压缩和加密。 在为压缩对象启用加密之前,请仔细评估你的环境中的安全需求。

有关如何同时使用压缩和加密的更多信息,请参阅 Transparent Data Compression on MinIOMinIO SUBNET 用户可以 log in 并与我们的工程和安全团队沟通,以评估加密选项。

教程

启用数据压缩

要启用数据压缩,请使用 mc admin config setcompression 键的 enable 选项设置为 on

以下命令会为 默认类型 的新对象启用压缩:

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

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

要查看当前的压缩设置:

mc admin config get ALIAS compression

禁用数据压缩

要禁用数据压缩,请使用 mc admin config setcompression 键的 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

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

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

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

压缩所有可压缩对象

要压缩除 默认排除类型 之外的所有对象,请使用 mc admin config setcompression 键的 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