Windows环境MinIO部署指南:从下载到服务化
1. 为什么Windows也要装MinIO从一次本机联调说起1.1 对象存储是干什么的MinIO在其中是什么角色先把概念说清楚因为不少人看到对象存储四个字就开始犯困。你可以把对象存储想象成一个超大号的网盘但它不是给人存网课用的而是给程序存数据的。它把每个文件称为一个对象所有的对象都放在桶Bucket里程序通过HTTP接口对这些对象做上传、下载、删除、列举操作。最关键的是它提供了一套标准的读写接口开发的时候只要对接这套接口底层的存储节点是谁、有多少台、怎么部署你都不用关心。MinIO就是一套实现了这套接口的开源存储软件它的核心价值是让大家可以用几台普通的服务器甚至一台开发机就搭出一个标准接口的存储服务。它特别喜欢在一些不追求复杂但要求接口标准的场景里出现比如本机开发、内网共享、模拟联调、教学演示。我当年第一次接触它就是因为一个模拟项目需要给文件上传功能找个临时存储不想为了一个模块就去申请一堆云资源于是在Windows开发机上直接跑了一个MinIO实例一下午就把接口调通了。在Windows上安装MinIO本质上和安装一个普通服务端程序没有区别但它比大多数Windows软件多了一个特点它默认是以命令行方式启动而且对启动目录、环境变量、端口占用都有要求。如果你只是双击exe然后好奇它为什么一闪而过那这篇内容就是为你写的。1.2 Windows场景下什么时候真的需要它有一种典型的Windows使用场景是你正在开发一个需要对接对象存储接口的应用程序比如图片上传服务、文档管理系统、日志归档工具。云上环境可能还没申请下来或者每次调试都要连远端延迟高不说还得小心翼翼地避免把测试数据传进生产桶。这种时候在本机跑一个MinIO把所有测试数据都丢到本地桶里调试效率会高很多。而且因为接口是标准的等真正部署到生产环境时只需要换一下子配置代码几乎不用动。还有一种场景是内网小规模共享。我记得有朋友在单位里搭过一个文件分发服务几十个人需要共享一些安装包和资料不想单独采购NAS设备就用一台普通的Windows服务器跑MinIO配合它的控制台和分享链接功能给业务部门分配了不同的账号。你能直接通过网页创建桶、上传文件、生成临时分享链接一个轻量级的文件系统就出来了而且权限模型比简单地开一个共享文件夹清晰得多。第三种场景是当你要给团队做对象存储的介绍或者演示时Windows桌面环境反而很友好。你可以一边打开控制台界面一边敲命令让听众直观看到文件上传后对象是怎么落盘的、桶是怎么组织的。很多初学者都是在Windows上第一次把对象存储跑明白的。1.3 什么情况下应该换路子如果你追求的是生产级的超大规模存储比如几十个节点、纠删码模式、多租户隔离那我还是建议把目光放到Linux系统上。Windows虽然也能跑MinIO但官方大量的性能调优、单机磁盘管理脚本都是以Linux为基准的Windows的文件系统和网络栈在某些高并发场景下会表现得不如预期。不是说Windows不行而是没有必要在一条不熟悉的路上硬扛。还有一类情况是如果你的项目对存储系统的依赖特别大希望它自动处理故障转移和多副本那么单纯的单机MinIO模式解决不了问题需要上分布式MinIO集群。在Windows上搭集群不是不行但容器编排、节点发现、磁盘规划的复杂度和Linux相比会高一些。我的建议很实在先在一台Windows机器上把MinIO的下载、安装、启动、读写验证、服务化全部跑通再考虑要不要进一步扩展。大多数人的需求单机模式已经覆盖了七八成。2. 下载前先定三件事安装介质、版本、部署形态2.1 三种安装介质的取舍单文件exe、Docker容器、源码编译下载MinIO到Windows上最常见的途径是官方发布页面里的Windows可执行文件。它是一个单独编译好的exe体积不大不需要安装器拷贝到任意目录就可以跑。我偏爱这种方式因为它依赖最少只要机器里有基本的运行环境就能工作而且排查问题时的变量少。另一个可选方案是使用Docker容器运行MinIO前提是你已经装好了Windows下的容器环境。如果你本来就在用容器管理一堆服务那用镜像方式跑MinIO也顺手数据卷挂载、端口映射一条命令解决。但要注意Windows下容器的底层虚拟化方案会占用一些额外资源如果你只是为了一个存储工具去装容器环境那这步棋就有点绕了。源码编译这条路一般不推荐除非你要二次开发或者身处完全断网的环境只能靠源码包在本地构建。MinIO本身是用Go语言写的Windows下编译需要配置好Go工具链而这套工具链又有一堆版本要求。对于绝大多数人来说下载现成的可执行文件是最直接、最不容易出错的路径。我简单对比一下三种方式方便你根据自己情况选安装方式启动速度依赖要求适合场景单文件exe最快秒级启动无额外依赖本机开发、内网小规模部署、快速验证Docker容器取决于镜像拉取与容器启动时间需要容器环境已有容器编排体系统一管理实例源码编译编译耗时较长需要Go工具链二次开发或极端离线环境2.2 版本选择的思路MinIO的版本号看起来和别的软件不太一样它的发布版本号是一串类似日期形式的字符串比如RELEASE.2024-xx-xxTxx-xx-xxZ。起初我也觉得这个命名奇怪后来明白了它其实是把发布时间直接当版本号这样每一天的发布都能精确追溯。你不需要理解这串字符的全部含义只要记住几点第一认准RELEASE开头的稳定发布版本尽量避免选用RC或者实验性的构建。第二刚发布一两周的新版本除非你特别需要某个新特性否则可以让子弹飞一会儿等别人把坑踩完再升级。第三如果你准备把MinIO用于一个长期运行的服务确定版本之后最好固定住不要跟着最新版频繁变动。我见过有人追新第二天就碰到某个功能行为变化导致脚本失效的情况虽然最后都解决了但白白浪费了时间。还有一个容易被忽略的点MinIO的发布页面同时提供了校验文件。Windows下下载完exe之后可以在PowerShell里用Get-FileHash算一下哈希值和官方给的对一下。这一步不要省尤其是从镜像站或别人转存的链接下载时哈希比对能快速发现文件是否损坏或被篡改。2.3 单机模式与分布式模式要怎么取舍MinIO有两种核心运行模式单机模式和分布式模式。单机模式最简单一条命令就能启动一个实例所有数据都存储在本地磁盘上。它适合开发调试、个人使用、小型团队内部共享缺点是如果磁盘坏了数据就可能丢因为只有一个副本。分布式模式则会把数据分散到多个节点配合纠删码算法即使部分节点或磁盘损坏也能保证数据可读。我的建议是第一次接触MinIO时别想太多先跑单机模式。把下载、启动、访问控制台、读写数据这个闭环走通再考虑是否要加机器做集群。Windows环境下做分布式集群除了MinIO本身的知识你还要处理多机网络、时间同步、端口规划、防火墙策略这些对于新手来说信息量太大。先单机再扩展这个顺序不会错。单机模式启动时只需要指定一个数据目录MinIO会把所有桶和对象都放在这个目录里。这意味着备份和迁移思路变得很简单把目录整个复制走在另一台机器上启一个新实例数据就过去了。这种目录即数据的设计在Windows上非常友好你不需要理解复杂的卷映射和存储池概念。3. Windows下的实际下载安装与首次启动3.1 下载exe与准备程序、数据目录具体下载方式不打算报一串网址你记住一个关键词官方发布页面。找到Windows对应的exe下载项通常文件名里带着windows-amd64之类的标识。下载完成后我建议把它放在一个固定的程序目录里比如C:\minio然后重命名成minio.exe这样后续命令写起来简洁路径也好记。千万不要把exe直接丢在桌面或下载目录里一来权限问题多二来路径里如果有中文或空格后面写脚本时容易出幺蛾子。数据目录则是另一个重要概念。MinIO启动时必须指定一个数据目录这个目录存放着所有的桶数据。我个人的习惯是把程序目录和数据目录分开比如程序在C盘数据放在D:\minio-data。理由很直接程序重装不影响数据数据盘也要单独做空间监控和备份。你可以想象一下如果程序和数据挤在同一个系统盘某天系统盘空间满了可能连系统都卡顿更别说正常提供存储服务了。准备目录时可以顺手验证一下exe是否可运行。打开PowerShell切换到程序目录执行以下命令.\minio.exe --version如果能看到版本号输出说明文件没问题可以继续往下走。如果提示无法加载多半是文件不完整或者被杀毒软件隔离了先去确认一下防病毒软件的隔离列表把MinIO目录加入白名单再试。3.2 环境变量与启动参数的正确写法MinIO启动的核心命令不复杂但第一次接触的人容易在两端翻车一是端口二是根凭据。先看端口问题。MinIO默认有两个端口9000是API端口所有通过S3协议读写数据的请求都会走这个端口9001是Web控制台端口浏览器访问控制台界面时用这个端口。如果你的机器上这两个端口已经被其他程序占用了MinIO会启动失败或服务异常。遇到这种情况可以通过下面的方式指定新端口.\minio.exe server D:\minio-data --address :9010 --console-address :9011--address控制API端口--console-address控制控制台端口冒号前面的空字符串表示监听本机所有网卡的对应端口。再看根凭据。MinIO的根用户相当于整个存储系统的超级管理员最初版本里是通过MINIO_ACCESS_KEY和MINIO_SECRET_KEY两个环境变量设置的现在官方推荐使用MINIO_ROOT_USER和MINIO_ROOT_PASSWORD。如果在启动之前不设置这两个环境变量新版本的MinIO会随机生成一组凭据并打印在启动日志里这样虽然能跑起来但凭据管理就会变麻烦。所以我强烈建议在启动前就把环境变量设好。在PowerShell里可以这样设置$env:MINIO_ROOT_USER admin $env:MINIO_ROOT_PASSWORD 此处换成你自己的强密码在CMD里则是set MINIO_ROOT_USERadmin set MINIO_ROOT_PASSWORD此处换成你自己的强密码注意在PowerShell和CMD里设置环境变量的方式不通用别混用。设置完成后再执行启动命令。有一点要提醒如果你直接在当前终端里设了环境变量那么这个变量只在当前终端窗口内有效关掉窗口再重新打开就没了。所以要养成把启动命令写成一个批处理脚本的习惯后面服务化时也需要这个脚本。3.3 第一次启动时日志里到底写了什么启动MinIO之后屏幕上会打印一堆启动日志。很多人第一次看到这些日志时容易发懵其实关键信息就几处。日志里会告诉你API端口监听在哪里、控制台端口监听在哪里、数据目录初始化情况。如果你没有提前设置环境变量日志里还会直接打印随机生成的临时根凭据包括用户名和一串很长的密码。这里有一个非常重要的操作习惯无论如何第一眼就要确认自己设置的密码是否生效以及API端口和控制台端口是否和预期一致。如果发现端口不对或者凭据没有生效不要继续往下操作先停下来排查环境变量和启动参数。我遇到过一位同事启动日志都滚了好几屏才发现自己根本没设置环境变量MinIO随机生成了一个临时密码结果他复制出来到控制台登录时又没复制全花了快一个小时才反应过来。首次启动完成后程序会在数据目录下生成一些系统文件用于记录存储配置和内部状态。这些系统文件不要手动去修改或删除否则可能导致整个实例无法识别已有的桶数据。你只需要知道一件事以后只要用同一个数据目录启动之前创建的桶和数据就都还在。这也是MinIO部署里数据目录是最重要的资产这个说法的由来。如果你的启动日志中出现了类似无法监听端口、目录无权限、文件被占用之类的错误不要慌这是好事至少问题暴露在了最开始。端口问题按前面说的方法换端口目录权限问题检查一下当前用户对数据目录是否有完全控制权文件占用则多半是之前的进程没有退出干净用任务管理器结束掉再启动。3.4 控制台里把存储跑起来当启动日志显示正常后打开浏览器访问控制台地址。默认情况下本机访问就是http://127.0.0.1:9001如果你修改了端口就访问http://127.0.0.1:对应端口。首次打开控制台会要求输入用户名和密码这里的凭据就是前面设置的环境变量值或者是日志里临时生成的根凭据。登录进去后你会看到一个仪表盘界面左侧是桶、访问策略、用户、设置等菜单。第一步操作是创建一个桶。点新建桶起一个名字注意桶名只能使用小写字母、数字、短横线和点而且要全局唯一。Windows用户此时容易顺手起一个D:\test这样的名字这种包含符号和反斜杠的名称是不合法的尽量用简单的英文小写加短横线。创建桶之后可以试着上传一个文件。直接在控制台里拖入一个文本文件上传完成后点击文件能看到对象的基本信息、下载按钮和分享链接。到这里MinIO在Windows上的安装部署已经算基本跑通了。从下载到控制台里出现第一个对象这条路走通之后后续所有复杂配置都是在这个基础上加砖添瓦。4. 把MinIO变成Windows系统服务两种做法4.1 注册成Windows服务推荐如果你只是临时调试启动窗口可以一直开着CtrlC结束也没问题。但如果你想让它长期提供服务比如放在内网当共享存储就必须解决电脑重启后自动运行退出登录后仍然运行后台常驻这几个问题。最简单的思路就是把MinIO注册成Windows系统服务由系统来管理它的启动、停止和崩溃恢复。这里我推荐使用一个在Windows运维圈子里很常见的服务包装工具名字缩写是NSSM。它的作用是把任意一个可执行程序包装成Windows服务来运行。你不需要看懂它的全部功能只要按下面的步骤操作就能完成注册。先把NSSM工具解压到一个目录然后用管理员权限打开命令行执行nssm install MinIO执行后会自动弹出配置界面。在Program路径里填入minio.exe的完整路径比如C:\minio\minio.exe在Startup directory里填C:\minio这个目录是程序的工作目录很多配置读取会依赖它在Arguments里填server D:\minio-data --console-address :9001。注意这里不要再占用默认9000端口如果9000空闲可以不写--address。最关键的一步在这个界面里的Environment选项卡。在这里可以添加环境变量MINIO_ROOT_USER和MINIO_ROOT_PASSWORD等于把之前临时设置环境变量的操作固化到了服务配置里。填完之后点Install Service服务就注册完成了。之后你可以通过服务管理工具或者命令行来启动它nssm start MinIO服务启动后MinIO就在后台运行了即使你退出登录、关掉命令行窗口它也不会停。开机时服务管理器会自动拉起MinIO无需人工干预。这种方案是我在Windows上部署各种自研工具的通用思路稳定可靠排查起来也直观服务状态一目了然。NSSM在Windows 32位和64位系统上有不同的版本下载时选对架构不然可能报错。还有一个小细节MinIO的数据目录如果是放在另一块磁盘的分区里服务启动时的用户身份必须对该分区有读取和写入权限。如果你的数据盘是NTFS格式但服务默认账户权限不足启动日志里就会出现目录访问失败这种问题在Windows上很常见。4.2 用任务计划程序实现自启的保底方案不是每个人都愿意安装额外的NSSM工具也有些人所在的内网环境严格限制了软件安装权限。这时候可以退而求其次用Windows自带的任务计划程序实现开机自启。任务计划程序的思路是新建一个计划任务触发条件选择计算机启动时操作指向启动MinIO的批处理脚本并勾选使用最高权限运行。为了让MinIO能继承环境变量你需要先写一个批处理脚本把环境变量和启动命令都放在里面。比如新建一个start-minio.batecho off set MINIO_ROOT_USERadmin set MINIO_ROOT_PASSWORD此处换成你自己的强密码 C:\minio\minio.exe server D:\minio-data --console-address :9001把这个脚本放在一个固定的目录里然后在任务计划程序里让它开机时运行。这种方式和系统服务的区别在于计划任务默认会在登录会话里启动程序所以窗口会显示在桌面上如果你选择了不管用户是否登录都要运行那MinIO会在后台以系统级会话运行没有可见窗口。我在实际使用中发现任务计划方式有两个常见问题。一是批处理脚本的编码问题如果脚本里包含中文路径或注释保存时编码不对运行起来会乱码甚至直接报错二是如果脚本里设置密码时有特殊字符例如感叹号、百分号CMD在解析时可能会吞掉部分内容。所以我的建议是宁可把脚本内容写简单一些所有密码尽量只用字母和数字组合也不要因为追求复杂密码给自己挖坑。能注册服务就注册服务实在不行再用计划任务。4.3 防火墙放行与端口确认服务启动之后如果不做防火墙配置本机能访问局域网里其他机器却连不上。因为Windows防火墙默认会拦截入站连接MinIO又不像普通软件那样在安装时自动弹窗要求放行。如果你用的是PowerShell可以在管理员模式下执行以下命令放行9000和9001端口New-NetFirewallRule -DisplayName MinIO API -Direction Inbound -LocalPort 9000 -Protocol TCP -Action Allow New-NetFirewallRule -DisplayName MinIO Console -Direction Inbound -LocalPort 9001 -Protocol TCP -Action Allow如果你更习惯图形界面就打开防火墙的高级设置在入站规则里新建两条TCP端口规则。放行之后用netstat检查端口监听状态netstat -ano | findstr :9000 netstat -ano | findstr :9001确认状态是LISTENING就说明端口已经正常监听了。接下来从另一台电脑上访问这台Windows机器的局域网IP加端口如果能打开控制台登录页说明防火墙配置生效。这里多说一句安全话题除非你有明确需求否则不要把MinIO的API端口直接暴露到公网。MinIO支持复杂的访问策略和TLS配置但那是另外的主题。在内网使用场景下防火墙只需要放行给同事访问即可不要图省事把范围设成所有计算机更不要通过路由器的端口转发把它映射到公网上去。5. 装完之后的验证和这几类Windows坑5.1 用MinIO自带客户端线验证上传下载很多人安装完MinIO之后只在控制台里传了一个文件就以为部署完成了。如果这台机器只是自娱自乐那确实无可厚非但如果你打算让它对接其他程序我强烈建议用客户端工具做一次完整的读写验证。MinIO官方提供了一款命令行客户端工具名字叫mc在Windows下同样是一个exe文件下载后放到C:\minio目录和minio.exe放一起。先用mc给本地实例配置一个别名这里把别名设为local.\mc.exe alias set local http://127.0.0.1:9000 admin 你的密码之后可以创建桶、上传文件、查看文件、下载文件完整走一遍.\mc.exe mb local/test-bucket .\mc.exe cp C:\temp\sample.txt local/test-bucket/ .\mc.exe ls local/test-bucket .\mc.exe cat local/test-bucket/sample.txt如果这些命令都正常返回结果说明MinIO实例的API接口是健康的S3兼容协议也走得通。你可以再用mc生成一个临时分享链接看看通过链接能否下载文件这一步能直接验证匿名访问和分享功能.\mc.exe share download local/test-bucket/sample.txt我自己搭完一个MinIO实例后都会跑一遍这个最小验证集整个流程不超过两分钟却能省掉后续联调时的大把排查时间。很多所谓MinIO装不上的问题最后发现其实只是没做这个基础验证导致问题被带到了下游。5.2 备份、升级和回滚的基础流程Windows下的MinIO备份逻辑非常朴素停掉服务把整个数据目录复制走就完成了一次冷备份。这个操作的前提是服务处于停止状态或至少没有持续的写操作否则复制出来的目录可能处于中间状态数据不一致。你可以用一条命令把备份流程串起来Stop-Service MinIO Copy-Item D:\minio-data D:\minio-data-backup -Recurse Start-Service MinIO升级也很简单。先把旧版本的可执行文件留一份备份然后停服务、替换exe、再启动。启动后观察日志有没有报错再跑一下前面说的mc最小验证集确认读写正常。整个过程可以控制在五分钟以内。这里有一个特别重要的经验MinIO支持从旧版本升级到新版本但官方不保证从新版本回退到旧版本后数据一定能正常读取因为新版本有可能升级了内部的元数据格式。所以升级前最好留意当前版本与目标版本之间的跨度如果跨了太久先看官方更新说明再决定是否直接跳级。如果升级后发现业务故障回滚操作就是把之前备份的旧exe替换回来再启动服务。但请记住这只是程序层面的回滚如果新版本启动时已经改写了元数据回到旧版本不一定能识别。所以务实的做法是升级之前先做一次数据目录备份这样即使程序层面回滚失败也能从备份恢复。5.3 Windows下最容易踩的坑与应对我在Windows上部署MinIO的次数不算少各种奇怪问题也遇到过不少这里挑几类最典型的希望你能绕开。第一类是端口占用。Windows系统里有一些服务会默认占用一些端口比如某些管理代理可能会监听9000端口。如果启动日志提示端口已被使用用netstat -ano找到占用进程的PID再去任务管理器确认是什么程序要么换端口要么停掉占用程序。不要绕过问题可以绕行之前先看占用程序是什么以免误伤系统服务。第二类是防病毒软件的误报和拦截。MinIO的exe是从网上下载的独立可执行文件有些防护软件会把它当成潜在的不安全程序。表现方式差别很大有可能是下载完成后文件被删也有可能是运行到一半进程被结束还有可能是注册了Windows服务后系统重启时被拦截。遇到这种情况不要急着关闭防护体系正确的做法是把MinIO的目录加入排除项并校验文件哈希确认文件来源无误。第三类是中文路径和空格路径问题。Windows用户习惯在路径里使用中文比如D:\软件\MinIO数据这在许多普通软件里没问题但在命令行工具、批处理脚本、环境变量组合操作时很容易引起解析问题。我见过一个案例数据目录放在带空格的长路径下结果任务计划程序启动时怎么都找不到路径。最省心的办法就是不管是程序目录还是数据目录全部用纯英文路径不要有空格不要有中文。第四类是日志乱码问题。Windows控制台默认的编码格式对UTF-8日志不太友好MinIO启动日志里的中文或特殊字符可能显示成乱码。这不影响实际功能但会干扰你阅读报错信息。解决方法是使用Windows的新版终端应用或者把控制台代码页切成UTF-8。如果你在排查问题不要因为乱码就忽略日志可以先把日志重定向输出到文件再按UTF-8编码打开文件查看。第五类是磁盘空间不足。MinIO的存储占用会随着上传对象持续增长而Windows本身对磁盘空间不足的感知往往比Linux更迟钝很多应用不会及时报错。你需要为数据盘单独设置空间监控比如定期检查剩余空间或者利用Windows自带的任务计划调用脚本通知。否则等到业务侧反馈上传失败再去看磁盘可能已经满了很久了。第六类是文件句柄和并发限制。Windows对单个进程可打开的文件句柄数量、网络连接数有自己的限制逻辑和Linux不太一样。如果你把MinIO用于较高并发的访问测试可能会发现Windows下的性能数字明显低于同配置的Linux环境。这不是配置错误而是平台特性。如果是生产级高并发需求建议趁早换用更适合的服务器系统如果只是开发联调和内网小规模使用完全不必在意。5.4 配置TLS的可选补充正规一些的办公环境里浏览器对HTTP访问会给出不安全的提示MinIO控制台和管理接口也建议用HTTPS保护。MinIO支持在启动时加载TLS证书原理不复杂在数据目录下准备好证书文件和私钥文件文件名需要符合MinIO约定的命名方式MyPublic.crt和MyPrivate.key。把证书放好后重启服务MinIO就会自动启用HTTPS访问。这个配置不难但我一般不会在第一次部署时设置因为要先确保HTTP模式下的所有功能都正常再引入证书。排错的思路也一样先排查基础通信再考虑加密层。如果你所在组织已经有统一的证书签发流程可以向管理员申请证书如果没有可以先用自签证书跑通。记住自签证书只适合测试环境业务使用还是要用可信证书。6. 我的几个部署习惯把这些年的部署经验整理一下有几个习惯我觉得是通用的。第一个习惯程序目录、数据目录、备份目录永远分开。程序在C盘、数据在D盘、备份在另一个磁盘或者移动硬盘这样系统重装不会丢数据数据盘出现故障时也有备份兜底。目录命名和端口选择不要随意全局固定一套规则比如所有存储服务都监听固定端口段方便防火墙上规则统一管理。第二个习惯所有密码和访问凭据都通过环境变量传入绝不写死在启动命令里。命令行有一个坑就是你输入过的内容会留在历史记录里如果启动参数中直接带密码等于把密码明文留在了本机。用环境变量方式传入既避免了历史记录泄露也方便服务注册工具统一管理。环境变量本身也存在被读取的可能但至少比命令行参数泄露的风险低一个量级。第三个习惯装上之后立刻跑一遍完整的读写验证然后把验证命令存成一个脚本文件。下次升级、重装、迁移后直接执行脚本几十秒就能确认服务健康。我甚至会把验证脚本纳入到自己的部署检查清单里每次部署完不看日志先跑验证脚本脚本通过就算成功。最后一个建议无论是什么部署场景都不要把MinIO想得过于简单。它的安装门槛确实不高一条命令就能启动但真正做到服务化、可维护、数据安全还是需要你认真对待数据目录的备份、防火墙的收敛、端口的管理和版本的控制。只要你把这些基础工作做扎实MinIO在Windows上也能成为一个非常稳的存储节点。