![Linux RAID 镜像仅一半大小](https://linux22.com/image/1517308/Linux%20RAID%20%E9%95%9C%E5%83%8F%E4%BB%85%E4%B8%80%E5%8D%8A%E5%A4%A7%E5%B0%8F.png)
我刚刚购买了几个 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。