Linux RAID 镜像仅一半大小

Linux RAID 镜像仅一半大小

我刚刚购买了几个 4TB WD Reds,但由于某种原因,当我尝试镜像它们时,生成的阵列只有 2198.9 GB 大。

两个磁盘均使用 fdisk 格式化为 Linux RAID Autodetect (ID fd),用于创建阵列的命令是:

mdadm --create /dev/md/mirror0 --level=mirror --raid-devices=2 /dev/sdc1 /dev/sdd1

fdisk -l输出:

Disk /dev/sdb: 4000.8 GB, 4000787030016 bytes
255 heads, 63 sectors/track, 486401 cylinders, total 7814037168 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
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1  4294967295  2147483647+  ee  GPT
Partition 1 does not start on physical sector boundary.

Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders, total 234441648 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0002868b

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048   218292223   109145088   83  Linux
/dev/sda2       218294270   234440703     8073217    5  Extended
/dev/sda5       218294272   234440703     8073216   82  Linux swap / Solaris

Disk /dev/sdc: 4000.8 GB, 4000787030016 bytes
90 heads, 3 sectors/track, 28940878 cylinders, total 7814037168 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
Disk identifier: 0xa36de11e

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048  4294967294  2147482623+  fd  Linux raid autodetect

Disk /dev/sdd: 4000.8 GB, 4000787030016 bytes
90 heads, 3 sectors/track, 28940878 cylinders, total 7814037168 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
Disk identifier: 0x8708ffe6

   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1            2048  4294967294  2147482623+  fd  Linux raid autodetect

Disk /dev/md127: 2198.9 GB, 2198887792640 bytes
2 heads, 4 sectors/track, 536837840 cylinders, total 4294702720 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
Disk identifier: 0x00000000

我究竟做错了什么?

答案1

您的分区实际上只有 2T 大小 - 因此在其上创建的镜像同样只有 2T 大小。总扇区数几乎是分配给分区的扇区的两倍。

比较完整设备的信息:

Disk /dev/sdd: 4000.8 GB, 4000787030016 bytes
90 heads, 3 sectors/track, 28940878 cylinders, total 7814037168 sectors

随着突袭:

Disk /dev/md127: 2198.9 GB, 2198887792640 bytes
2 heads, 4 sectors/track, 536837840 cylinders, total 4294702720 sectors

扇区为 512 字节,因此 512 * 7814037168 = 4000787030016 或 4T。您的分区跨越扇区 1-4294967295 = 512 * 4294967295 或大约 2.2T。
“块”为 1k 块,因此您应该看到分区大小约为 4000000000 个块(实际上更像是 39 亿个块)的磁盘大小。

这里的问题是你正在使用磁盘管理;它不支持大于 2T 的分区(或者更准确地说,大于 2^31 个块)。要创建更大的分区,请使用分开反而。

如果您使用整个磁盘重建分区,然后使用此处显示的相同命令再次创建镜像,那么应该没问题。

答案2

从 的输出中/dev/sdb,我们可以假设您有一个不支持 GPT 的 变体fdisk。因此,您的 RAID 磁盘使用 MBR 进行分区(因为它们是可见的)。MBR 分区最多可以有 4294967295 个扇区。对于 512 字节扇区,即 2 TiB - 512 字节。

解决方案也很简单:使用 GPT。

相关内容