[Linux] ubuntu系统使用zfs记录

发布时间 2023-03-23 09:02:28作者: Startu

关于zfs

之前从B站视频里面了解到了btrfs这个文件系统,说是能够实现cow,然后我第一时间觉得这是个极好的特性,结果后来才发现,使用的时候并不多,而且只能通过cp --reflink的方式使用,但是绝大多数情况下的复制都是伴随着修改的。所以这个功能并不常用,能够节省的空间也确实有限。

然后无意间发现了zfs系统,它的去重功能才是我想要的那种东西,而且去重功能能够实现块级的去重,而要付出的代价就是会消耗大量的内存。这个根据网友的数据,大概1t的数据会吃掉2g的内存(实际上我自己测试大概是1.4g),其实在我看来也不是不能接受的样子。而且这个功能真的很酷的不是?而且一定程度上也能节约ssd的写入次数。

基础使用

  • 安装zfs
    在ubuntu系统上,已经自带了对这个的支持,尤其是在安装系统的时候就能够选择直接安装在zfs分区上,这点好评(但是没有开启去重功能)

  • 创建zfs池
    zpool create -f pool2 /dev/sda -m /export
    这样就能把/dev/sda 作为zfs分区,然后挂载到/export目录

  • 查看状态
    zpool status
    能看到这个zfs池的设备构成

  • 查看开启去重的分区
    zfs get dedup pool1

  • 设置开启去重
    zfs set dedup=on pool1

  • 创建文件系统
    zfs create pool1/fs1
    我觉得这个更像是子卷一类的东西,可以对某些文件夹单独做出规则设置

测试去重

通过cp -r /var /export/指令复制文件夹到zfs分区,然后看下面的结果
image

  • zpool list显示分区只使用了2.07G
  • df -sh var 显示这个文件夹占用3.0G
  • df -h 也认为占用了3.0G