使用 mc admin decommission 停用服务器池
硬件最终会达到其使用寿命,必须在故障对数据可用性和完整性造成风险之前停止使用。因此,必须主动删除数据,以防止对相关应用程序造成中断。MinIO 最近添加了在不影响数据可用性的情况下淘汰和升级服务器池的能力。虽然退役不是一项普遍要求的功能,但我们正在为那些正在规划整个存储生命周期的人提供它。在进行关键采购时,基础架构团队喜欢提前计划,而 MinIO 可以满足您的需求。
这篇文章向您展示了如何停用服务器池、查看正在进行的停用状态或取消它。
用例:停用服务器池
假设您有一个 MinIO 集群,该集群由一个服务器池和四个节点组成。此服务器池硬件即将停产。您购买了一个新的第二个服务器池,并希望将其添加到集群中以替换第一个服务器池,同时保持数据可用性。mc admin decommission 命令将首先将第一个服务器池锁定为只读,然后将对象排空到新池中。在多池 MinIO 环境中,退役将数据平均分布在所有池中。

我们将在安装硬件并将新服务器池添加到我们的 MinIO 集群后开始。
停用原始服务器池
打开终端并使用 MinIO 客户端开始。
$ mc admin decommission start alias/ http://minio{1...2}/data{1...4}
检查整体退役情况
根据您要移动的数据量,该过程可能需要一些时间。您可以使用以下方法检查所有池的当前退役状态:
$ mc admin decommission status alias/
你会看到类似的东西:
| ID | Pools | Capacity | Status |
| 1st | http://minio{1...2}/data{1...4}| 439 GiB (used) / 561 GiB (total) | Active |
| 2nd | http://minio{3...4}/data{1...4}| 329 GiB (used) / 421 GiB (total) | Active |检查服务器池退役状态
您还可以查看每个池的更详细状态,例如:
$ mc admin decommission status alias/ http://minio{1...2}/data{1...4}
Decommissioning rate at 36 MiB/sec [4 TiB/50 TiB]
Started: 1 minute ago如果您从未停用的池中请求状态,您将收到错误消息:
mc admin decommission status alias/ http://minio{1...2}/data{1...4}
ERROR: This pool is not scheduled for decommissioning currently.取消服务器池退役
或者,如果您决定不停用原始服务器池,则可以取消该过程。如果负载太高并且您想安排下班时间停用,则可以使用此方法:
mc admin decommission cancel没有争论,列出任何正在进行的退役。
| ID | Pools | Capacity | Status |
| 1st | http://minio{1...2}/data{1...4}| 439 GiB (used) / 561 GiB (total) | Draining|请注意,取消停用不会使池再次激活,以避免跨池使用部分命名空间。
$ mc admin decommission cancel alias/ http://minio{1...2}/data{1...4}
| ID | Pools | Capacity | Status |
| 1st | http://minio{1...2}/data{1...4}| 439 GiB (used) / 561 GiB (total) | Draining(Canceled)|万一停用失败,status将指示停用失败:
| ID | Pools | Capacity | Status |
| 1st | http://minio{1...2}/data{1...4}| 439 GiB (used) / 561 GiB (total) | Draining(Failed)|
| 2nd | http://minio{3...4}/data{1...4}| 329 GiB (used) / 421 GiB (total) | Active |您可以通过以下方式重新启动已取消或失败的退役:
$ mc admin decommission start alias/ http://minio{1...2}/data{1...4}退役什么时候完成?
status 命令还会告诉您何时完成退役:
$ mc admin decommission status alias/
| ID | Pools | Capacity | Status |
| 1st | http://minio{1...2}/data{1...4}| 439 GiB (used) / 561 GiB (total) | Complete |
| 2nd | http://minio{3...4}/data{1...4}| 329 GiB (used) / 421 GiB (total) | Active |删除服务器池
最后一步是从您的 MinIO 部署中删除第一个服务器池。从您的 MinIO 启动命令中删除此服务器池的地址。
在baremetal deployments上,如果你像这样为所有三个服务器池启动 MinIO:
$ minio server http://minio{1...2}/data{1...4} http://minio{3...4}/data{1...4} http://minio{5...6}/data{1...4}然后你可以删除第一个参数来更新你的MINIO_VOLUMES设置:
$ minio server http://minio{3...4}/data{1...4} http://minio{5...6}/data{1...4}然后systemctl restart minio在部署中的所有服务器上并行使用。
在Kubernetes 部署中,需要通过更改 MinIO 容器的命令行输入来修改 MinIO statefulset 规范。完成相关更改后,继续执行kubectl apply -f statefulset.yaml。
在基于 Operator 的 MinIO 部署中,您需要修改tenant.yaml规范并修改池:从两个条目到单个条目的部分,一旦完成相关更改,就继续执行kubectl apply -f tenant.yaml。
体验 MinIO
您可以使用单个命令在 MinIO 集群上无中断地删除和升级硬件。这不仅让基础设施管理员的工作变得更轻松,还确保您的对象存储解决方案可以通过使用 MinIO 灵活的服务器池架构比其硬件更长寿。
你可以通过下载 MinIO来试试这个。如果您想了解更多信息或有任何疑问,请加入我们的Slack 频道,发送邮件至 sales@minio.org.cn 或使用“咨询专家”按钮