作者:棋玉
背景:
很多客户在使用磁盘时选择了动态盘,又对这块动态盘创建了快照,之后在数据恢复或其他场景下用快照创建了新的磁盘,将新磁盘挂载到相同实例时,发现新磁盘显示无效。
问题原因:
动态盘通过LDM进行管理,对于mbr分区,LDM保存在磁盘的最后1MB(如下图所示),这1MB空间保存了磁盘信息,分区信息以及磁盘id,group id等,由于源磁盘和新磁盘最后1MB空间是一样的,两块盘的ldm数据库完全相同,对应的磁盘id,group id也是完全相同,导致系统只能识别一块磁盘。
可以通过微软的LDMDump工具查看LDM database的具体信息:
https://docs.microsoft.com/en-us/sysinternals/downloads/ldmdump
解决方案:
将新磁盘在无损数据的前提下从动态盘转换到基本盘:重新配置分区表并将system id从dynamic 改为ntfs。需要借助diskprobe工具 (包含在Windows XP Service Pack 2 Support Tools)https://www.microsoft.com/en-us/download/details.aspx?id=18546
Drives找到对应的磁盘,选择Set Active(以drive2 为例)
首先读取sector0的信息,view 以partition table展示,其中relative 表示起始扇区,total sectors 表示总扇区数。从截图看到起始扇区是63,总扇区数是41940929,总扇区数=结束扇区-开始扇区+1,因此结束扇区是41940991。
之后判断起始扇区和结束扇区是否正确,查看sector 63和 sector 41940991 都是空,说明起始和结束扇区不正确,需要在偏移位3的位置用ntfs 标志查找起始和结束扇区,分别是2048和41938943
转到sector 2048,View 以NTFS BootSector 展示, Hidden sector 设置为起始扇区2048,Total sectors 设置为结束扇区-起始扇区=41936895
最后查看sector0, View 以Partition table 展示,relatvie 设置为起始扇区2048,Total Sectors 为结束扇区-起始扇区+1=41936896.
sector 0以Bytes显示,将42改为07(42表示的是动态分区,07表示是NTFS 分区 ),write sector 进行保存。
重新扫描磁盘后,可以看到磁盘显示为一个基本盘,可以进行数据读取写入操作。