ARTICLE DETAIL

资讯详情

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

Windows 读取 Linux RAID 阵列,不必再搬回旧服务器:WinMD 驱动实战入门

Windows 读取 Linux RAID 阵列,不必再搬回旧服务器:WinMD 驱动实战入门 Windows 读取 Linux RAID 阵列不必再搬回旧服务器WinMD 驱动实战入门【免费下载链接】winmdWinMD项目地址: https://gitcode.com/gh_mirrors/wi/winmd小陈拆下退役 Linux 服务器的两块硬盘插进装了 Windows 的工作站想拷走资料。磁盘管理里两块盘都显示未初始化数据像凭空消失。这不怪手艺Windows 读取 Linux RAID 阵列本就先天不足——而 WinMD 这个开源驱动正是来补这块短板的。先搞清楚Linux RAID 在 Windows 眼里为什么是陌生盘mdadm 创建阵列时会往每块成员盘上写一份元数据专业叫法是超级块superblock。它记录了阵列级别、UUID、成员顺序、块大小等一整套信息相当于整组盘的合体说明书。Linux 内核启动时靠它把多块盘拼成一个逻辑设备。问题在于这份说明书用的是 Linux 自己的格式。Windows 的磁盘栈不认识它于是把每块成员盘当成普通空盘处理——数据其实还在只是没人帮你把散盘拼起来。WinMD 要干的正是在 Windows 里扮演那个拼盘的角色。WinMD 凭什么能认出阵列它读懂了盘上的身份证WinMD 是一个内核态驱动winmd.sys在系统启动和磁盘接入时逐块扫描磁盘去三个常见位置寻找 mdadm 的版本 1 超级块超级块版本藏身位置说明1.0磁盘末尾旧式布局适合整盘使用1.1磁盘开头常用于分区设备1.2距开头 64KB 处现代 mdadm 的默认选择找到后它会做三件事校验和验证、按 UUID 把同属一个阵列的盘归组、通过事件计数确认各盘状态一致。一盘凑齐后就生成一个新的卷交给 Windows。阵列是什么 RAID 级别就按什么算法处理RAID 0 条带数据按块拆开铺到各盘读写快但任何一块坏掉全盘遭殃RAID 1 镜像同一份数据写两份坏一块盘不慌RAID 4/5 奇偶校验前者固定一块校验盘后者校验盘在各盘间轮转用少量容量换容错RAID 6 双重奇偶允许同时坏两块盘适合盘多、数据金贵的场合RAID 10near、far、offset 三种布局都能识别兼顾条带的速度和镜像的安全Linear多盘简单串接容量直接相加实现上每个级别是独立模块src/下的raid0.c、raid1.c、raid45.c、raid6.c、raid10.c、linear.c各管一摊奇偶计算用了 SSE2 指令加速。核心数据结构都定义在src/winmd.h想读源码的人从这几个文件入手最顺。它还支持嵌套阵列即成员盘本身是另一个 MD 设备的情况这类冷门配置也能处理。十分钟上手右键 winmd.inf 就能装好获取驱动git clone https://gitcode.com/gh_mirrors/wi/winmd仓库里有mingw-amd64.cmake、mingw-x86.cmake等构建配置配合 CMake 能编译出 winmd.sys发行包里则直接带签名驱动和安装脚本找到winmd.inf右键选择安装驱动已签名Windows 7 及多数现代版本可直接装上重启部分情况插拔一下阵列盘即可打开磁盘管理此时应能看到新卷再装上文件系统驱动就能像普通磁盘一样访问了装了 Chocolatey 的可以偷懒一条命令choco install winmd。装完就能读数据还差一个翻译文件系统的驱动这一点最容易被新手忽略。WinMD 只负责把多块盘拼成卷卷上是什么文件系统它不管。btrfs 卷需要配 WinBtrfsext2/3/4 卷需要配 Ext2fsd。分工很清晰WinMD 出卷文件系统驱动出目录树两者配合才看得到文件。三种典型场景迁移、救急、双系统服务器退役或换新把整组盘拔下来插到 Windows 机器直接拷数据省去先在 Linux 里导出镜像的功夫系统救急Linux 主机起不来时用一台 Windows 工作站把 RAID 盘里的资料先抢救出来再慢慢修系统双系统轮换使用同一组盘在两套系统间来回挂载不用反复拆装硬盘老司机也要留神的几个坑一句话原则读数据很稳写入请谨慎。先备份再写入项目目前是 v0.1日常读写可用但重要数据务必先备份Win10/Win11 的签名门槛微软近年收紧了驱动签名要求个人开发者无法走企业签名通道。若安装报签名错误可考虑在 BIOS 里临时关闭 Secure Boot超级块版本有限制0.9 老版超级块暂不支持创建阵列时尽量用 1.x 系列功能边界要清楚整盘 RAID卷上再分区、reshape 重构、降级挂载缺一块盘硬挂、热插拔增减成员盘都还躺在 TODO 清单里遇到这些需求别抱期望卸载方式管理员命令行执行RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultUninstall 132 winmd.inf或把注册表HKLM\SYSTEM\CurrentControlSet\services\winmd\Start改为 4 禁用开源、免费、还在成长这个项目的现状WinMD 由 Mark Harmstone 开发维护——WinBtrfs 也是他的手笔。整个项目按LGPL 许可发布LICENCE文件写明了条款源码随便用、随便改。作者在README.md里明说欢迎各种有趣改动对社区协作是敞开大门的。仓库体量也不大一份 README、一份许可证、src/下十来个 C 源文件就是全部家当一个下午能读完。作为 v0.1它还谈不上成熟工具但在Windows 读取 Linux RAID这个老问题上是目前最对路的开源选择。后续会不会补上 reshape 和降级挂载值得隔几个月回来看一眼。下一步找一组闲置盘试起来最实在的入门方式是拿两块不重要的旧盘在 Linux 里建一个 RAID 1、写点测试数据再插到 Windows 上用 WinMD 挂载亲眼看着数据在磁盘管理里现身。跑通这一遍下次遇到服务器退役、系统救急这类事你会多一条很顺手的路。到那时你或许也会想既然 mdadm 的格式能被第三方读懂那 Windows 的原生存储功能什么时候能学会这套外语呢【免费下载链接】winmdWinMD项目地址: https://gitcode.com/gh_mirrors/wi/winmd创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表