第二节 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
快照 /
(经测试,在上述默认分区下代表快照整个 ZFS 文件系统,start1
是随便起的名字):
[email protected]:/ # zfs snapshot zroot/ROOT/[email protected]
[email protected]:/ # zfs list -t snapshot
NAME USED AVAIL REFER MOUNTPOINT
[email protected] 0B - 96K -
zroot/ROOT/[email protected] 0B - 1004M -
快照还原验证:
[email protected]:/ # rm 1.txt
[email protected]:/ # ls
.cshrc boot home mnt root usr
.profile dev lib net sbin var
COPYRIGHT entropy libexec proc sys zroot
bin etc media rescue tmp
[email protected]:/ # zfs rollback -r zroot/ROOT/[email protected]
[email protected]:/ # ls
.cshrc bin etc media rescue tmp
.profile boot home mnt root usr
1.txt dev lib net sbin var
COPYRIGHT entropy libexec proc sys zroot
销毁快照:
[email protected]:/ # zfs destroy [email protected]
[email protected]:/ # zfs list -t snap
NAME USED AVAIL REFER MOUNTPOINT
zroot/ROOT/[email protected] 8K - 1004M -
[email protected]:/ #
注意事项
- ZFS 并不使用
/etc/fstab
,但是 EFI、Swap 仍然使用。