From 0cf4539fe84bab1cd2a031380f7857ee8c50c948 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A3=9E=E9=9B=AA=E6=97=A0=E6=83=85?= Date: Sun, 2 Aug 2020 02:52:46 +0800 Subject: [PATCH] fix: update and improve zh_CN documentation (#10174) --- docs/zh_CN/config/README.md | 149 ++++++++++++++++----- docs/zh_CN/docker/README.md | 63 ++++++++- docs/zh_CN/erasure/README.md | 20 ++- docs/zh_CN/erasure/storage-class/README.md | 103 ++++++++++++++ 4 files changed, 293 insertions(+), 42 deletions(-) create mode 100644 docs/zh_CN/erasure/storage-class/README.md diff --git a/docs/zh_CN/config/README.md b/docs/zh_CN/config/README.md index e9ff2de0b..dfa89455a 100644 --- a/docs/zh_CN/config/README.md +++ b/docs/zh_CN/config/README.md @@ -1,63 +1,150 @@ -# MinIO Server `config.json` (v18) 指南 [![Slack](https://slack.min.io/slack?type=svg)](https://slack.min.io) [![Docker Pulls](https://img.shields.io/docker/pulls/minio/minio.svg?maxAge=604800)](https://hub.docker.com/r/minio/minio/) - -MinIO server在默认情况下会将所有配置信息存到 `${HOME}/.minio/config.json` 文件中。 以下部分提供每个字段的详细说明以及如何自定义它们。一个完整的 `config.json` 在 [这里](https://raw.githubusercontent.com/minio/minio/master/docs/config/config.sample.json) +# MinIO Server 配置指南 [![Slack](https://slack.min.io/slack?type=svg)](https://slack.min.io) [![Docker Pulls](https://img.shields.io/docker/pulls/minio/minio.svg?maxAge=604800)](https://hub.docker.com/r/minio/minio/) ## 配置目录 + 默认的配置目录是 `${HOME}/.minio`,你可以使用`--config-dir`命令行选项重写之。MinIO server在首次启动时会生成一个新的`config.json`,里面带有自动生成的访问凭据。 ```sh minio server --config-dir /etc/minio /data ``` +截止到 MinIO `RELEASE.2018-08-02T23-11-36Z` 版本, MinIO server 的配置文件(`config.json`) 被存储在通过 `--config-dir` 指定的目录或者默认的 `${HOME}/.minio` 目录。 但是从 `RELEASE.2018-08-18T03-49-57Z` 版本之后, 配置文件 (仅仅), 已经被迁移到存储后端 (存储后端指的是启动一个服务器的时候,传递给MinIO server的目录)。 + +您可以使用`--config-dir`指定现有配置的位置, MinIO 会迁移 `config.json` 配置到你的存储后端。 迁移成功后,你当前 `--config-dir` 目录中的 `config.json` 将被重命名为 `config.json.deprecated`。 迁移后,所有现有配置都将得到保留。 + +此外,`--config-dir`现在是一个旧配置,计划在将来删除,因此请相应地更新本地startup和ansible脚本。 + +```sh +minio server /data +``` + +MinIO还使用管理员凭据对所有配置,IAM和策略内容进行加密。 + ### 证书目录 TLS证书存在``${HOME}/.minio/certs``目录下,你需要将证书放在该目录下来启用`HTTPS` 。如果你是一个乐学上进的好青年,这里有一本免费的秘籍传授一你: [如何使用TLS安全的访问minio](https://docs.min.io/cn/how-to-secure-access-to-minio-server-with-tls). -以下是一个带来TLS证书的MinIO server的目录结构。 +以下是一个具有TLS证书的MinIO server的目录结构。 ```sh -$ tree ~/.minio +$ mc tree --files ~/.minio /home/user1/.minio -├── certs -│ ├── CAs -│ ├── private.key -│ └── public.crt -└── config.json +└─ certs + ├─ CAs + ├─ private.key + └─ public.crt ``` -### 配置参数 -#### 版本 -|参数|类型|描述| -|:---|:---|:---| -|``version``|_string_| `version`决定了配置文件的格式,任何老版本都会在启动时自动迁移到新版本中。 [请勿手动修改]| +你可以使用`--certs-dir`命令行选项提供自定义certs目录。 #### 凭据 -|参数|类型|描述| -|:---|:---|:---| -|``credential``| |对象存储和Web访问的验证凭据。| -|``credential.accessKey`` | _string_ | Access key长度最小是5个字符,你可以通过 `MINIO_ACCESS_KEY`环境变量进行修改| -|``credential.secretKey`` | _string_ | Secret key长度最小是8个字符,你可以通过`MINIO_SECRET_KEY`环境变量进行修改| +只能通过环境变量`MINIO_ACCESS_KEY` 和 `MINIO_SECRET_KEY` 更改MinIO的admin凭据和root凭据。使用这两个值的组合,MinIO加密存储在后端的配置 -示例: +``` +export MINIO_ACCESS_KEY=minio +export MINIO_SECRET_KEY=minio13 +minio server /data +``` -```sh -export MINIO_ACCESS_KEY=admin -export MINIO_SECRET_KEY=password +##### 使用新的凭据轮换加密 + +另外,如果您想更改管理员凭据,则MinIO将自动检测到该凭据,并使用新凭据重新加密,如下所示。一次只需要设置如下所示的环境变量即可轮换加密配置。 + +> 旧的环境变量永远不会在内存中被记住,并且在使用新凭据迁移现有内容后立即销毁。在服务器再次成功重启后,你可以安全的删除它们。 + +``` +export MINIO_ACCESS_KEY=newminio +export MINIO_SECRET_KEY=newminio123 +export MINIO_ACCESS_KEY_OLD=minio +export MINIO_SECRET_KEY_OLD=minio123 minio server /data ``` -#### 区域(Region) -|参数|类型|描述| -|:---|:---|:---| -|``region``| _string_ | `region`描述的是服务器的物理位置,默认是`us-east-1`(美国东区1),这也是亚马逊S3的默认区域。你可以通过`MINIO_REGION_NAME` 环境变量进行修改。如果不了解这块,建议不要随意修改| +迁移完成后, 服务器会自动的取消进程空间中的`MINIO_ACCESS_KEY_OLD` and `MINIO_SECRET_KEY_OLD`设置。 + +> **注意: 在下一次服务重新启动前,要确保移除脚本或者服务文件中的 `MINIO_ACCESS_KEY_OLD` and `MINIO_SECRET_KEY_OLD`, 避免现有的内容被双重加密** + +#### 区域 +``` +KEY: +region 服务器的物理位置标记 + +ARGS: +name (string) 服务器的物理位置名字,例如 "us-west-rack2" +comment (sentence) 为这个设置添加一个可选的注释 +``` + +或者通过环境变量 +``` +KEY: +region 服务器的物理位置标记 + +ARGS: +MINIO_REGION_NAME (string) 服务器的物理位置名字,例如 "us-west-rack2" +MINIO_REGION_COMMENT (sentence) 为这个设置添加一个可选的注释 +``` 示例: ```sh -export MINIO_REGION_NAME="中国华北一区" +export MINIO_REGION_NAME="my_region" minio server /data ``` -#### 浏览器 +### 存储类型 +默认情况下,标准存储类型的奇偶校验值设置为N/2,低冗余的存储类型奇偶校验值设置为2。在[此处](https://github.com/minio/minio/blob/master/docs/zh_CN/erasure/storage-class/README.md)了解有关MinIO服务器存储类型的更多信息。 + +``` +KEY: +storage_class 定义对象级冗余 + +ARGS: +standard (string) 设置默认标准存储类型的奇偶校验计数,例如"EC:4" +rrs (string) 设置默认低冗余存储类型的奇偶校验计数,例如"EC:2" +comment (sentence) 为这个设置添加一个可选的注释 +``` + +或者通过环境变量 +``` +KEY: +storage_class 定义对象级冗余 + +ARGS: +MINIO_STORAGE_CLASS_STANDARD (string) 设置默认标准存储类型的奇偶校验计数,例如"EC:4" +MINIO_STORAGE_CLASS_RRS (string) 设置默认低冗余存储类型的奇偶校验计数,例如"EC:2" +MINIO_STORAGE_CLASS_COMMENT (sentence) 为这个设置添加一个可选的注释 +``` + +### 缓存 +MinIO为主要的网关部署提供了缓存存储层,使您可以缓存内容以实现更快的读取速度,并节省从云中重复下载的成本。 + +``` +KEY: +cache 添加缓存存储层 + +ARGS: +drives* (csv) 逗号分隔的挂载点,例如 "/optane1,/optane2" +expiry (number) 缓存有效期限(天),例如 "90" +quota (number) 以百分比限制缓存驱动器的使用,例如 "90" +exclude (csv) 逗号分隔的通配符排除模式,例如 "bucket/*.tmp,*.exe" +after (number) 缓存对象之前的最小可访问次数 +comment (sentence) 为这个设置添加一个可选的注释 +``` + +或者通过环境变量 +``` +KEY: +cache 添加缓存存储层 + +ARGS: +MINIO_CACHE_DRIVES* (csv) 逗号分隔的挂载点,例如 "/optane1,/optane2" +MINIO_CACHE_EXPIRY (number) 缓存有效期限(天),例如 "90" +MINIO_CACHE_QUOTA (number) 以百分比限制缓存驱动器的使用,例如 "90" +MINIO_CACHE_EXCLUDE (csv) 逗号分隔的通配符排除模式,例如 "bucket/*.tmp,*.exe" +MINIO_CACHE_AFTER (number) 缓存对象之前的最小可访问次数 +MINIO_CACHE_COMMENT (sentence) 为这个设置添加一个可选的注释 +``` + +### 浏览器 |参数|类型|描述| |:---|:---|:---| |``browser``| _string_ | 开启或关闭浏览器访问,默认是开启的,你可以通过``MINIO_BROWSER``环境变量进行修改| @@ -83,4 +170,4 @@ minio server /data |``notify.webhook``| |[通过Webhooks发布MinIO事件](https://docs.min.io/cn/minio-bucket-notification-guide#webhooks)| ## 了解更多 -* [MinIO Quickstart Guide](https://docs.min.io/docs/minio-quickstart-guide) +* [MinIO Quickstart Guide](https://docs.min.io/cn/minio-quickstart-guide) diff --git a/docs/zh_CN/docker/README.md b/docs/zh_CN/docker/README.md index d70ae7a77..84e45c5d0 100644 --- a/docs/zh_CN/docker/README.md +++ b/docs/zh_CN/docker/README.md @@ -7,24 +7,31 @@ MinIO 需要一个持久卷来存储配置和应用数据。不过, 如果只是为了测试一下, 您可以通过简单地传递一个目录(在下面的示例中为`/ data`)启动MinIO。这个目录会在容器启动时在容器的文件系统中创建,不过所有的数据都会在容器退出时丢失。 ```sh -docker run -p 9000:9000 minio/minio server /data +docker run -p 9000:9000 \ + -e "MINIO_ACCESS_KEY=AKIAIOSFODNN7EXAMPLE" \ + -e "MINIO_SECRET_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" \ + minio/minio server /data ``` 要创建具有永久存储的MinIO容器,您需要将本地持久目录从主机操作系统映射到虚拟配置`~/.minio` 并导出`/data`目录。 为此,请运行以下命令 #### GNU/Linux 和 macOS ```sh -docker run -p 9000:9000 --name minio1 \ +docker run -p 9000:9000 \ + --name minio1 \ -v /mnt/data:/data \ - -v /mnt/config:/root/.minio \ + -e "MINIO_ACCESS_KEY=AKIAIOSFODNN7EXAMPLE" \ + -e "MINIO_SECRET_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" \ minio/minio server /data ``` #### Windows ```sh -docker run -p 9000:9000 --name minio1 \ +docker run -p 9000:9000 \ + --name minio1 \ -v D:\data:/data \ - -v D:\minio\config:/root/.minio \ + -e "MINIO_ACCESS_KEY=AKIAIOSFODNN7EXAMPLE" \ + -e "MINIO_SECRET_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" \ minio/minio server /data ``` @@ -44,7 +51,6 @@ docker run -p 9000:9000 --name minio1 \ -e "MINIO_ACCESS_KEY=AKIAIOSFODNN7EXAMPLE" \ -e "MINIO_SECRET_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" \ -v /mnt/data:/data \ - -v /mnt/config:/root/.minio \ minio/minio server /data ``` @@ -54,7 +60,39 @@ docker run -p 9000:9000 --name minio1 \ -e "MINIO_ACCESS_KEY=AKIAIOSFODNN7EXAMPLE" \ -e "MINIO_SECRET_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" \ -v D:\data:/data \ - -v D:\minio\config:/root/.minio \ + minio/minio server /data +``` + +### 以普通用户身份运行MinIO Docker +Docker提供了标准化的机制,可以以非root用户身份运行docker容器。 + +#### GNU/Linux 和 macOS +在 Linux 和 macOS 上, 你可以使用 `--user` 以普通用户身份来运行容器。 + +> 注意: 在使用`--user`前,一定要确保--user指定的用户具备 *${HOME}/data* 的写入权限。 +```sh +mkdir -p ${HOME}/data +docker run -p 9000:9000 \ + --user $(id -u):$(id -g) \ + --name minio1 \ + -e "MINIO_ACCESS_KEY=AKIAIOSFODNN7EXAMPLE" \ + -e "MINIO_SECRET_KEY=wJalrXUtnFEMIK7MDENGbPxRfiCYEXAMPLEKEY" \ + -v ${HOME}/data:/data \ + minio/minio server /data +``` + +#### Windows +在windows上, 你需要用到 [Docker集成Windows身份验证](https://success.docker.com/article/modernizing-traditional-dot-net-applications#integratedwindowsauthentication) 和 [创建具有Active Directory支持的容器](https://blogs.msdn.microsoft.com/containerstuff/2017/01/30/create-a-container-with-active-directory-support/) 的能力 + +> 注意: 在使用`credentialspec=`欠,要确保你的AD/Windows用户具备 *D:\data* 的写入权限。 + +```powershell +docker run -p 9000:9000 \ + --name minio1 \ + --security-opt "credentialspec=file://myuser.json" + -e "MINIO_ACCESS_KEY=AKIAIOSFODNN7EXAMPLE" \ + -e "MINIO_SECRET_KEY=wJalrXUtnFEMIK7MDENGbPxRfiCYEXAMPLEKEY" \ + -v D:\data:/data \ minio/minio server /data ``` @@ -73,6 +111,17 @@ docker service create --name="minio-service" --secret="access_key" --secret="sec 更多 `docker service`信息,请访问 [这里](https://docs.docker.com/engine/swarm/how-swarm-mode-works/services/) +#### 自定义MinIO Access和Secret密钥文件 +要使用其他密钥名称,请把上面的`access_key` 和 `secret_key`替换为你自定义的名称(比如`my_secret_key`,`my_custom_key`)。使用如下命令运行服务 +``` +docker service create --name="minio-service" \ + --secret="my_access_key" \ + --secret="my_secret_key" \ + --env="MINIO_ACCESS_KEY_FILE=my_access_key" \ + --env="MINIO_SECRET_KEY_FILE=my_secret_key" \ + minio/minio server /data +``` + ### 获取容器ID 在容器中使用Docker命令, 你需要知道这个容器的 `容器ID` 。 为了获取 `Container ID`, 运行 diff --git a/docs/zh_CN/erasure/README.md b/docs/zh_CN/erasure/README.md index fa40acf05..f2348114c 100644 --- a/docs/zh_CN/erasure/README.md +++ b/docs/zh_CN/erasure/README.md @@ -1,10 +1,14 @@ # Minio纠删码快速入门 [![Slack](https://slack.min.io/slack?type=svg)](https://slack.min.io) -Minio使用纠删码`erasure code`和校验和`checksum`来保护数据免受硬件故障和无声数据损坏。 即便您丢失一半数量(N/2)的硬盘,您仍然可以恢复数据。 +Minio使用纠删码`erasure code`和`checksum`来保护数据免受硬件故障和无声数据损坏。 即便您丢失一半数量(N/2)的硬盘,您仍然可以恢复数据。 ## 什么是纠删码`erasure code`? -纠删码是一种恢复丢失和损坏数据的数学算法, Minio采用Reed-Solomon code将对象拆分成N/2数据和N/2 奇偶校验块。 这就意味着如果是12块盘,一个对象会被分成6个数据块、6个奇偶校验块,你可以丢失任意6块盘(不管其是存放的数据块还是奇偶校验块),你仍可以从剩下的盘中的数据进行恢复,是不是很NB,感兴趣的同学请翻墙google。 +纠删码是一种恢复丢失和损坏数据的数学算法, Minio采用里德-所罗门码将对象分片为数据和奇偶校验块。 这就意味着如果是12块盘,一个对象可被分片的范围是:6个数据块和6个奇偶校验块 到 10个数据块和2个奇偶校验块之间。 + +默认情况下, MinIO 将对象拆分成N/2数据和N/2 奇偶校验盘. 虽然你可以通过 [存储类型](https://github.com/minio/minio/tree/master/docs/zh_CN/erasure/storage-class) 自定义配置, 但是我们还是推荐N/2个数据和奇偶校验块, 因为它可以确保对硬盘故障提供最佳保护。 + +比如上面12个盘的例子,通过默认配置运行MinIO服务的话,你可以丢失任意6块盘(不管其是存放的数据块还是奇偶校验块),你仍可以从剩下的盘中的数据进行恢复,是不是很NB,感兴趣的同学请翻墙google。 ## 为什么纠删码有用? @@ -16,6 +20,14 @@ Minio使用纠删码`erasure code`和校验和`checksum`来保护数据免受硬 位衰减又被称为数据腐化`Data Rot`、无声数据损坏`Silent Data Corruption`,是目前硬盘数据的一种严重数据丢失问题。硬盘上的数据可能会神不知鬼不觉就损坏了,也没有什么错误日志。正所谓明枪易躲,暗箭难防,这种背地里犯的错比硬盘直接咔咔宕了还危险。 不过不用怕,Minio纠删码采用了高速 [HighwayHash](https://github.com/minio/highwayhash) 基于哈希的校验和来防范位衰减。 +## 驱动器(盘)如何使用纠删码? + +MinIO会把你提供的所有驱动器,按照*4 到 16*个一组划分为多个纠删码集合,因此,你提供的驱动器数量必须是以上这些数字(4到16)的倍数。每个对象都会被写入一个单独的纠删码集合中。 + +Minio会尽可能使用最大的纠删码集合大小(EC set size)进行划分.比如 *18个盘*会被划分为2个纠删码集合,每个集合有9个盘;*24个盘*也会被划分为2个纠删码集合,每个集合有12个盘。对于将MinIO作为独立的纠删码部署运行的场景而言,这是正确的。然而,在 [分布式部署](https://docs.minio.io/cn/distributed-minio-quickstart-guide.html) 时,选择的是基于节点(亲和力)的纠删条带大小. + +驱动器的大小应当都差不多。 + ## Minio纠删码快速入门 ### 1. 前提条件: @@ -27,7 +39,7 @@ Minio使用纠删码`erasure code`和校验和`checksum`来保护数据免受硬 示例: 使用Minio,在12个盘中启动Minio服务。 ```sh -minio server /data1 /data2 /data3 /data4 /data5 /data6 /data7 /data8 /data9 /data10 /data11 /data12 +minio server /data{1...12} ``` 示例: 使用Minio Docker镜像,在8块盘中启动Minio服务。 @@ -42,7 +54,7 @@ docker run -p 9000:9000 --name minio \ -v /mnt/data6:/data6 \ -v /mnt/data7:/data7 \ -v /mnt/data8:/data8 \ - minio/minio server /data1 /data2 /data3 /data4 /data5 /data6 /data7 /data8 + minio/minio server /data{1...8} ``` ### 3. 验证是否设置成功 diff --git a/docs/zh_CN/erasure/storage-class/README.md b/docs/zh_CN/erasure/storage-class/README.md new file mode 100644 index 000000000..fdfd61069 --- /dev/null +++ b/docs/zh_CN/erasure/storage-class/README.md @@ -0,0 +1,103 @@ +# MinIO 存储类型快速入门 [![Slack](https://slack.min.io/slack?type=svg)](https://slack.min.io) + +在纠删码模式下,MinIO server支持存储类型. 这可以指定每个对象的数据和奇偶校验盘,其实就是可以为对象选择不同的存储类型. + +## 概述 + +MinIO 支持两种存储类型, 低冗余存储和标准存储。 这些存储类型可以在MinIO服务器启动之前通过环境变量定义。 在通过环境变量定义了每个存储类型的数据和奇偶校验盘的数量后, +你可以通过请求中的元数据字段`x-amz-storage-class`来设置一个对象的存储类型。然后,MinIO服务器通过将对象保存在特定数量的数据和奇偶校验盘中来兑现存储类型。 + +## 可用存储空间 + +选择不同的数据和奇偶校验盘的数量会直接影响到存储空间的使用。通过存储类型,你能优化以实现高冗余或者是更好的空间利用率。 + +让我们以在16个盘的MinIO部署中存储100M文件为例,来了解数据和奇偶校验盘数量的不同组合是如何影响可用存储空间的。如果你使用8个数据盘和8个奇偶校验盘,文件空间使用量约为两倍, +即100M文件将占用200M空间。但是,如果你是用10个数据盘和6个奇偶校验盘,则同样的100M文件大约需要160M的空间。如果你是用14个数据盘和2个奇偶校验盘,100M文件仅仅需要约114M空间。 + +以下是一张16盘的MinIO部署,数据/奇偶校验盘数量和相应的 _近似_ 存储储空间使用情况列表。_空间使用率_ 约等于纠删编码下的使用空间除以文件的实际大小。 + +| 盘总个数 (N) | 数据盘个数 (D) | 奇偶校验码个数 (P) | 空间使用率 | +|------------------|-----------------|-------------------|---------------------| +| 16 | 8 | 8 | 2.00 | +| 16 | 9 | 7 | 1.79 | +| 16 | 10 | 6 | 1.60 | +| 16 | 11 | 5 | 1.45 | +| 16 | 12 | 4 | 1.34 | +| 16 | 13 | 3 | 1.23 | +| 16 | 14 | 2 | 1.14 | + +你可以使用公式: `盘总个数 (N)/数据盘个数 (D)`来计算 _大概的_ 空间使用率。 + +### 标准(STANDARD)存储类型的允许值 + +`STANDARD`存储类型意味着奇偶校验盘比`REDUCED_REDUNDANCY`多。 所以, `STANDARD`的奇偶校验盘数量应该 + +- 如果`REDUCED_REDUNDANCY`的奇偶校验盘未设置的话,应该大于等于2。 +- 如果已设置的话,应该大于`REDUCED_REDUNDANCY`的奇偶校验盘数量。 + +奇偶校验块不能大于数据块,所以`STANDARD`存储类型的奇偶校验块不能大于N/2。(N是盘总个数) + +`STANDARD`存储类型的默认值是`N/2`(N是盘总个数)。 + +### 低冗余(REDUCED_REDUNDANCY)存储类型的允许值 + +`REDUCED_REDUNDANCY`存储类型意味着奇偶校验盘比`REDUCED_REDUNDANCY`少。 所以, `REDUCED_REDUNDANCY`的奇偶校验盘数量应该 + +- 如果`STANDARD`的奇偶校验盘未设置的话,应该小于2。 +- 如果设置的话,应该小于`STANDARD`的奇偶校验盘数量。 + +因为不建议奇偶校验盘数量低于2, 所以4个盘组成的纠删码模式部署是不支持`REDUCED_REDUNDANCY`存储类型的。 + +`REDUCED_REDUNDANCY`存储类型的默认值是`2`。 + +## 存储类型入门 + +### 设置存储类型 + +设置存储类型环境变量的格式如下 + +`MINIO_STORAGE_CLASS_STANDARD=EC:parity` +`MINIO_STORAGE_CLASS_RRS=EC:parity` + +例如, 设置 `MINIO_STORAGE_CLASS_RRS` 奇偶校验盘为2 以及设置 `MINIO_STORAGE_CLASS_STANDARD` 奇偶校验盘为3 + +```sh +export MINIO_STORAGE_CLASS_STANDARD=EC:3 +export MINIO_STORAGE_CLASS_RRS=EC:2 +``` + +也可以通过`mc admin config` get/set 命令来设置存储类型。参考 [存储类型](https://github.com/minio/minio/tree/master/docs/zh_CN/config#存储类型) 获取更多详细信息。 + + +*注意* + +- 如果通过环境变量或`mc admin config` get/set命令设置了`STANDARD`存储类型,并且请求元数据中不存在`x-amz-storage-class`,则MinIO服务器会将`STANDARD`存储类型应用于该对象。这意味着将按照`STANDARD`存储类型中的设置使用数据和奇偶校验盘数量。 + +- 如果在启动MinIO服务器之前未定义存储类型,并且随后的PutObject元数据字段中存在`x-amz-storage-class`,其值为`REDUCED_REDUNDANCY`或`STANDARD`,则MinIO服务器将使用默认的奇偶校验值。 + +### 设置元数据 + +如下`minio-go`的示例中,存储类型被设置为`REDUCED_REDUNDANCY`。这意味着对象被拆分为6个数据块和2个奇偶校验块(按照上一步骤中的存储类型设置)。 + +```go +s3Client, err := minio.New("localhost:9000", "YOUR-ACCESSKEYID", "YOUR-SECRETACCESSKEY", true) +if err != nil { + log.Fatalln(err) +} + +object, err := os.Open("my-testfile") +if err != nil { + log.Fatalln(err) +} +defer object.Close() +objectStat, err := object.Stat() +if err != nil { + log.Fatalln(err) +} + +n, err := s3Client.PutObject("my-bucketname", "my-objectname", object, objectStat.Size(), minio.PutObjectOptions{ContentType: "application/octet-stream", StorageClass: "REDUCED_REDUNDANCY"}) +if err != nil { + log.Fatalln(err) +} +log.Println("Uploaded", "my-objectname", " of size: ", n, "Successfully.") +```