RST RAID-0 NTFS 分区无法挂载

RST RAID-0 NTFS 分区无法挂载
  • 我在不同的磁盘上双启动了 Windows 10 和 Ubuntu(F8 启动选择)。
  • 我在 Windows 10 上用 RST 创建了一个 RAID-0 块,可以作为辅助磁盘正常工作。该块不用于启动,仅用于在两个系统之间存储和共享数据。

我在 Ubuntu Mate 上看不到这个 raid 块的分区,虽然 gdisk 没有列出分区,gnome-disk-utility 看到了 GPT,但没有要挂载的分区。

$ sudo gdisk -l /dev/dm-0
[sudo] Mot de passe de wingarmac : 
GPT fdisk (gdisk) version 1.0.8

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.
Disk /dev/dm-0: 3907039744 sectors, 1.8 TiB
Sector size (logical/physical): 512/4096 bytes
Disk identifier (GUID): F554FF29-FF7D-4A79-8D05-3ADF30EF3BED
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 3907039710
Partitions will be aligned on 8-sector boundaries
Total free space is 2527 sectors (1.2 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1              34           32767   16.0 MiB    0C01  Microsoft reserved ...
   2           32768      3907035135   1.8 TiB     0700  Basic data partition
   3      3907035136      3907037183   1024.0 KiB  8300

我使用开始菜单打开 Gparted,我可以看到我的 RAID-0 显示为:/dev/mapper/isw_cfjifbibag_Volume1 我根本无法通过这种方式在 Gparted 中进行任何修改。

我可以在 gnome-disk-utility 中看到我的 RAID 块名为:/dev/dm-0

我尝试使用终端和命令打开 Gparted:

$ sudo gparted /dev/dm-0

我尝试了一下,将“基本数据分区”上的标志更改为irst,然后改回msftres。这使得分区映射到 /dev/mapper/isw_module_Volume1p1。我甚至可以浏览文件夹并在挂载的分区上创建内容。重启后问题仍然存在。它似乎重置了操作。即使在我尝试更改 gnome-disks 中的挂载选项之后也是如此。

我发现 /etc/mtab 是存储当前磁盘映射(如 USB 驱动器和其他热插拔)的地方。我尝试将有关正确分区挂载的行添加到 fstab,但重启后分区未挂载:

/dev/mapper/isw_cfjifbibag_Volume1p2 /media/wingarmac/Data fuseblk rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096 0 0

继续问题:

线索1:为什么我的突袭块有两个映射?:

  • /dev/mapper/isw_cfjifbibag_Volume1
  • /dev/dm-0

对此的答案似乎是 /dev/mapper/isw_cfjifbibag_Volume1 是在启动时检测到的 raid 卷设备,而 /dev/dm-0 是此驱动器用于驱动器系统挂载的映射。

线索2:为什么我需要更改标志才能够挂载 ntfs 分区?

当我这样做时,就像进行了一次新的分区检查,并启用了这些分区的驱动器映射。

线索3:为什么重启后无法自动挂载该分区?

我发现 Windows 使用 GPT 来初始化大于 2Tb 的磁盘。还建议将磁盘包含的分区数设为 4 个以上。问题在于,Ubuntu 似乎在启动时不会查看 GPT 磁盘上的 MBR 分区。我的 dm-0(GPT 磁盘)已列出,但没有映射 dm-1(包含 MBR 分区)。

当我使用 gparted /dev/dm-0 时,我能够看到包含的 MBR NTFS 分区和另一个保留分区。通过将分区上的标志更改为任何其他标志并改回原位,使分区映射到 /dev/dm-1。然后 gparted 能够验证它,因为它已被映射。在验证过程中,gparted 请求调整大小,结果显示“不需要调整大小”。但这使得分区能够由 Ubuntu 挂载。尽管重启后一切都重置了,即使我在 fstab 中输入了挂载详细信息。

关键是封装的 MBR 在启动时未映射到 dm-1。似乎甚至没有被检测到,因为 dm-1 已映射,卷 /dev/mapper/isw_module_Volume1p1 尚未发现。启动后,只有块 (/dev/mapper/isw_module_Volume1) 和 raid 成员列在 gdisk 中。

当我输入命令时:

$ sudo file -s /dev/dm-0

我得到以下结果:

/dev/dm-0 DOS/MBR 引导扇区 MS-MBR Windows 7 英文版,偏移量为 0x163,偏移量为 0x17b,"无效分区表",偏移量为 0x19a,"操作系统加载错误","缺少操作系统",磁盘签名为 0x87d4000f;分区 1:ID=0x27,起始 CHS(0x0,32,33),结束 CHS(0x3ff,254,63),起始扇区 2048,扇区数为 3907033088

该分区是在 Windows 上创建的,但 Windows 安装在其他驱动器上。这就像驱动器在启动时未映射,因为它无法在其上找到系统。我不需要此分区作为启动项,只需它在 Ubuntu 中自动安装即可。我可以禁用此磁盘/分区上操作系统的检查吗?

我想知道我是否可以在检测到此磁盘/分区时重复 gparted 在启动时执行的操作。以下是 Gparted GUI 操作的示例,以便能够挂载它: gparted_details

我使用以下命令找到了有关块设备的UUID的重要信息:

udevadm info -a -n /dev/dm-0

这给了我该驱动器的 UUID 结果:ATTR{dm/uuid}=="DMRAID-isw_cfjifbibag_Volume1"

现在,我仅收到有关 raid-0 的以下错误,使用命令sudo journalctl -p 3

kernel: ntfs3: Unknown parameter 'windows_names'

但是挂载点上不再有 fstab 错误,并且仍然没有映射分区。

您可以在这里找到所有使用的识别命令及其各自的结果。

我找到了一种更好的方法来在重启后映射分区,而不是使用 gparted。现在我只需输入命令:sudo dmraid -ay -f isw结果如下:

RAID set "isw_cfjifbibag_Volume1" already active
RAID set "isw_cfjifbibag_Volume1p1" was activated

现在我可以像其他人一样在 gnome-disk 中挂载分区。剩下的唯一问题是,在这个设备上更新 GRUB 毫无意义,因为它是用于存储的。所以我不知道如何让启动过程进行检查,dmraid -ay -f isw而不是dmraid -ay像看起来那样。

答案1

我在以下帮助下找到了解决方案Ubuntu 帮助页面,此部分包含一些错误:

那么预启动环境呢?默认软件包 dmraid 附带的脚本不足以实际激活阵列上的分区。您必须将脚本复制到 /etc 并将其附加到:

cp /usr/share/initramfs-tools/scripts/local-top/dmraid /etc/initramfs-tools/scripts/local-top
echo "dmraid -ay" >> /etc/initramfs-tools/scripts/local-top

最后一个命令给出了以下结果:

bash: /etc/initramfs-tools/scripts/local-top: is a folder

于是我打开了文件夹/etc/initramfs-tools/scripts/local-top并在其中看到一个文件 dmraid。我推测它是为了将此命令添加到此文件中。

因此我手动编辑了文件。使 dmraid 查找具有英特尔元数据的分区所需的命令:

dmraid -ay -f isw

此命令应在启动时考虑。因此,我们需要将此命令添加到文件夹中的脚本中/etc/initramfs-tools/scripts/local-top在名为的文件中分布式阵列像这样:

#!/bin/sh
dmraid -ay -f isw
# local-top script for dmraid.

PREREQS=""
prereqs()
{
    echo $PREREQS
}

case $1 in
# get pre-requisites
prereqs)
    prereqs
    exit 0
    ;;
esac

. /scripts/functions
wait_for_udev 30

# Activate any dmraid arrays that were not identified by udev and vol_id.

if devices=$(dmraid -r -c); then
    for dev in $devices; do
        dmraid-activate $dev
    done
fi

特别说明:

为了全新安装,编辑后请不要忘记重新安装 dmraid

/etc/initramfs-tools/scripts/local-top/dmraid

以 root 身份使用以下命令:

apt install --reinstall dmraid libdmraid1.0.0.rc16

就像提到的Ubuntu 帮助页面

现在,即使重启后,Intel RST 上的 dmraid NTFS 分区也会自动挂载。我只需在/etc/fstab

/dev/disk/by-uuid/F69A259A9A2557FF /mnt/data auto rw,nosuid,nofail,relatime,user_id=0,group_id=0,allow_other,blksize=4096,x-gvfs-show 0 0

相关内容