我通过 ntfsclone + dd (mbr) 将我的 win7 系统磁盘映像到 Ubuntu LiveCD 实例中的 Win7 动态磁盘 RAID1 磁盘之一(仅写入 win7 RAID1 阵列中的一个磁盘)。我成功完成了此操作,然后在完全安装 Ubuntu 11.10 后能够将映像重新加载到 Virtual Box 中。
现在,我正在尝试通过 mdadm 在 Ubuntu 中设置 RAID1 软件 RAID(安装在旧的 win7 系统驱动器上),我想知道我是否可以这样做并让它重新同步两个驱动器上的数据,而不会破坏动态磁盘 RAID 配置并且不会丢失任何数据(最重要的)?
我意识到我应该从一开始就这样做(即使在 LiveCD 中)...如果这不可能 - 也许,我可以重新分区未写入的第二个 RAID 磁盘,然后让它重新同步?或者我应该使用 dd 重新映像第一个 RAID 驱动器 -> 第二个驱动器,然后运行 mdadm?
这里的目标是拥有一个双启动的 Ubuntu/Win7 系统,它可以从 RAID1 阵列读取/写入...另外,不想使用 fakeRAID,而是软件 RAID
答案1
经过一番艰苦的搜索,找到了解决方案的答案......
含解决方案的论坛: http://ubuntuforums.org/archive/index.php/t-1776909.html
--------- 论坛内容以防消失等。------
我有一台计算机,在 Ubuntu 11.04 和 Win7(企业版?)之间进行双启动。
我有一块 SDD,我已将其拆分用于操作系统,还有一对 HDD,我想将它们组合成 RAID0。我在一些地方读到 Linux 应该能够处理 Win7 的软件 RAID,并找到了这篇有用的帖子:http://ubuntuforums.org/showthread.php?t=833653&highlight=dynamic+disk
我按照说明操作,但在尝试安装驱动器时却遇到了困难。
我做了什么:1.加载Win7
将两个驱动器都设置为 GPT
构建 RAID0
格式化为 NTFS
验证其是否有效(复制一些文件到其中)
启动 Ubuntu
运行:cat /proc/partitions major minor #blocks name
8 0 312571224 sda 8 1 1024 sda1 8 2 130048 sda2 8 3 312440118 sda3 8 32 312571224 sdc 8 33 1024 sdc1 8 34 130048 sdc2 8 35 312440118 sdc3 8 16 78150744 sdb 8 17 102400 sdb1 8 18 38972416 sdb2 8 19 1 sdb3 8 21 39072768 sdb5 8 48 156290904 sdd 8 49 156288000 sdd1 9 0 624880128 md0
运行:sudo mdadm --build /dev/md0 --chunk=64 --level=0 --raid-devices=2 /dev/sd[c|a][1-3] /dev/sd[a|c][1-3] mdadm:阵列 /dev/md0 已构建并启动
运行:sudo mount -t ntfs-3g /dev/md0 /media/raid0 缺少 NTFS 签名。无法挂载“/dev/md0”:参数无效 设备“/dev/md0”似乎没有有效的 NTFS。也许使用了错误的设备?或者是整个磁盘而不是分区(例如 /dev/sda,而不是 /dev/sda1)?还是相反?
我已经按照所有可能的组合(8)交换了设备,每次都得到相同的结果。
通过 Google 进一步搜索,我发现其他人也已经实现了这个功能,所以我希望我只是错过了一些愚蠢的东西。
有什么建议么?
---- 后续帖子 ----
因此,在发布这篇文章的过程中,我想“为什么不尝试 MBR 而不是 GPT”?
我重新开始,在磁盘上使用 MBR,并收到了非常不同的分区列表: 8 32 312571224 sdc 8 33 312568832 sdc1 8 0 312571224 sda 8 1 312568832 sda1 8 16 78150744 sdb 8 17 102400 sdb1 8 18 38972416 sdb2 8 19 1 sdb3 8 21 39072768 sdb5 8 48 156290904 sdd 8 49 156288000 sdd1 9 0 625137664 md0
之后对我来说正确的组合是:sudo mdadm --build /dev/md0 --chunk=64 --level=0 --raid-devices=2 /dev/sda1 /dev/sdc1
因此看起来 Linux 可以处理 GPT,并且可以处理 MS 的动态磁盘(Win 用于 RAID),只是不能同时执行这两项操作(目前!)。
我目前正在 Ubuntu 11.04 和 Win 7 上安装和创建文件,并且可以在任一操作系统上访问它们!:popcorn:
我希望这对某些人有帮助。:D
答案2
有库可以读取Windows逻辑磁盘元数据的工具:
# ldmtool scan
[
"<GUID>"
]
# ldmtool show diskgroup <GUID>
{
"name" : "LYZKOV-PC-Dg0",
"guid" : "<GUID>",
"volumes" : [
"Volume2",
"Volume1",
],
"disks" : [
"Disk1",
"Disk2"
]
}
您可以通过以下方式构建逻辑卷:
# ldmtool create all
新的设备节点现在应该驻留在/dev/mapper/
:
# ls /dev/mapper/
/dev/mapper/ldm_vol_LYZKOV-PC-Dg0_Volume1 /dev/mapper/ldm_vol_LYZKOV-PC-Dg0_Volume2
答案3
Linux 不支持 Windows 软件 RAID。通过像你那样写入它,你已经损坏了它。让 Windows 和 Linux 都能识别它的唯一方法是使用 fakeraid,无论如何,这是一种不可靠的赌博。
既然你无论如何都要双启动,我建议你忘掉 raid1,只定期备份第二个磁盘(最好在其余时间断开连接)。请记住,RAID 不是备份系统。raid 的目的是提高性能和正常运行时间,而不是防止数据丢失。你仍然需要定期备份。