如何正确访问Windows软件RAID 0?

我是一个全新安装的Ubuntu用户,我很想开始使用它。 但是,我的所有重要数据都在Windows软件RAID 0arrays上,我需要它才能保持在那里,因为我也是双启动Windows。 我需要在Ubuntu上访问这些数据,在访问之前无法真正完成任何操作。

我已经尽可能地研究了这个主题,并设法找到了一个非常有用的post:

  • 我可以在Ubuntu / Kubuntu中安装我的WinXP软件RAID 0arrays吗?

该文章描述了如何让Ubuntu看到由两个驱动器组成的Windows RAID 0arrays。 使用的主要命令是sudo mdadm --build /dev/md0 --chunk=64 --level=0 --raid-devices=2 /dev/sdd2 /dev/sdc2 。 根据该用户以及该post中的其他海报,它确实可行。 那很棒。

我还没有尝试过遵循这些说明。 为什么? 该post包含一个警告,说明如果输入错误的块大小,你不能写信给它; 这可能会导致问题,这是可以理解的。 我担心的是我的设置与他们的示例不同,我不确定应该为我的设置输入完全相同的命令。 我害怕通过做错来打破它,因此希望得到更有经验的人的建议。

这是我的设置与他们的示例不同的方式:

  1. 我有三个 1 TB驱动器,而不是两个驱动器(无论它们使用的是什么尺寸)。
  2. 我有两个分布在这三个驱动器上的RAID 0分区:一个500 GB和2.3 TB。 这意味着我在创建RAIDarrays时不需要使用完整的磁盘,而只使用其中的一部分。
  3. 我在几年前设置它时,至少对我的一个RAID 0分区使用了非默认的块大小 。 我不知道这个块大小是否与它们提到的块大小相同。 我的500 GB分区的块大小为4 kb(每个群集4096个字节),而我的2.3 TB分区的块大小为64 kb(每个群集65536个字节)。

来自sudo lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT,LABEL (仅适用于这三个RAID0驱动器)的相关输出是:

 NAME FSTYPE SIZE MOUNTPOINT LABEL sdb 931.5G ├─sdb1 1M ├─sdb2 127M └─sdb3 931.4G sdc 931.5G ├─sdc1 1M ├─sdc2 127M └─sdc3 931.4G sdd 931.5G ├─sdd1 166.7G └─sdd2 764.7G 

cat /proc/partitions (仅适用于那三个RAID0驱动器)的相关输出是:

 8 16 976762584 sdb 8 17 1024 sdb1 8 18 130048 sdb2 8 19 976631478 sdb3 8 32 976762584 sdc 8 33 1024 sdc1 8 34 130048 sdc2 8 35 976631478 sdc3 8 48 976762584 sdd 8 49 174763008 sdd1 8 50 801865728 sdd2 

Ubuntu中的“Disks”程序为我的驱动器显示以下分区:

 /dev/sdb: GUID Partition Table . /dev/sdb1: 1.0 MB, Microsoft LDM metadata. /dev/sdb2: 133 MB, Microsoft Reserved. /dev/sdb3: 1.0 TB, Microsoft LDM data. /dev/sdc: GUID Partition Table partitioning. /dev/sdc1: 1.0 MB, Microsoft LDM metadata. /dev/sdc2: 133 MB, Microsoft Reserved. /dev/sdc3: 1.0 TB, Microsoft LDM data. /dev/sdd: Master Boot Record partitioning. /dev/sdd1: 179 GB, Unknown. /dev/sdd2: 821 GB, Unknown. /dev/sdd: 136 MB, Unallocated space. 

我希望我在这里提供了足够的信息。 所以现在,我的问题是:我使用我的设置输入的正确命令是什么,以便我可以从Ubuntu访问我的两个Windows RAID 0分区?

非常感谢你提前。

我终于得到了这个工作,感谢这个Stack Overflowpost:用Windows恢复Windows跨磁盘(LDM)?

发现这些难以捉摸的信息非常困难。 这需要几天的搜索,我想我没有找到它因为post没有提到RAID,所以它没有出现在我的搜索结果中。 但它肯定适用于我的Windows软件RAID 0。

解决方案:

解决方案实际上非常简单。 有一个专门为此目的而构建的精彩工具,称为ldmtool 。 它能够读取和使用使用LDM(逻辑磁盘管理器)的Windows动态磁盘。 它默认不安装,但包含在Ubuntu存储库中。 我所要做的就是执行两个命令:

 sudo apt-get install ldmtool sudo ldmtool create all 

第一个命令安装ldmtool ,第二个命令自动为所有连接的Windows动态磁盘创建设备映射。 这些映射位于/dev/mapper/ ,可以使用mount -t ntfs /dev/mapper/mapfilename手动mount -t ntfs /dev/mapper/mapfilename ,但我不需要这样做 – 在运行上述两个命令后,Ubuntu会自动为我安装它们。 这就是我必须做的,我可以立即从文件浏览器访问它们!

