如何正确访问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 TB驱动器,而不是两个驱动器(无论它们使用的是什么尺寸)。
- 我有两个分布在这三个驱动器上的RAID 0分区:一个500 GB和2.3 TB。 这意味着我在创建RAIDarrays时不需要使用完整的磁盘,而只使用其中的一部分。
- 我在几年前设置它时,至少对我的一个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 disk
和ldmtool 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
我每次启动都会有音量。