Snap简介(snap介绍)
919
2022-05-28
基本概念
ZFS有三个概念:
1. Z池 - zpool
2. Z集 - dataset
3. Z卷 - volume
Z池
zpool create local /dev/sdb /dev/sdc /dev/sdd /dev/sde
这就创建了一个名叫local的Z池。
Z池有如下类型:
Z集
当一个Z池创建出来,附带有一个同名的Z集也创建出来了:
zfs list #=> NAME USED AVAIL REFER MOUNTPOINT local 7.86G 185G 24K /local
注意这个Z集挂载在/local, 这个目录可以做一个正常的目录来用。
可以在Z集上创建新的Z集:
zfs create local/data zfs list #=> NAME USED AVAIL REFER MOUNTPOINT local 7.86G 185G 24K /local local/data 24K 185 24K /local/data
Z卷
创建Z卷:
zfs create -V 10G local/vda
Z卷是一个块设备,可以按需要分区,格式化:
mkfs.xfs /dev/zvol/local/vda
冗余删除
zfs有两个杀手级的特性: 1. 重复数据删除, 2. 实时压缩。
默认这两个特性是关闭的,可以这样打开:
zfs set dedup=on local zfs set compress=lz4 local
注意这是在最顶层local打开的,最顶层打开子Z集或Z卷自动继承。也可以对 某个子Z集或Z卷打开。
下面做一些测试。
生成1G随机文件:
cd /local/data dd if=/dev/urandom of=data.1g count=1024 bs=1M 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 5.42638 s, 198 MB/s
拷贝1000份:
for ((i=0; i<1000; i++)); do cp data.1g $i.data.1g done
简单算一下,这么得有1000G的数据,而Z池local也就200G的容量。不开启 dedup是装不下的。列一下:
zpool list NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT local 199G 955M 198G - 2% 1% 910.78x ONLINE -
可以看到DEDUP有910多倍。
注意这个DEDUP是跨Z集和Z卷的。现拷贝10个文件到Z卷:
mount /dev/zvol/local/vda /mnt cp -v [0-9].data.1g /mnt
用zpool list查看使用情况几乎没有涨。而du显示:
du -hs /local/data #=> 789G /local/data/ du -hs /mnt #=> 7.9G /mnt
因此zfs很适合放虚机或者容器镜像,因为这些镜像里大部分文件都是重复的。
软件开发 云计算
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。