
ZFS 的全称是 Zettabyte File System,它被誉为“最后一个文件系统”。ZFS 不仅仅是一个传统的文件系统,它集成了卷管理器、RAID 控制器、快照、数据校验、压缩和去重等众多高级功能,是一个革命性的存储解决方案。
使用的系统
➜ ~ uname -a
FreeBSD freebsd 14.1-RELEASE-p7 FreeBSD 14.1-RELEASE-p7 GENERIC amd64如何创建存储池
查看系统上的硬盘
首先我们查看下系统上有哪些硬盘,使用geom disk list可以查看系统上硬盘列表。
➜ ~ geom disk list
Geom name: cd0
Providers:
1. Name: cd0
Mediasize: 4588224512 (4.3G)
Sectorsize: 2048
Mode: r0w0e0
descr: NECVMWar VMware SATA CD00
ident: (null)
rotationrate: unknown
fwsectors: 0
fwheads: 0
Geom name: ada0
Providers:
1. Name: ada0
Mediasize: 21474836480 (20G)
Sectorsize: 512
Mode: r0w0e0
descr: VMware Virtual IDE Hard Drive
lunid: 5000c29c9cf61ff9
ident: 10000000000000000001
rotationrate: 0
fwsectors: 63
fwheads: 15
Geom name: ada1
Providers:
1. Name: ada1
Mediasize: 21474836480 (20G)
Sectorsize: 512
Mode: r0w0e0
descr: VMware Virtual SATA Hard Drive
lunid: 5000c29b7087779c
ident: 01000000000000000001
rotationrate: 0
fwsectors: 63
fwheads: 15
Geom name: ada2
Providers:
1. Name: ada2
Mediasize: 21474836480 (20G)
Sectorsize: 512
Mode: r0w0e0
descr: VMware Virtual SATA Hard Drive
lunid: 5000c291256cbeac
ident: 02000000000000000001
rotationrate: 0
fwsectors: 63
fwheads: 15
Geom name: ada3
Providers:
1. Name: ada3
Mediasize: 21474836480 (20G)
Sectorsize: 512
Mode: r0w0e0
descr: VMware Virtual SATA Hard Drive
lunid: 5000c29eb727914f
ident: 03000000000000000001
rotationrate: 0
fwsectors: 63
fwheads: 15
Geom name: ada4
Providers:
1. Name: ada4
Mediasize: 21474836480 (20G)
Sectorsize: 512
Mode: r0w0e0
descr: VMware Virtual SATA Hard Drive
lunid: 5000c29383fbb0c1
ident: 04000000000000000001
rotationrate: 0
fwsectors: 63
fwheads: 15
Geom name: da1
Providers:
1. Name: da1
Mediasize: 32212254720 (30G)
Sectorsize: 512
Stripesize: 1048576
Stripeoffset: 0
Mode: r0w0e0
descr: VMware Virtual disk
ident: (null)
rotationrate: 0
fwsectors: 63
fwheads: 255
Geom name: da0
Providers:
1. Name: da0
Mediasize: 52613349376 (49G)
Sectorsize: 512
Stripesize: 4096
Stripeoffset: 0
Mode: r2w2e3
descr: VMware Virtual disk
ident: (null)
rotationrate: 0
fwsectors: 63
fwheads: 255创建一个基本存储池
下面的命令我们创建了一个基本存储池,数据通过这两个磁盘以动态方式进行条带化。
zpool create -f diskz ada0 ada1查看下磁盘信息,创建的diskz会自动挂载。我们也可以修改存储池的altroot属性修改位置。

