背景
在使用 TrueNAS 4年后的今天,终于迎来了存储池空间使用率超过了90%,存储池是使用的 10 块 2T 做的 raidz3,即可以损失任意3块盘仍然保证数据安全,剩余的空间计算为 (10-3) x 2T = 14T,实际最大可用空间 11.98T,而现在剩余可用空间不足 1T
扩容问题
手头上刚好有一块 2T 的磁盘,是否可以加进去直接扩展空间呢? 尝试在池中加入新盘,提示需要添加 5块 硬盘,实在难以理解为何一次扩容需要5块盘,因为之前玩群晖组raid6扩展还是相当方便的,基本上新增一块、两块扩展空间都可以。
所以根据这个特殊的要求,我查阅了一些资料,才发现问题不止是扩展需要5块硬盘那么简单,最少要5块是会在此池中新建一个vdev组,它具有此池相同的raidz功能,所以raidz3最低的要求是5块新盘,但它不会扩展到原有的空间,那这个方案是相当浪费空间的
于是我查询了一些关于raidz、zfs扩展的资料,截至到2024.08.01最新的资料如下:
# 12楼
https://www.truenas.com/community/threads/raidz-expansion-best-method-when-increasing-disks-and-replacing-with-larger-at-same-time.105448/
# 4楼
https://www.truenas.com/community/threads/adding-a-drive-to-a-raidz1-pool.111805/
# 正规文档关于之前是如何扩展的(新建一个vdev)
https://openzfs.org/wiki/OpenZFS_Developer_Summit_2023_Talks#RAIDZ_Expansion_(Matt_Ahrens_&_Don_Brady)
# 关于解决方案和其他的一些讨论
https://www.truenas.com/community/threads/adding-disk-to-raidz1.111375/
# 关于扩展以及扩展后数据分布的讨论
https://github.com/openzfs/zfs/pull/15022
# 关于扩展以及数据分布的讨论后续
https://github.com/openzfs/zfs/discussions/15232
关于上面的讨论,大概在今年底 TrueNAS 可以集成这一功能,但不知道能否解决数据分布问题,raidz 与 raid 完全不同,其扩展后不会重新分布数据,导致原数据与新数据盘符存储不同,推荐的方法是,删除原数据重新创建,则会以新盘的数量重新分布
PS. 其他的解决方案
- 较推荐的是把原硬盘一个一个更换更大的盘,每更换一个则等到同步完成再继续,等所有硬盘更换后会自动扩展空间
- 新建一个更大的池,然后把数据同步过去
评论