ZFS镜像新驱动器添加不报告正确的大小

我在ZFS上运行Ubuntu 16.04。

我有我的操作系统在rpool和我的数据在/坦克

问题:我使用以下命令将2个6TB驱动器添加到了zvol中:

#zpool add -f tank mirror $ {DISK1} $ {DISK2}

驱动器添加。 我期待在6TB附近获得一些东西,但我又多了2TB。 这是df -h /tank的输出

 Filesystem Size Used Avail Use% Mounted on tank 2.1T 0 2.1T 0% /tank 

这里是# zpool list tank的输出

 NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT tank 2.57T 460G 2.12T - 7% 17% 1.00x ONLINE - 

这是# zpool status的输出

 pool: rpool state: ONLINE scan: scrub repaired 0 in 0h0m with 0 errors on Sun Feb 12 00:24:58 2017 config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 ata-Samsung_SSD_850_EVO_250GB_S2R5NB0HA87070Z-part1 ONLINE 0 0 0 ata-Samsung_SSD_850_EVO_250GB_S2R5NB0HB09374D-part1 ONLINE 0 0 0 errors: No known data errors pool: tank state: ONLINE scan: scrub repaired 0 in 1h8m with 0 errors on Sun Feb 12 01:32:07 2017 config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 wwn-0x50014ee0561bff3f-part1 ONLINE 0 0 0 wwn-0x50014ee1011a7ad7-part1 ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 ata-ST6000NE0021-2EN11C_ZA14Q289 ONLINE 0 0 0 ata-ST6000NE0021-2EN11C_ZA13YT32 ONLINE 0 0 0 cache ata-Samsung_SSD_850_PRO_512GB_S39FNX0J102027A ONLINE 0 0 0 errors: No known data errors 

我试过# zpool set autoexpand=on tank但没有喜悦。 仍然报告2.5TB。

这是# lsblk的输出

 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 477G 0 disk ├─sda1 8:1 0 477G 0 part └─sda9 8:9 0 8M 0 part sdb 8:16 0 2T 0 disk ├─sdb1 8:17 0 2T 0 part └─sdb9 8:25 0 8M 0 part sdc 8:32 0 2T 0 disk ├─sdc1 8:33 0 2T 0 part └─sdc9 8:41 0 8M 0 part sdd 8:48 0 596.2G 0 disk └─sdd1 8:49 0 596.2G 0 part sde 8:64 0 596.2G 0 disk └─sde1 8:65 0 596.2G 0 part sdf 8:80 0 232.9G 0 disk ├─sdf1 8:81 0 232.9G 0 part ├─sdf2 8:82 0 1007K 0 part └─sdf9 8:89 0 8M 0 part sdg 8:96 0 232.9G 0 disk ├─sdg1 8:97 0 232.9G 0 part ├─sdg2 8:98 0 1007K 0 part └─sdg9 8:105 0 8M 0 part sr0 11:0 1 1024M 0 rom zd0 230:0 0 4G 0 disk [SWAP] 

键:

sda = L2ARC for tank(samsung pro)

sdb&sdc =希捷Ironwolf 6TB驱动器(坦克新镜)

sdd&sde = WD 596G驾驶坦克镜子

sdf&sdg = rpool镜像

你知道为什么我的机器只能看到这些新的驱动器2TB?

有什么我可以做的吗?

我需要摧毁我的坦克来解决这个问题吗(如果有问题的话)?

这里有两件事情。

  1. 您的SATA控制器可能不支持> 2TB的磁盘。 你必须得到一个新的控制器,以获得他们的全部能力。
  2. 您已经使用596GB镜像vdev将2TB(6TB磁盘)镜像添加到池中。 虽然这在技术上会给你增加的存储池,这是一个糟糕的性能设置。 考虑池是空的情况。 为了提高性能,写作分布在条纹vdevs上。 596GB的vdev将比2TB的vdev快得多,迫使ZFS几乎专门写入2TB的vdev。 这会消除您从运行分条镜像中看到的任何性能提升。

为了获得最佳性能,您总是需要在池中的所有vdevs中使用相同大小的驱动器(我相信理想情况下甚至是相同的几何graphics)。

有什么我可以做的吗?

现在不能删除已添加的vdevs,但可以用更大的磁盘replace磁盘。 如果你想在这里获得最佳性能,你可以

  • a)获得支持> 2TB驱动器的SATA控制器和另外2个6TB驱动器来replace596GB驱动器。
  • b)获得4个2TB驱动器,并更换所有4个驱动器,并使用6TB驱动器做其他事情。

我需要摧毁我的坦克来解决这个问题吗(如果有问题的话)?

没有任何上述解决scheme。 如果你想删除一个镜像,你将不得不重新创build池。

通过查看lsblk输出,您的设备被报告为2 TB磁盘。 这意味着破坏和重build游泳池将不会有可用的空间。

您的SATA端口是否在Legacy / IDE模式下configuration? 如果是,请尝试将它们置于AHCI模式。

另外,请张贴dmesg | grep -i sdb的输出 dmesg | grep -i sdb