ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Proxmox双节点共享存储实战:StarWind VSAN Free部署指南

Proxmox双节点共享存储实战:StarWind VSAN Free部署指南 早在2015年我第一次接触StarWind VSAN Free时它还是个需要装Windows Server、手动配iSCSI target的“重家伙”。如今几年过去StarWind VSAN Free已经成了不少Proxmox用户在双节点场景下的首选共享存储方案——免费、不挑硬件、配置起来还有点“手工耿”式的乐趣。我自己在几套生产环境里跑了两年多踩过不少坑也总结了一些不算通行的经验这篇就把StarWind VSAN Free在Proxmox VE上的整套玩法掰开揉碎了讲清楚。先说明白这东西能干什么StarWind VSAN Free本质上是一个运行在Windows虚拟机里的iSCSI Target软件把两台物理节点上的本地磁盘虚拟成一个高可用的共享存储池再通过iSCSI协议把这块“虚拟盘”吐给Proxmox VE使用。两个节点互为镜像任何一个节点宕机另一台还能继续提供服务。对于预算有限、又不想上商业存储阵列的小型虚拟化环境这套方案几乎是性价比天花板。适合谁看手头有两台以上Proxmox服务器、正在为“怎么给集群搞共享存储”发愁的人已经装了StarWind但遇到性能或稳定性问题的人还有纯粹想了解软件定义存储到底怎么落地的爱好者。下面我按自己的实操习惯从头到尾走一遍完整流程。1. 方案选型为什么是StarWind VSAN Free Proxmox1.1 两种共享存储路线的取舍Proxmox VE做集群最头疼的就是存储。官方支持的路数有两条一是走Ceph二是走共享存储NFS/SAS/iSCSI。Ceph虽然天生为Proxmox设计但三节点起步、万兆网卡推荐、每节点至少要两块盘系统盘加OSD盘对小环境来说成本和复杂度都不低。共享存储路线里买一台物理NAS或SAN是常规操作但一台像样的双控存储动不动几十万小项目根本吃不消。StarWind VSAN Free这时候就显得特别香——它让你用已有的本地磁盘两节点就能拼出一个高可用共享存储成本几乎等于零。选StarWind而不是其他软件我有几个实际理由不需要指定主备两个节点互为镜像不存在“主存储挂了备存储还要手动切”的问题。虚拟盘可做快照StarWind支持对虚拟磁盘做快照这在Proxmox里做虚拟机备份时非常有用。兼容性极好Proxmox的iSCSI Initiator是内核级的跟StarWind的配合相当稳定。懒人友好StarWind提供一个自动配置向导十几分钟就能把镜像盘配好。当然它不是没有缺点。最明显的就是它需要一台Windows虚拟机来承载这台虚拟机的磁盘本身又要占存储空间形成“套娃”结构。另外性能上限取决于两台宿主机之间的网络带宽和延迟必须走专线或直连。1.2 网络拓扑怎么设计才稳这一节想重点强调网络规划。我见过太多人图省事把iSCSI流量和业务流量混在一个交换机上结果一个备份任务就把存储链路打满所有虚拟机卡成狗。我的建议是至少准备两个网络管理/业务网络跑Proxmox的Web管理界面、虚拟机业务流量。存储专用网络跑StarWind的镜像同步和iSCSI数据传输。这个网络最好走独立交换机或直连网线万兆优先千兆起步。我有一次在客户现场没条件拉第二根网线就把Storage流量绑在了1Gbps的管理网络上。结果StarWind主机在线迁移的时候虚拟机会随机卡顿几十秒最后实在忍不了加了一根直连线才算根治。1.3 双节点 vs 三节点哪种更适合你StarWind VSAN Free官方说最少两节点就能跑但两节点有个天然缺陷没有第三方仲裁节点witness的话发生脑裂时数据无法自动裁决。我实际测试下来两节点场景下StarWind要求至少有一个额外的见证节点witness VM来参与仲裁否则集群根本建立不起来。这里有个关键点见证节点可以在其中一台宿主机上也可以在第三台机器上。因为见证节点只存元数据负载几乎可以忽略。如果你的预算只够两台物理机那就在其中一台上放个1核1GB的小虚拟机当见证完全可行。双节点 本地见证适合靠一台机器上的虚拟机承载见证成本最低。双节点 异地见证适合有第二机房或NAS的环境能容忍跑在异地的小虚拟机。三节点以上适合规模更大、性能要求更高的场景StarWind也能支持但免费版限制虚拟盘容量这点后面细说。2. 部署前准备硬件、系统、版本四件套2.1 硬件最低要求与推荐配置StarWind VSAN Free的官方最低要求很谦虚1核CPU、1GB内存就行但那只是“能跑”。我建议按下面这个标准配省得后续升级还得推倒重来组件最低要求推荐配置备注CPU2核4核Windows VM里要跑StarWind服务吃CPU不多但磁盘队列深的时候需要多核内存2GB4GBStarWind缓存、iSCSI会话、系统自身开销系统盘40GB120GB SSDWindows Server系统盘别跟数据盘混在一起数据盘无特别要求NVMe SSD 或 HDD x 2一个节点一个必须能被Windows识别为本地磁盘网络1GbE10GbE 两张网卡一张业务一张存储走流量虚拟化层无Proxmox VE 6.x / 7.x / 8.x只要是IPv4网络都能跟Windows VM兼容2.2 需要的软件与版本选择StarWind VSAN Free对Windows版本很挑剔——官方支持Windows Server 2016/2019/2022以及Windows Pro/Enterprise的特定版本。我实测下来Windows Server 2019最稳服务管理器界面友好iSCSI Initiator自带。Windows Server 2016也可以但需要手动装一些补丁才能识别某些NVMe盘的TRIM命令。Windows 10 Pro1909以上有人用来跑测试环境官方没支持但能用。Windows 11不建议StarWind对Win11的驱动兼容性还没完全验证。Proxmox这边我目前的主力是7.4和8.x两个大版本都能正常对接。8.x升级OpenZFS之后StarWind的虚拟盘和快照功能也没出过冲突。注意StarWind VSAN Free版本对虚拟磁盘容量有硬限——官方限定虚拟盘不超过2TB社区里有人说能到4T但我测试发现超过2T之后的快照会有同步异常。如果你预算够建议直接买正式版授权否则规划好虚拟机的容量分配别一上来就贪大。2.3 需要下载的软件包清单这里我不想列一大堆链接直接说需要准备哪些东西StarWind VSAN Free安装包去官网下载ISO大约1GB里面有完整的Windows Server评估版和StarWind安装器。当然你自己另装正版Windows Server也可以只要是同一大版本就行。StarWind V2V Converter星风的虚拟机格式转换工具后面单独讲它能把Windows或Linux虚拟机从VMDK、VHDX等格式转换成Proxmox能认的qcow2或raw。很多人在线迁移时都用它。Proxmox VE的ISO镜像如果还没装Proxmox先把宿主机搞定。Windows Server ISO如果不用StarWind自带的评估版自己准备一个2019的ISO。3. 一步一步在Proxmox里搭建VinS Free节点3.1 创建Windows虚拟机关键参数怎么填打开Proxmox Web界面“数据中心 你的节点 虚拟机”点“创建虚拟机”。这一步别急着用默认值有几个参数我都是反复调过的VM ID比如101、102建议跟宿主机节点号对应。ISO镜像选择Windows Server 2019或StarWind自带ISO。系统类型选来自动但如果你要装Windows建议用SeaBIOS别用OVMFUEFI因为StarWind的某些服务组件对UEFI下的磁盘签名兼容性不佳。磁盘这里有个巨坑——Windows VM的系统盘建议用virtio-blk或VirtIO SCSI。VirtIO SCSI在Proxmox 8.x下更快更稳但是装Windows时得先加载VirtIO驱动。所以我通常这样操作先创建一个2GB的小系统盘用IDE模式装好Windows驱动加载完再扩展。StarWind的数据盘随后再加一个大盘模式选择VirtIO Block。网络至少两块网卡第一块走vmbr0业务网络第二块走vmbr1存储专网。网卡型号选VirtIO是最好的延迟低吞吐高。内存至少2048MB全套服务起来实际占用大概1.2GB。创建完先别开机去“硬件”里把“SCSI控制器”改成“VirtIO SCSI”再把“启动顺序”里光驱优先级排到磁盘前面这样装系统时能直接读ISO。3.2 安装Windows Server并初始化磁盘这里我只提几个关键操作细节大家都懂分区时如果识别不到VirtIO磁盘记得在安装界面加载VirtIO的驱动映像。安装完成后跑一遍Windows Update把关键补丁全打上尤其是存储和网络相关的补丁。把StarWind服务账户的密码设成强密码并禁用自动登录安全第一。初始化磁盘这里有个容易忽略的点Windows Server默认的磁盘格式是GPT。StarWind在创建虚拟盘时需要“未初始化”的裸盘不能文件系统格式化。所以我们在“磁盘管理”里只做“初始化磁盘”但不要右键“新建简单卷”——这个操作会创建分区表StarWind的HaDeviceManager会认不出盘。我自己就犯过这个错初始化完顺手格式化了D盘结果StarWind向导列表里那个盘一直是灰色不可选后来查文档才发现它要求的是RawDevice。3.3 安装StarWind VSAN Free完整流程装好Windows系统把StarWind安装ISO挂载进去然后就可以启动安装程序了。跟着向导一路Next在组件选择界面全选默认即可。安装完成后桌面上会出现“StarWind Management Console”它会自动配置本机的iSCSI服务。我在两台虚拟机上都要走这一步。然后在其中一台的管理控制台里用“StarWind Management Console Connect to Computer”添加另一台节点的IP。此时两台机器的管理控制台就互通了。接下来是关键——创建高可用镜像设备在控制台里右键该节点选择“Add Device”。选择“High Availability (HA)”设备类型这是StarWind VSAN的核心。指定两个节点的IP和端口默认用3260端口。选择要使用的裸盘这里就能看到刚才初始化的数据盘了。设置虚拟盘名称比如proxmox-lun-1。选择仲裁方式在双节点场景下选择“Local Witness”或“Remote Witness”。等待同步完成这个阶段千万不要关机或重启。完成后你会看到两个节点上都有一个被镜像的“Device”。这时候它们对外暴露的iSCSI Target已经就绪了。3.4 在Proxmox上配置iSCSI存储Proxmox侧不需要安装任何额外软件因为内核自带iSCSI Initiator。我的步骤如下打开“数据中心 存储”点“添加 iSCSI”。在“目标”框里填StarWind节点的IP。点“搜索”按钮如果网络通它会列出Target的IQN比如iqn.2008-08.com.starwindsoftware:proxmox-lun-1。给这个存储起个ID比如starwind-iscsi。内容类型选“虚拟机映像”和“容器”。点添加。需要注意的是Proxmox会把iSCSI LUN直接映射成LVM卷组。所以在“存储”里你会看到该LUN被格式化为LVM并且显示可用空间。如果以后虚拟机要扩容磁盘得先在StarWind控制台里扩大虚拟盘容量再到Proxmox里LVM进行扩容。4. 用StarWind V2V Converter迁移现有虚拟机4.1 为什么需要V2V Converter很多人在Proxmox落地时已经有Hyper-V或VMwareESXi里的存量虚拟机。StarWind V2V Converter能把这些虚拟机从VMDK/VHDX格式转换成Proxmox支持的qcow2或raw格式然后直接挂载到Proxmox里。我自己的迁移场景是生产环境有一台运行在Hyper-V上的业务服务器Windows Server 2019还有一台Linux上的应用服务器。两台都要迁到Proxmox集群里而它们分别使用了VHDX和VMDK格式。如果不用V2V直接导成OVF再导进Proxmox格式兼容性和启动顺序调整能折腾死人。4.2 V2V Converter实操步骤这个工具可以在StarWind官网免费下载很小几十MB。运行环境可以是Windows也可以是Linux有命令行版本。我平时用Windows GUI版打开V2V Converter“源文档”选“本地文件”指向VHDX或VMDK。“目标文档”选“QEMU/Qcow2”或者“QEMU raw”。指定目标路径和文件名。开始转换。如果是关机状态下的虚拟机直接转开着机也能做热转换但强烈不建议文件系统一致性无法保证。转换完把生成的qcow2文件通过scp或rsync传到Proxmox的存储目录比如/var/lib/vz/images/205/。在Proxmox里新建虚拟机勾选“使用存在的磁盘”挂载这个qcow2文件。V2V转换有个特别好用的地方它能自动对齐分区和调整MBR/GPT引导不用你手动去修引导。我试过好几个迁移工具V2V在这个点上是做得最省心的。但有个问题要注意V2V Converter不支持融合同步的StarWind高可用盘作为源这相当于自己转自己会死循环。必须先把虚拟机关机然后从StarWind里导出一个静态镜像再用V2V转换。4.3 热迁移 vs 停机迁移的取舍如果你追求零停机Proxmox本身提供在线迁移但前提是虚拟机得存在共享存储上。也就是说你先得把虚拟机复制到StarWind提供的iSCSI盘上再使用Proxmox的“在线迁移”功能。但这里有个“鸡生蛋蛋生鸡”的问题你要把VM转到共享存储首先就得有共享存储。我的一般做法如果虚拟机是Linux且能接受几十秒的中断用rsync同步到共享存储再在Proxmox里“导入磁盘”。如果是Windows且业务对停机非常敏感先做文件系统备份再用V2V转换转换完做IP切换——这个过程也能做到分钟级。我遇到的大部分项目都接受“停机15分钟、30分钟内完成”的窗口。所以V2V转换在我这里的定位是“离线转换工具”而不是在线迁移方案。5. Proxmox启动延迟调优与常见问题排查5.1 虚拟机启动延迟Start Up Delay设置技巧Proxmox VE 8.x的“选项”里有一个叫“启动延迟”的字段单位秒不少新手根本不知道它有什么用。它的意思是当宿主机开机或集群节点启动时虚拟机自动启动之前要等多久。这玩意儿在StarWind场景下特别关键。因为StarWind的虚拟盘服务要等Windows完全启动、StarWind服务就绪、iSCSI会话建立Proxmox才能访问共享存储。如果Proxmox开机后立刻启动那些存在StarWind LUN上的虚拟机大概率会报“无法访问存储”或“块设备未就绪”。我的配置建议StarWind承载VM设成90秒以上。普通业务VMLinux设10~20秒。普通业务VMWindows设30~45秒。数据库类VM设60~90秒等数据库服务和文件系统完全挂载。别把启动延迟设得过长比如300秒不然一台物理机宕机重启整个集群业务恢复要等5分钟这在生产环境是不能忍的。5.2 排查思路与真实避坑记录5.2.1 StarWind服务导引了某些消息但iSCSI盘不出来这种情况十有八九是Windows VM没能在Proxmox启动的短时间内完成服务拉起。我排查过一台机器发现PVCProxmox VE Cluster里的节点重启后StarWind虚拟机在100秒内没上线导致宿主机上的虚拟机全部“存储不可用”。最后解决方案很简单把StarWind VM的启动延迟调高到120秒。这也是为什么我建议做计划内重启的时候先手动把StarWind VM启动了再去重启其他机器。5.2.2 iSCSI多路径会话失败双节点环境里我强烈建议开多路径MPIO这样一条存储网断了另一条顶上来。Proxmox上启用MPIO在StarWind控制台里确保“目标”支持多连接。在Proxmox的iSCSI存储配置里勾选“多路径”。安装multipath-toolsapt install multipath-tools。编辑/etc/multipath.conf加上StarWind设备配置。这里有个细节StarWind Free默认最多支持8个路径多路径会话建立后Proxmox会自动检测到/dev/mapper/mpatha之类的设备路径。如果配置完没生效先去multipath -ll看输出。5.2.3 快照崩溃或同步延迟过高StarWind虚拟盘的同步依赖网络质量。如果你发现HA设备状态一直显示“同步中”首先检查专线的丢包率。我遇到过一台节点网卡固件bug导致高速重传表现是同步进度卡在90%左右不动恢复网络后约一小时才完成。后来更新了网卡固件才解决。5.2.4 Windows VM磁盘签名一直在变这个坑得单列出来。当StarWind VM因宿主硬件变化重新开机时Windows可能会把“磁盘签名”重置导致StarWind找不到HA device。解决方法是在Windows的注册表里把HKLM\SYSTEM\MountedDevices清空并重启让系统重新初始化磁盘。但注意这个操作要非常小心别把系统盘的MountPoint也清理了。我通常是这样操作的关闭StarWind服务。备份注册表。删除损坏设备对应的项。重启系统重新打开StarWind服务。6. 免费版的限制与长期运维经验6.1 免费版到底能用多大容量官方明确StarWind VSAN Free限虚拟磁盘总容量不超过2TB。这个限制是所有虚拟盘加起来不超过2TB不是单个盘不超过2TB。我本来理解成每个盘2TB结果加第二块盘时同步一直失败一查文档发现是总量超了。如果超了会怎样StarWind会拒绝创建新的HA设备已经创建的盘继续能读但无法做任何扩容操作。这种“软锁”很折磨人规划的时候按1.8TB左右的冗余量预留。6.2 备份策略别把宝全押在镜像上StarWind HA镜像能防硬件故障但是不能防逻辑错误比如误删虚拟机。所以Proxmox层面还是要做备份。我的实践是用Proxmox自带的vzdump把虚拟机备份到另一个存储池比如本地磁盘或CIFS。对StarWind虚拟机本身额外做一次文件级备份因为它是整个存储服务的中枢。别把StarWind的存储盘和Proxmox虚拟机备份放在同一个物理节点不然节点挂了全完蛋。6.3 性能调优的几条实测心得几年用下来性能上最影响体验的就是网络和队列深度。我试过几种网卡直通、SR-IOV、virtio网卡三种模式结论如下virtio网卡 多队列配置简单吞吐足够CPU开销低。SR-IOV直接分配延迟更低但需要网卡和驱动支持配置复杂。硬件直通PCI Pass-through性能最接近物理机但在Windows VM里做热迁移比较麻烦StarWind的HA同步如果走了直通网卡VM迁移时同步会话会断。最后我定的方案是StarWind VM用virtio网卡存储专网走独立vlan把混杂模式和GRO关掉实测的4K随机读可以稳定在30K IOPS以上属于不惊艳但足够用的水平。6.4 别忘了监控StarWind虚拟机我建议至少配置三项监控Windows VM的CPU和内存使用率。StarWind同步状态用Management Console看。存储网络吞吐和丢包率。Proxmox自带“监控”面板可以看到宿主机整体数据但看不到Windows内部。我一般用Zabbix或者简单的SNMP抓一下StarWind相关指标。如果不想上监控系统至少定时跑一遍starwindservice -status。7. 写在最后的一些个人体会如果你问我要不要把生产环境完全押在StarWind VSAN Free上我的回答是小规模、双节点、预算有限的场景完全可以。我自己跑了两年的环境里StarWind的稳定性其实比很多商业存储还省心毕竟它的核心逻辑非常成熟——iSCSI Mirror没那么多花活。但如果你需要超过2TB的存储、需要原生复制去重之类的企业特性还是得往商业版或其他方案比如LINSTOR、Ceph上走。StarWind Free更像是一把锋利的手术刀用对了地方能解决大问题但别指望它变成瑞士军刀。最后分享一个小技巧给StarWind VM设置“开机自启”为1启动顺序排在所有业务VM之前。这样每次宿主机重启StarWind会第一个就绪其他VM的启动延迟可以设短一些整个系统的恢复时间能压到两分钟内。这个细节很多人都没注意到但实测对提升集群整体可用性非常关键。如果后续还有余力我建议尝试给StarWind加一块NVMe缓存盘做自动分层这样子普通HDD组的随机性能会有立竿见影的提升。不过那些都是后面的事了先把基础架构老老实实跑稳才是最实在的。
返回列表