经过一番挖掘,我真正的问题是为什么 Windows 只能识别我硬盘的大约一半大小。我的原文:
在我的 2 TB 数据磁盘上,我有两个主分区,一个 1.6 TB 用于 Linux (ext3) 中的数据存储,另一个 300 GB 用于 Windows 的一些额外数据存储。我运行双启动 Windows 7/Ubuntu 12.04 安装。
我的问题是,如果我将计算机启动到 Windows 7,我的 2TB 数据驱动器上的分区无法被识别。相反,Windows 7 会看到一个 1TB 分区,类型为 RAW。但是,如果我重新启动到 Linux,然后再返回到 Windows 7,分区就会被正确识别。
以下两个屏幕截图说明了我的情况。在我重新启动 Linux 之前:
重启后:
我有两个问题:
- 什么可能导致这种现象?
- 我该如何解决这个问题。
编辑:以下两个更改未能解决问题:1. 我用标准 Windows 7 引导程序替换了 grub 引导程序 2. 我用一个 ntfs 分区替换了数据驱动器上的两个分区。
因此系统现在是单启动 Windows 7 系统,它仍然无法识别 2 TB NTFS 分区,但坚持认为它是一个 950 GB 的 RAW 分区。
编辑:当我在 ubuntu 中使用 gparted 删除分区时,Windows 看到未分区的空间,但只有 950 GB(大约一半的大小)。
答案1
所以问题是 Windows 只识别了我一半的磁盘。经过一番挖掘(以及更多的挖掘),我发现这个问题可能是由于宿主保护区(HPA)。使用hdparm
Linux 分区工具附带的gparted
,我可以检查是否是这种情况。从 Ubuntu Live CD 中,我发出了以下命令:
ubuntu@ubuntu:~$ sudo hdparm -N /dev/sdb
/dev/sdb:
max sectors = 1953569134/3907029168, HPA is enabled
如果我检查其他磁盘,它会显示以下输出:
ubuntu@ubuntu:~$ sudo hdparm -N /dev/sda
/dev/sda:
max sectors = 156301488/156301488, HPA is disabled
这与我的预期一致,硬盘上的所有扇区都可见。因此,似乎我的 2 TB 磁盘上 /dev/sdb 下的一半扇区都被 HPA 覆盖。以下 hdparm 命令修复了这个问题:
sudo hdparm -N p3907029168 /dev/sdb
/dev/sdb:
setting max visible sectors to 3907029168 (permanent)
max sectors = 3907029168/3907029168, HPA is disabled
通过将最大可见扇区设置为驱动器的最大值,从而禁用 HPA。现在,如果我转到 Windows 并检查磁盘管理,磁盘会很好地显示正确的可用空间量。
HPA 可能是由我的技嘉主板引起的,该主板将 BIOS 的副本隐藏在硬盘上的 HPA 中。BIOS 中的一个错误导致此 HPA 将这个 2 TB 硬盘的空间一分为二,另请参阅这篇关于汤姆硬件的文章。该信息大约位于回复的一半,由名为 fzabkar 的用户提供。该帖子的原始发帖人也使用了日立硬盘,因此问题可能是由技嘉主板和日立硬盘的组合引起的。
答案2
RAW 分区通常在基于 *nix 的系统中创建和识别。示例:Informix RDBMS 创建原始磁盘分区,以绕过基于 *nix 的操作系统并直接管理磁盘分配和访问以提高性能。它为 rhd 设备创建符号链接 (ln)。尽管 Windows Vista 及更新版本支持使用 mklink.exe 命令进行硬链接,但 Windows 本身无法识别 *nix 创建的 RAW 磁盘分区。它可能会在 Windows 下显示为“未分配空间”。
我在 WinVista-SP2、NTFS C: 分区中安装了 Ubuntu 12.04-LTS。在安装过程中,我告诉它为 Ubuntu 保留 80GB 的 C: 分区,并且可以缩小 80GB 以添加原始磁盘分区。当我启动计算机时,它会询问我是否要启动到 Windows 或 Ubuntu,此外,我可以使用类似多域的功能在两个操作系统之间共享数据。此版本的 Ubuntu 有自己的虚拟化功能。