链接的post包含每次启动时自动执行此操作的建议。 只需打开文件/etc/init/mountall.conf并添加行[ -x /usr/bin/ldmtool ] && ldmtool create all >/dev/null || true 紧接在exec mountall ...行之前的文件末尾附近的行。

对于这个解决方案的全部功劳归功于Christian Hudon,他在Stack Overflow上发布了它作为答案。 谢谢!

为了向此添加更多信息,我使用了一些其他ldmtool命令来查询我的卷以获取信息:

 sudo ldmtool scan /dev/sdd [ "e856a65f-e558-11e1-ae19-bc5ff435f790" ] sudo ldmtool show diskgroup e856a65f-e558-11e1-ae19-bc5ff435f790 { "name" : "Dan-PC-Dg0", "guid" : "e856a65f-e558-11e1-ae19-bc5ff435f790", "volumes" : [ "Volume1", "Volume2" ], "disks" : [ "Disk1", "Disk2", "Disk3" ] } sudo ldmtool show volume e856a65f-e558-11e1-ae19-bc5ff435f790 Volume1 { "name" : "Volume1", "type" : "striped", "size" : 1048578048, "chunk-size" : 128, "hint" : "D:", "partitions" : [ "Disk1-01", "Disk2-01", "Disk3-01" ] } sudo ldmtool show volume e856a65f-e558-11e1-ae19-bc5ff435f790 Volume2 { "name" : "Volume2", "type" : "striped", "size" : 4811194368, "chunk-size" : 128, "hint" : "E:", "partitions" : [ "Disk1-02", "Disk2-02", "Disk3-02" ] } 

没有必要运行上面的命令,因为ldmtool create all完成了创建映射所需的所有工作。 我刚刚将它们包括在内,因为我已经在问题中包含了有关我的设置的信息,因此这些信息可能对以后遇到这篇文章的人有所帮助。 特别是,我们可以看到,根据ldmtool ,我的两个动态卷都使用128的块大小,尽管在Windows中使用不同的块大小创建。 我想这意味着块大小和块大小不是同义词。 命令ldmtool show diskldmtool show partition可用于显示更多信息。

Ubuntu 14.04由Windows 7使用ldmtool由newby创建的LTS mount raid 1。** **

我有同样的问题。 使用上面的答案我很幸运,并安装了它

 gksu gedit /etc/init/mountall.conf 

通过改变线

  [ -x /usr/bin/ldmtool ] && ldmtool create all >/dev/null || true 

 /bin/ldmtool create all >/dev/null || true 

然后补充说

 /bin/mount /dev/mapper/ldm_vol_NAME-Dg0_volume1 /media/WHEREVER 

我的mountall.conf现在看起来像这样

  **fi /usr/bin/ldmtool create all >/dev/null || true /bin/mount -o rw /dev/mapper/ldm_vol_OCTO-CORE-Dg0_Volume1 /media/m exec mountall --daemon $force_fsck $fsck_fix $debug_arg end script** 

以前我有一个脚本用2行做同样的事情

 /usr/bin/ldmtool create all >/dev/null || true /bin/mount -o rw /dev/mapper/ldm_vol_OCTO-CORE-Dg0_Volume1 /media/m 

并补充说

 sh /home/ron/mirror to the end of /etc/rc.local 

现在它是在ubuntu启动时安装的

我不知道这对你有用!

其他答案仅部分在Mint 18.3中起作用。

自动安装Raid0驱动器有点挑战,因为编辑/etc/init/mountall.conf从未在我的系统中工作,我希望能够使用/etc/fstab的定义安装跨区卷,而不是使用/etc/rc.local脚本。

所以这就是我做的:

sudo apt-get install ldmtool

检查卷是否已被识别,并且可以正确安装:

sudo ldmtool create all

知道我的系统可以看到并写入驱动器。 我创建了一项服务 (遵循本网站的指示:( https://wiki.archlinux.org/index.php/Dynamic_Disks

etc/systemd/system/创建了一个名为ldmtool.service的文件, ldmtool.service包含服务描述:

 [Unit] Description=Windows Dynamic Disk Mount Before=local-fs-pre.target DefaultDependencies=no [Service] Type=simple User=root ExecStart=/usr/bin/ldmtool create all [Install] WantedBy=local-fs-pre.target 

要在启动时启用该服务:

sudo systemctl is-enabled ldmtool

要查找所用卷的UUID:

sudo blkid

这给了我以下信息: /dev/mapper/ldm_vol_XXX-Dg0_Volume1: LABEL="6TB_Raid" UUID="0A281FC6281FAFA5" TYPE="ntfs"

所以我在/etc/fstab中创建了一行:

 UUID=0A281FC6281FAFA5 /media/6TB_Raid ntfs-3g auto,users,uid=1000,gid=100,dmask=027,fmask=137,utf8 0 0 

我每次启动都会有音量。