第6.2节 ZFS
使用建议
- 建议在 8G 及以上的内存机器上使用 ZFS。
- 为了提高机械硬盘随机读能力,可设置
vfs.zfs.prefetch_disable=1
。 - 为了避免 ZFS 吃掉太多内存,可设置
vfs.zfs.arc_max="XXX"
,例如:1024 M。 - 如果要复制某个文件系统,可以用
zfs send/recv
,这样还能通过 ssh 跨网络传输。 - 推荐使用固态硬盘,使用 SSD 可以改善 ZFS 随机读能力,并且 ZFS 这种写时复制的文件系统也有益于 SSD 寿命。
以上部分来自网络,更多优化见 https://wiki.freebsd.org/ZFSTuningGuide。
ZFS 快照与还原
ZFS 快照类似于虚拟机快照。
- 创建快照
默认创建分区(Auto ZFS)如下:
[email protected]:/home/ykla # zfs list
NAME USED AVAIL REFER MOUNTPOINT
zroot 1.72G 440G 96K /zroot
zroot/ROOT 1004M 440G 96K none
zroot/ROOT/default 1004M 440G 1004M /
zroot/tmp 104K 440G 104K /tmp
zroot/usr 760M 440G 96K /usr
zroot/usr/home 128K 440G 128K /usr/home
zroot/usr/ports 96K 440G 96K /usr/ports
zroot/usr/src 759M 440G 759M /usr/src
zroot/var 628K 440G 96K /var
zroot/var/audit 96K 440G 96K /var/audit
zroot/var/crash 96K 440G 96K /var/crash
zroot/var/log 148K 440G 148K /var/log
zroot/var/mail 96K 440G 96K /var/mail
zroot/var/tmp 96K 440G 96K /var/tmp
快照 zroot
(经测试,在上述默认分区下代表快照整个 ZFS 文件系统,-r
即递归创建快照,test
是随便起的名字):
[email protected]:/home/ykla # zfs snapshot -r [email protected]
[email protected]:/home/ykla # zfs list -t snap
NAME USED AVAIL REFER MOUNTPOINT
[email protected] 0B - 96K -
zroot/[email protected] 0B - 96K -
zroot/ROOT/[email protected] 0B - 7.18G -
zroot/[email protected] 0B - 176K -
zroot/[email protected] 0B - 96K -
zroot/usr/[email protected] 0B - 31.1M -
zroot/usr/[email protected] 0B - 1.98G -
zroot/[email protected] 0B - 96K -
zroot/var/[email protected] 0B - 444K -
[email protected]:/home/ykla # ls /usr/ports/
CHANGES archivers/ emulators/ misc/ textproc/
CONTRIBUTING.md astro/ finance/ multimedia/ ukrainian/
COPYRIGHT audio/ french/ net-im/ vietnamese/
GIDs base/ ftp/ net-mgmt/ www/
INDEX-13 benchmarks/ games/ net-p2p/ x11-clocks/
Keywords/ biology/ german/ net/ x11-drivers/
MOVED cad/ graphics/ news/ x11-fm/
Makefile chinese/ hebrew/ polish/ x11-fonts/
Mk/ comms/ hungarian/ ports-mgmt/ x11-servers/
README converters/ irc/ portuguese/ x11-themes/
Templates/ databases/ japanese/ print/ x11-toolkits/
Tools/ deskutils/ java/ russian/ x11-wm/
UIDs devel/ korean/ science/ x11/
UPDATING distfiles/ lang/ security/
accessibility/ dns/ mail/ shells/
arabic/ editors/ math/ sysutils/
[email protected]:/home/ykla # rm /usr/ports/
- 还原快照
还原时不能递归还原快照,必须挨个还原(如果你有更好的方案请告诉我们,网络上有一些脚本可用):
与虚拟机快照有所不同,在缺省情况下,zfs rollback
命令无法回滚到除最新快照以外的快照(参考手册),除非使用r
,但这会删除该快照创建后的所有快照。
[email protected]:/home/ykla # zfs rollback -r [email protected]
[email protected]:/home/ykla # zfs rollback -r zroot/[email protected]
[email protected]:/home/ykla # zfs rollback -r zroot/ROOT/[email protected]
[email protected]:/home/ykla # zfs rollback -r zroot/[email protected]
[email protected]:/home/ykla # zfs rollback -r zroot/[email protected]
[email protected]:/home/ykla # zfs rollback -r zroot/usr/[email protected]
[email protected]:/home/ykla # zfs rollback -r zroot/usr/[email protected]
[email protected]:/home/ykla # zfs rollback -r zroot/[email protected]
[email protected]:/home/ykla # zfs rollback -r zroot/var/[email protected]
- 销毁快照
销毁快照(销毁的时候可以使用r
递归销毁):
[email protected]:/home/ykla # zfs destroy -r [email protected]
[email protected]:/home/ykla # zfs list -t snap
no datasets available
[email protected]:/home/ykla #
snapshot
在命令中可以缩写为snap
。
注意事项
- ZFS 并不使用
/etc/fstab
,但是 EFI、Swap 仍然使用。