分区存在,但不会显示在 Linux/Windows 文件系统中

分区存在,但不会显示在 Linux/Windows 文件系统中

背景

我使用的是带有两个硬盘的 RAID1 配置。它是使用主板 (Asus x470 Prime Pro) 的 RAID 控制器设置的,它在 Windows 上运行良好,但由于缺少驱动程序,在 Linux 下无法使用。由于无法从 UEFI 的内置工具中“撤消”RAID 配置,我只需禁用 RAID 并将一个磁盘的所有内容移到左侧(因为前几百 MB 被 RAID 元数据占用)。我很好奇,简单地移动实际磁盘数据(当然还有分区表)是否可以工作,结果……它既可以工作,又不工作。

问题

在 Linux (Debian) 和 Windows GUI 磁盘分区管理器中,当我检查我修改过的硬盘时,根本看不到任何分区。显然,它们也没有出现在文件系统中。 Debian 磁盘实用程序

令人惊讶的是,在 Linux 下,一些命令行工具(如 fdisk 和 gdisk)可以正常显示分区。

fdisk:

Welcome to fdisk (util-linux 2.36).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p
Disk /dev/sda1: 1.82 TiB, 2000381018112 bytes, 3906994176 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Alignment offset: 512 bytes
Disklabel type: gpt
Disk identifier: F7AE9EF0-19AC-4E53-B0F1-09179E8DFDAA

Device           Start        End    Sectors   Size Type
/dev/sda1p1         34      32767      32734    16M Microsoft reserved
/dev/sda1p2      32768  419770367  419737600 200.1G Microsoft basic data
/dev/sda1p3  419770368 2333446143 1913675776 912.5G Microsoft basic data
/dev/sda1p4 2333446144 2490693631  157247488    75G Microsoft basic data

Partition 1 does not start on physical sector boundary.
Partition 2 does not start on physical sector boundary.
Partition 3 does not start on physical sector boundary.
Partition 4 does not start on physical sector boundary.

Command (m for help): v

No errors detected.
Header version: 1.0
Using 4 out of 128 partitions.
A total of 1416300511 free sectors is available in 1 segment.

(我记得 fdisk 打印了一个错误,提示磁盘末尾没有写入 GPT 表的副本,但是它建议帮我修复,我希望它能解决这个问题 - 但是它没有,它只是让这个特定的错误不再打印。)

磁盘管理:

GPT fdisk (gdisk) version 1.0.5

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

Found valid GPT with protective MBR; using GPT.

Command (? for help): p
Disk /dev/sda1: 3906994176 sectors, 1.8 TiB
Sector size (logical/physical): 512/4096 bytes
Disk identifier (GUID): F7AE9EF0-19AC-4E53-B0F1-09179E8DFDAA
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 3906994142
Partitions will be aligned on 8-sector boundaries
Total free space is 1416300511 sectors (675.3 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1              34           32767   16.0 MiB    0C01  Microsoft reserved ...
   2           32768       419770367   200.1 GiB   0700  Basic data partition
   3       419770368      2333446143   912.5 GiB   0700  Basic data partition
   4      2333446144      2490693631   75.0 GiB    0700  Basic data partition

Command (? for help): v

Caution: Partition 1 doesn't begin on a 8-sector boundary. This may
result in degraded performance on some modern (2009 and later) hard disks.

Consult http://www.ibm.com/developerworks/linux/library/l-4kb-sector-disks/
for information on disk alignment.

No problems found. 1416300511 free sectors (675.3 GiB) available in 1
segments, the largest of which is 1416300511 (675.3 GiB) in size.

唯一似乎在检测分区方面有问题的命令行工具似乎是 partprobe:

sudo partprobe -s
/dev/sda: msdos partitions 1
/dev/sdb: msdos partitions 1
/dev/nvme0n1: gpt partitions 1 2 3 4 5 6

显然,/dev/sda 和 /dev/sdb 是我之前 RAID 配置中的 HDD,而 /dev/sda 是我损坏的 HDD。

如果我理解正确的话,fdisk 打印的有关分区“不在物理扇区边界上启动”的错误似乎并不真正相关,因为这看起来只是一个性能问题(由 gdisk 输出确认) - 即,无论如何都应该仍然可以使用这些分区。

我不知道这里可能出了什么问题 - 分区似乎真的没问题!在 BIOS 中有一些用于刷新的实用程序,允许浏览本地存储,从那里我确认我的文件和目录仍然完好无损地位于我从 RAID 手动“恢复”的 HDD 上。但话又说回来 - Linux 和 Windows 都无法在文件系统级别正确检测到它们......

答案1

感谢 kreemoweet 的评论,我才知道发生了什么。

事实证明,我意外地移动了错误的块设备数据 - /dev/sda1 而不是 /dev/sda。sda1 之所以存在,是因为出于某种原因,linux 将其视为一个大分区,从而为其创建了一个块设备。我的分区有点“嵌套”在其中,因此,当使用 /dev/sda1 作为要分区的设备时,虽然在分区工具中可见,但它们显然不会显示在文件系统中。

进行额外的转变(将分区表与真实磁盘设备对齐)解决了该问题。

相关内容