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

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

我在 ZFS 上运行 Ubuntu 16.04。

我的操作系统在 rpool 上,数据在 /tank 上

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

# zpool add -f tank 镜像 ${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 用于坦克(三星专业版)

sdb 和 sdc = Seagate Ironwolf 6TB 硬盘(存储槽中的新镜像)

sdd & sde = WD 596G 硬盘镜像

sdf & sdg = rpool 镜像

你知道为什么我的机器只将这些新驱动器视为 2TB 吗?

我能做些什么吗?

我是否需要毁掉我的坦克来解决这个问题(如果有解决办法的话)?

答案1

这里发生了两件事。

  1. 您的 SATA 控制器可能不支持大于 2TB 的磁盘。您必须购买新的控制器才能充分利用它们的全部容量。
  2. 您已将 2TB(6TB 磁盘)镜像添加到具有 596GB 镜像 vdev 的池中。虽然从技术上讲,这会为池增加存储空间,但这对于性能来说是一种糟糕的设置。考虑池为空的情况。写入分散在条带 vdev 上以提高性能。596GB vdev 的填充速度比 2TB vdev 快得多,迫使 ZFS 几乎只向 2TB vdev 写入。这会抵消您从运行条带镜像中获得的任何性能提升。

为了获得最佳性能,您总是希望池中的所有 vdev 都具有相同大小的驱动器(我认为理想情况下甚至是相同的几何形状)。

我能做些什么吗?

现在无法移除已添加的虚拟设备,但可以用更大的磁盘替换磁盘。如果您想要获得最佳性能,可以

  • a) 获取支持 >2TB 驱动器的 SATA 控制器和另外 2 个 6TB 驱动器来替换 596GB 驱动器。
  • b) 获取 4 个 2TB 驱动器并替换所有 4 个驱动器,并将 6TB 驱动器用于其他用途。

我是否需要毁掉我的坦克来解决这个问题(如果有解决办法的话)?

上述任何解决方案都无法解决问题。如果要删除其中一个镜像,则必须重新创建池。

答案2

通过查看lsblk输出,您的设备被报告为 2 TB 磁盘。这意味着销毁并重新创建池不会对可用空间产生影响。

您的 SATA 端口是否配置为 Legacy/IDE 模式?如果是,请尝试将其置于 AHCI 模式。

另外,请发布输出dmesg | grep -i sdb

相关内容