查看存储池
zpool list可以列出系统上的存储池列表。
➜ ~ zpool list
NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
diskz 39G 384K 39.0G - - 0% 0% 1.00x ONLINE -
zroot 46.5G 6.01G 40.5G - - 0% 12% 1.00x ONLINE -查看存储池状态信息
➜ ~ zpool status diskz
pool: diskz
state: ONLINE
config:
NAME STATE READ WRITE CKSUM
diskz ONLINE 0 0 0
ada0 ONLINE 0 0 0
ada1 ONLINE 0 0 0
errors: No known data errors查看存储池参数信息
使用zpool get all diskz可以查看存储池的参数信息。可以看到参数非常之多,也证明了ZFS的强大功能。
➜ ~ zpool get all diskz
NAME PROPERTY VALUE SOURCE
diskz size 39G -
diskz capacity 0% -
diskz altroot - default
diskz health ONLINE -
diskz guid 14365178456510238208 -
diskz version - default
diskz bootfs - default
diskz delegation on default
diskz autoreplace off default
diskz cachefile - default
diskz failmode wait default
diskz listsnapshots off default
diskz autoexpand off default
diskz dedupratio 1.00x -
diskz free 39.0G -
diskz allocated 384K -
diskz readonly off -
diskz ashift 0 default
diskz comment - default
diskz expandsize - -
diskz freeing 0 -
diskz fragmentation 0% -
diskz leaked 0 -
diskz multihost off default
diskz checkpoint - -
diskz load_guid 16804288557441977596 -
diskz autotrim off default
diskz compatibility off default
diskz bcloneused 0 -
diskz bclonesaved 0 -
diskz bcloneratio 1.00x -
diskz feature@async_destroy enabled local
diskz feature@empty_bpobj enabled local
diskz feature@lz4_compress active local
diskz feature@multi_vdev_crash_dump enabled local
diskz feature@spacemap_histogram active local
diskz feature@enabled_txg active local
diskz feature@hole_birth active local
diskz feature@extensible_dataset active local
diskz feature@embedded_data active local
diskz feature@bookmarks enabled local
diskz feature@filesystem_limits enabled local
diskz feature@large_blocks enabled local
diskz feature@large_dnode enabled local
diskz feature@sha512 enabled local
diskz feature@skein enabled local
diskz feature@edonr enabled local
diskz feature@userobj_accounting active local
diskz feature@encryption enabled local
diskz feature@project_quota active local
diskz feature@device_removal enabled local
diskz feature@obsolete_counts enabled local
diskz feature@zpool_checkpoint enabled local
diskz feature@spacemap_v2 active local
diskz feature@allocation_classes enabled local
diskz feature@resilver_defer enabled local
diskz feature@bookmark_v2 enabled local
diskz feature@redaction_bookmarks enabled local
diskz feature@redacted_datasets enabled local
diskz feature@bookmark_written enabled local
diskz feature@log_spacemap active local
diskz feature@livelist enabled local
diskz feature@device_rebuild enabled local
diskz feature@zstd_compress enabled local
diskz feature@draid enabled local
diskz feature@zilsaxattr enabled local
diskz feature@head_errlog active local
diskz feature@blake3 enabled local
diskz feature@block_cloning enabled local
diskz feature@vdev_zaps_v2 active local销毁存储池
使用zpool destroy命令可以销毁存储池。
➜ ~ zpool destroy diskz创建镜像存储池
开始我们创建的是基本存储池,接下来我们创建一个镜像存储池,镜像存储池可以在每个磁盘上创建冗余数据。在下面的命令中,我们指定了mirror参数。
➜ ~ zpool create -f diskz_mirror mirror ada0 ada1
➜ ~ zpool status diskz_mirror
pool: diskz_mirror
state: ONLINE
config:
NAME STATE READ WRITE CKSUM
diskz_mirror ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
ada0 ONLINE 0 0 0
ada1 ONLINE 0 0 0
errors: No known data errors创建RAID-Z存储池
创建单奇偶校验 RAID-Z 池与创建镜像池基本相同,不同之处是使用 raidz 或 raidz1 关键字而不是 mirror。
➜ ~ zpool create diskz raidz ada0 ada1 ada2
➜ ~ zpool status diskz
pool: diskz
state: ONLINE
config:
NAME STATE READ WRITE CKSUM
diskz ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
ada0 ONLINE 0 0 0
ada1 ONLINE 0 0 0
ada2 ONLINE 0 0 0
errors: No known data errors存储池常用属性
readonly属性
该属性指示存储池是否是只读的。我们查看下前面创建的diskz存储池,可以看到该属性默认是关闭的。
➜ ~ zpool get readonly diskz
NAME PROPERTY VALUE SOURCE
diskz readonly off -修改readonly属性,将存储池设置为只读。
# 可以看到直接无法设置,可以在import时候设置该属性
➜ ~ zpool set readonly=on diskz
cannot set property for 'diskz': property 'readonly' can only be set at import time
# 导出存储池,类似于umount命令
➜ ~ zpool export diskz
# 导入存储池,并设置readonly属性,类似mount命令
➜ ~ zpool import -o readonly=on diskz
# 查看存储池状态,可以看到readonly属性已经设置为on
➜ ~ zpool get readonly diskz
NAME PROPERTY VALUE SOURCE
diskz readonly on -
# 测试确实无法写入文件
➜ ~ cd /diskz
➜ /diskz ifconfig > ifconfig.txt
zsh: read-only file system: ifconfig.txtcomment属性
该属性用于描述存储池的用途,默认是空的。
➜ ~ zpool set comment="This is a description" diskz
➜ ~ zpool get comment diskz
NAME PROPERTY VALUE SOURCE
diskz comment This is a description local总结
参考文档
本文分享自 FreeSWITCH中文社区 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!