我是 Ubuntu 的新用户,刚刚安装完系统,迫不及待地想要开始使用它。但是,我所有的重要数据都在 Windows 软件 RAID 0 阵列上,我需要这些数据留在那里,因为我还双启动 Windows。我需要在 Ubuntu 上访问这些数据,但只有访问成功后才能真正完成任何事情。
我已经尽我所能地研究了这个主题,并且找到了一篇非常有用的帖子:
该帖子描述了如何让 Ubuntu 查看由两个驱动器组成的 Windows RAID 0 阵列。使用的主要命令是sudo mdadm --build /dev/md0 --chunk=64 --level=0 --raid-devices=2 /dev/sdd2 /dev/sdc2
。根据该用户和该帖子中的其他发帖者的说法,它确实有效。太棒了。
我尚未尝试遵循这些说明。为什么?这篇文章包含一个警告,如果您输入了错误的块大小,则不得写入它;可以理解这会导致问题。我担心的是我的设置与他们的示例不同,我不确定是否应该为我的设置输入完全相同的命令。我担心做错了会破坏它,因此希望得到更有经验的人的建议。
我的设置与他们的示例有何不同:
- 我有三1 TB 驱动器,而不是 2 个驱动器(无论他们使用什么大小)。
- 我有二RAID 0 分区分布在这三个驱动器上:一个 500 GB,另一个 2.3 TB。这意味着我在创建 RAID 阵列时不需要使用整个磁盘,而只需使用其中的一部分。
- 我用了一个非默认块大小至少在我几年前设置 RAID 0 分区时,我有一个 RAID 0 分区的块大小是 4kb(每个簇 4096 字节),而我的 2.3 TB 分区的块大小是 64kb(每个簇 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 中的“磁盘”程序显示我的驱动器的以下分区:
/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 分区?
提前非常感谢您。
答案1
感谢这篇 Stack Overflow 帖子,我终于让这个工作正常了:使用 Linux 恢复 Windows 跨区磁盘 (LDM)?
发现这些难以捉摸的信息非常困难。我花了好几天的时间搜索,我猜我之所以没有找到它,是因为这篇文章没有提到 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
,但我不需要这样做 - 在我运行上述两个命令后,Ubuntu 会自动为我安装它们。这就是我要做的事情,我可以立即从文件浏览器访问它们!
链接的帖子建议每次启动时自动执行此操作。只需打开文件并在文件末尾附近的行之前/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
可用于显示更多信息。
答案2
其他答案在 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/title/Dynamic_disks)
创建一个etc/systemd/system/
名为的文件,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
每次启动时,音量都会在那里。
答案3
Ubuntu 14.04 LTS 安装由 Windows 7 创建的 raid 1,ldmtool
由新手使用。** **
我也遇到了同样的问题。使用上面的答案,我很幸运地将它安装好了
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**
之前我有一个脚本,用这两行做同样的事情
/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 启动时就被挂载了
我不知道这对你是否有用!