首页 > 服务器 > lvm+zfs实现灵活扩容和最大利用不同容量磁盘

作者:ghostry 发布时间:2023-08-31 浏览: 380

转载注明出处: https://blog.ghostry.cn/server/1085.html

ZFS 的 RAID-Z Expansion 已经两年了。还没有进到正式版。目前扩容还是要一组一组的换磁盘,成本较高。
zfs 的raidz要求磁盘容量一致,而很多人的硬盘是陆续购买的,容量并不一致,这形成了门槛。
为了解决这两个问题,我构思了使用lvm+zfs的方案。

想法是这样的,lvm可以把磁盘分割成等大的逻辑盘给zfs使用。并且参考群晖的shr方案。实现不同容量的硬盘组raidz而不浪费空间。
并且lvm使用精简卷和zfs的autotrim,让真实的磁盘占用等于真实文件大小,这样之后扩容的时候可以同盘迁移。

比如 现在有 两个4T和一个2T的盘,如果直接组raidz可用空间只有4T。
可以先把两个4T分别用lvm分割成两个2T的精简卷。这样,就得到了5个2T的精简卷。
然后就可以从三个盘分别拿出一个组成raidz,剩下两个组成mirror,这两个再组成一个大的池。
成品类似这样。

# zpool status
  pool: data
 state: ONLINE
config:

    NAME        STATE     READ WRITE CKSUM
    data        ONLINE       0     0     0
      raidz1-0  ONLINE       0     0     0
        ldb     ONLINE       0     0     0
        ldc1    ONLINE       0     0     0
        ldd1    ONLINE       0     0     0
      mirror-1  ONLINE       0     0     0
        ldc2    ONLINE       0     0     0
        ldd2    ONLINE       0     0     0

errors: No known data errors

这样组合之后,空间完全利用,4T做冗余,6T可以使用。
三块硬盘坏掉任意一个,整个存储池不会损坏。
扩容的时候,比如新买了4T的盘。可以重新统筹,把所有4T分为2T,得到7个2T精简卷。组成一个3盘raidz和一个4盘raidz。
然后迁移旧数据到新池,由于有autotrim,文件又没有增加,不会出现空间不足的情况。(占用太满不行,还要先删除快照)
迁移后删掉旧池。新池同样支持任意坏一个盘而不影响整个数据。
只要统筹好,空间浪费情况能达到和shr一样的水平。并且zfs恢复是文件级的,不会像shr那样把整个盘走一遍,没有存满的时候恢复较快。

会用到的命令

#lvm创建pv
pvcreate /dev/sdc
#创建vg
vgcreate vdc /dev/sdc
# lvm开启自动扩容,编辑文件,意思是占用超过70%就扩容20%
vi /etc/lvm/lvm.conf
thin_pool_autoextend_threshold = 70
thin_pool_autoextend_percent = 20
#创建ThinPool
lvcreate -l +100%free --thinpool ldc vdc
#创建lv精简卷
lvcreate -V 5G --thin -n ldc1 vdc/ldc
#lv查看
lvs
lvdisplay
#zfs创建池
zpool create data raidz /dev/vdb/ldb /dev/vdc/ldc1 /dev/vdd/ldd1 mirror /dev/vdc/ldc2 /dev/vdd/ldd2
zpool set autotrim=on data
#zfs池增加精简卷
zpool add data raidz /dev/vdb/ldb /dev/vdc/ldc1 /dev/vdd/ldd1
#zfs查看池
zpool status
#移动文件
rsync -vaP --remove-source-files /data/ /new/

参考资料
https://zhuanlan.zhihu.com/p/82139330
https://www.truenasscale.com/2022/02/12/562.html
https://zhuanlan.zhihu.com/p/382959865
https://www.synology.cn/zh-cn/support/RAID_calculator

标签: zfs lvm

上一篇: Synology DiskStation 7.2 试玩
下一篇: Sublime Text 3.x (after Build 32XX)

添加新评论 »

*
*

欢迎评论!歡迎評論!Comments welcome!komentoj bonvenaj!댓글 오신 것을 환영합니다!
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: :cold: :cryy: :cute: :shy: :sleep: :struggle: :tea: :yahou: