ZFS简介

举报
nanjunjie 发表于 2019/12/27 18:16:18 2019/12/27
【摘要】 本文简单介绍ZFS卷管理在Linux的使用。梳理基本概念,剖析适用场景,并给出 一些实际操作的例子。


基本概念


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池有如下类型:

类型 描述 创建命令
Single 单磁盘,快,但一旦有盘损坏数据全丢zpool create local /dev/sdb
Mirror 镜像zpool create local mirror /dev/sdb /dev/sdc
RaidZ1 相当RAID 3, 可丢1块盘zpool create local raidz1 /dev/sdb /dev/sdc
RaidZ2 相当RAID 5, 可丢2块盘zpool create local raidz2 /dev/sdb /dev/sdc /dev/sdd
RaidZ3 相当RAID 7, 可丢3块盘zpool create local raidz3 /dev/sdb /dev/sdc /dev/sdd /dev/sde


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很适合放虚机或者容器镜像,因为这些镜像里大部分文件都是重复的。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。