ZFS 文件系统安装配置教程

ZFS 是一款集文件系统与卷管理于一体的企业级存储方案,以数据完整性保护、灵活的快照管理和出色的压缩功能著称。虽然 ZFS 对内存要求较高,但在搬瓦工 2GB 以上内存方案的 VPS 上可以流畅运行。本文将详细介绍 ZFS 的安装、配置与日常管理操作。

一、安装 ZFS

1.1 Ubuntu 上安装

# Ubuntu 20.04+ 已包含 ZFS 支持
apt update
apt install zfsutils-linux -y

# 验证安装
zfs version
modprobe zfs
lsmod | grep zfs

1.2 Debian 上安装

# 添加 backports 源(Debian 11)
echo 'deb http://deb.debian.org/debian bullseye-backports main contrib non-free' >> /etc/apt/sources.list.d/backports.list

apt update
apt install -t bullseye-backports zfsutils-linux -y

# Debian 12 直接安装
apt install zfsutils-linux -y

1.3 CentOS 上安装

# 添加 ZFS 仓库
yum install https://zfsonlinux.org/epel/zfs-release-2-3.el8.noarch.rpm -y

# 安装内核模块方式(推荐)
yum install kernel-devel zfs -y

# 加载模块
modprobe zfs

# 设置开机自动加载
echo zfs > /etc/modules-load.d/zfs.conf

二、存储池(zpool)管理

ZFS 的存储池是底层磁盘的抽象层,所有数据集和卷都建立在存储池之上。

2.1 创建存储池

# 使用单块磁盘创建存储池
zpool create mypool /dev/vdb

# 使用文件创建测试用存储池(适合学习测试)
dd if=/dev/zero of=/zfs-disk1 bs=1M count=1024
dd if=/dev/zero of=/zfs-disk2 bs=1M count=1024
zpool create testpool /zfs-disk1 /zfs-disk2

# 创建镜像池(类似 RAID1)
zpool create mypool mirror /dev/vdb /dev/vdc

# 查看存储池状态
zpool status
zpool list

2.2 存储池维护

# 查看存储池 I/O 统计
zpool iostat mypool 2

# 数据校验(scrub)
zpool scrub mypool

# 查看 scrub 进度
zpool status mypool

# 导出存储池(安全移除)
zpool export mypool

# 导入存储池
zpool import mypool

# 查看可导入的池
zpool import

三、数据集管理

数据集是 ZFS 中的逻辑文件系统,可以独立设置属性和配额。

# 创建数据集
zfs create mypool/data
zfs create mypool/backup
zfs create mypool/docker

# 设置挂载点
zfs set mountpoint=/data mypool/data

# 设置配额(限制数据集使用空间)
zfs set quota=20G mypool/data

# 设置预留空间
zfs set reservation=5G mypool/data

# 启用压缩
zfs set compression=zstd mypool/data

# 查看数据集属性
zfs get all mypool/data

# 列出所有数据集
zfs list

四、快照与克隆

4.1 快照管理

# 创建快照
zfs snapshot mypool/data@snap-$(date +%Y%m%d)

# 列出所有快照
zfs list -t snapshot

# 查看快照空间占用
zfs list -t snapshot -o name,used,refer

# 回滚到快照(会丢失快照之后的更改)
zfs rollback mypool/data@snap-20260101

# 删除快照
zfs destroy mypool/data@snap-20260101

# 递归创建快照(包含子数据集)
zfs snapshot -r mypool/data@full-backup

4.2 增量备份

# 发送快照到文件
zfs send mypool/data@snap-20260101 > /backup/data-full.zfs

# 增量发送(只发送两个快照之间的差异)
zfs send -i mypool/data@snap-20260101 mypool/data@snap-20260102 > /backup/data-incr.zfs

# 接收快照(恢复到另一个池)
zfs receive backuppool/data < /backup/data-full.zfs

# 通过 SSH 远程备份
zfs send mypool/data@snap-20260101 | ssh user@remote zfs receive backuppool/data

4.3 克隆

# 从快照创建克隆(可读写的快照副本)
zfs clone mypool/data@snap-20260101 mypool/data-clone

# 克隆独立化(断开与原始快照的关系)
zfs promote mypool/data-clone

五、性能调优

# 设置 ARC 缓存大小限制(字节)
# 对于 2GB 内存的 VPS,建议设置为 512MB-768MB
echo 536870912 > /sys/module/zfs/parameters/zfs_arc_max

# 永久设置
echo 'options zfs zfs_arc_max=536870912' > /etc/modprobe.d/zfs.conf

# 设置记录大小(根据工作负载调整)
# 大文件存储使用 1M
zfs set recordsize=1M mypool/media

# 数据库使用 16K 或与数据库页大小匹配
zfs set recordsize=16K mypool/database

# 关闭不需要的访问时间记录
zfs set atime=off mypool/data

# 启用高效压缩
zfs set compression=zstd-3 mypool/data

# 设置 primarycache 策略
zfs set primarycache=all mypool/data

六、监控与故障排查

# 查看存储池健康状态
zpool status -v mypool

# 查看 I/O 统计
zpool iostat -v mypool 5

# 查看 ARC 缓存统计
cat /proc/spl/kstat/zfs/arcstats

# 简化的 ARC 状态
arc_summary

# 查看 ZFS 事件日志
zpool events -v mypool

# 查看数据集空间使用详情
zfs list -o name,used,avail,refer,compressratio

七、自动快照方案

# 安装 zfs-auto-snapshot
apt install zfs-auto-snapshot -y

# 默认会创建以下快照策略:
# - 每15分钟(保留 4 个)
# - 每小时(保留 24 个)
# - 每天(保留 31 个)
# - 每周(保留 8 个)
# - 每月(保留 12 个)

# 对特定数据集禁用自动快照
zfs set com.sun:auto-snapshot=false mypool/tmp

# 查看自动快照
zfs list -t snapshot | grep auto

总结

ZFS 提供了最强大的数据完整性保护和灵活的存储管理功能。在搬瓦工 VPS 上使用时需要注意内存占用,建议至少 2GB 内存的方案。ZFS 的快照和增量备份功能是数据保护的利器。如果 VPS 内存有限,可以考虑使用资源占用更少的 BtrfsExt4。存储进阶还可以参考 LVM 逻辑卷管理RAID 配置教程。选购搬瓦工 VPS 请查看 全部方案,购买时使用优惠码 NODESEEK2026 可享受 6.77% 的折扣,通过 bwh81.net 访问官网。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。