ZFS used as block device - ZVOL

前面两篇BLOG介绍了ZFS的性能提升原理和测试, ZFS的快照回滚和克隆方法.
http://blog.163.com/digoal@126/blog/static/163877040201441694022110/

http://blog.163.com/digoal@126/blog/static/163877040201441723450443/

本文将介绍一下ZFS的另一个强大之处, 将ZFS文件系统的功能剥离, 直接当块设备使用, 同时还兼具了快照, 克隆等功能.

块设备可以给OS层使用, 创建文件系统.

创建ZFS块设备ZVOL, 使用zfs命令的-V选项, 指定块设备大小.

例如, 创建1G的一个块设备, 在zptest池中, 命名为disk1 :

[root@db-172-16-3-150 ~]# zfs create -V 1G zptest/disk1
/dev/zptest/disk1 may not be immediately available
[root@db-172-16-3-150 ~]# zpool status
  pool: zptest
 state: ONLINE
  scan: none requested
config:

        NAME                            STATE     READ WRITE CKSUM
        zptest                          ONLINE       0     0     0
          /ssd1/zfs.disk1               ONLINE       0     0     0
          /ssd1/zfs.disk2               ONLINE       0     0     0
          /ssd1/zfs.disk3               ONLINE       0     0     0
          /ssd1/zfs.disk4               ONLINE       0     0     0
          /ssd1/zfs.disk5               ONLINE       0     0     0
        logs
          mirror-4                      ONLINE       0     0     0
            /ssd4/zfs.log1              ONLINE       0     0     0
            /ssd4/zfs.log2              ONLINE       0     0     0
        cache
          wwn-0x5e83a97e827c316e-part1  ONLINE       0     0     0

errors: No known data errors
[root@db-172-16-3-150 ~]# zfs list
NAME                 USED  AVAIL  REFER  MOUNTPOINT
zptest              11.6G  27.5G    32K  /zptest
zptest/disk1        1.03G  28.5G    16K  -
zptest/pg93         9.89G  27.5G  3.63G  /zptest/pg93
zptest/pg93_clone1   662M  27.5G  3.62G  /zptest/pg93_clone1

可以对ZVOL分区, 也可以不分区直接使用.

[root@db-172-16-3-150 ~]# fdisk -l /dev/zd0
Disk /dev/zd0: 1073 MB, 1073741824 bytes
16 heads, 63 sectors/track, 2080 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Sector size (logical/physical): 512 bytes / 8192 bytes
I/O size (minimum/optimal): 8192 bytes / 8192 bytes
Disk identifier: 0x00000000

在ZVOL上创建文件系统, 加载, 并且对文件系统进行操作, 快照.

[root@db-172-16-3-150 ~]# mkfs.ext4 /dev/zd0

[root@db-172-16-3-150 ~]# mount /dev/zd0 /mnt
[root@db-172-16-3-150 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sdc1              29G  9.3G   19G  34% /
tmpfs                  48G     0   48G   0% /dev/shm
/dev/sdc3              98G   30G   63G  33% /opt
/dev/sdd1             183G   53G  122G  30% /ssd1
/dev/sdb1             221G   39G  171G  19% /ssd4
zptest                 28G     0   28G   0% /zptest
zptest/pg93            32G  3.7G   28G  12% /zptest/pg93
zptest/pg93_clone1     32G  3.7G   28G  12% /zptest/pg93_clone1
/dev/zd0             1008M   34M  924M   4% /mnt

[root@db-172-16-3-150 ~]# cd /mnt
[root@db-172-16-3-150 mnt]# ll
total 16
drwx------ 2 root root 16384 May 18 15:42 lost+found
[root@db-172-16-3-150 mnt]# touch a
[root@db-172-16-3-150 mnt]# zfs snapshot zptest/disk1@`date +%F%T`
[root@db-172-16-3-150 mnt]# touch b
[root@db-172-16-3-150 mnt]# zfs snapshot zptest/disk1@`date +%F%T`
[root@db-172-16-3-150 mnt]# touch c
[root@db-172-16-3-150 mnt]# zfs snapshot zptest/disk1@`date +%F%T`
[root@db-172-16-3-150 mnt]# touch d
[root@db-172-16-3-150 mnt]# zfs snapshot zptest/disk1@`date +%F%T`

快照的回滚测试 : 

[root@db-172-16-3-150 mnt]# cd
[root@db-172-16-3-150 ~]# umount /mnt

[root@db-172-16-3-150 ~]# zfs list -t snapshot
NAME                                    USED  AVAIL  REFER  MOUNTPOINT
zptest/disk1@2014-05-1815:43:51            0      -  48.6M  -
zptest/disk1@2014-05-1815:43:54            0      -  48.6M  -
zptest/disk1@2014-05-1815:43:56            0      -  48.6M  -
zptest/disk1@2014-05-1815:44:00          33K      -  48.6M  -
zptest/pg93@2014-05-1721:54:55          143M      -   185M  -
zptest/pg93@2014-05-1723:17:23         99.0M      -  3.65G  -
zptest/pg93@2014-05-1723:18:11         5.10M      -  3.65G  -
zptest/pg93@2014-05-1723:35:32         2.49G      -  3.65G  -
zptest/pg93_clone1@2014-05-1800:31:03    21K      -  3.62G  -

[root@db-172-16-3-150 ~]# zfs rollback -r zptest/disk1@2014-05-1815:43:54
/dev/zptest/disk1 may not be immediately available
[root@db-172-16-3-150 ~]# mount /dev/zd0 /mnt
[root@db-172-16-3-150 ~]# cd /mnt
[root@db-172-16-3-150 mnt]# ll
total 16
-rw-r--r-- 1 root root     0 May 18 15:43 a
drwx------ 2 root root 16384 May 18 15:42 lost+found

[参考]

1. http://blog.163.com/digoal@126/blog/static/163877040201441694022110/

2. http://blog.163.com/digoal@126/blog/static/163877040201441723450443/[]

时间: 2024-08-04 04:10:29

ZFS used as block device - ZVOL的相关文章

JBD Journaling block device

在看man mount, ext4章节关于barrier的讲解时有提到JBD. 这里摘录一下wikipedia的解释. JBD在Linux内核中是负责记录块设备日志的, 某些文件系统会使用JBD以及它的事务特性来确保文件系统在操作系统异常DOWN机后可恢复到一致性的状态. JBD, or journaling block device, is a generic block device journaling layer in the Linux kernel written by Stephe

DRBD (Distributed Replicated Block Device)

DRBD (Distributed Replicated Block Device) Homepage: http://www.drbd.org/ 实验环境需要两台电脑,如果你没有,建议你使用VMware,并且为每一个虚拟机添加两块硬盘. 实验环境 master: 192.168.0.1 DRBD:/dev/sdb slave: 192.168.0.2 DRBD:/dev/sdb 1.1. disk and partition Each of the following steps must b

network block device(nbd)

网络块设备是一个廉价的共享存储解决方案, 结合分布式文件系统可以构建比较有规模的共享块设备. 例如, 在以下架构里面, 分布式存储提供冗余,共享和扩展性.  多台NBD提供冗余以及共享网络块设备. NBD SERVER和分布式存储可以共享主机, 也可以分开主机.  这个架构需要注意的问题, 例如操作系统层缓存, 当从nbd-server切换到另一个nbd-server时, 如果有缓存为写入镜像文件的话, 会导致数据丢失. 例子 :  使用nbd构建Oracle-RAC :  典型的例子, 使用共

gluster3.4添加【device vg】参数来创建block device出错

问题描述 gluster3.4添加[device vg]参数来创建block device出错 各位大牛求指教:最近刚接触了gluster3.4中的部分内容,主要涉及的是块设备(block device)这块,现在碰到的问题是:当我加入[device vg]参数想创建块设备,会报错: [root@localhost ~]# gluster volume create bdvol001 device vg 192.168.1.116:/mount_dir Wrong brick type: dev

use ceph for openstack block device & object storage (cinder, glance)

转 :  http://docwiki.cisco.com/wiki/OpenStack:Ceph-COI-Installation OpenStack:Ceph-COI-Installation Contents [hide] 1 Installing a ceph cluster and configuring rbd-backed cinder volumes. 1.1 First steps 2 Choosing Your Configuration 2.1 Ceph Standalon

ZFS thin provisioning / sparse ZVOL

zfs支持在zpool基础上创建块设备或volume. 这个volume同样拥有快照等zfs的功能. 正常情况下创建zvol时, -V指定的空间会直接从zpool中取出, 确保这个zvol可以使用指定的空间, 而不会导致空间溢出的问题. [root@db- zp1]# df -h Filesystem      Size  Used Avail Use% Mounted on /dev/sda1        32G  3.7G   27G  13% / tmpfs            16G

ZFS (sync, async) R/W IOPS / throughput performance tuning

本文讨论一下zfs读写IOPS或吞吐量的优化技巧, (读写操作分同步和异步两种情况). 影响性能的因素 1. 底层设备的性能直接影响同步读写 iops, throughput. 异步读写和cache(arc, l2arc) 设备或配置有关. 2. vdev 的冗余选择影响iops, through. 因为ZPOOL的IO是均分到各vdevs的, 所以vdev越多, IO和吞吐能力越好. vdev本身的话, 写性能 mirror > raidz1 > raidz2 > raidz3 , 

RHEL 7 Technology Preview - lvm cache like zfs l2arc, bcache, flashcache

zfs l2arc不回写, 不存储脏数据. LVM cache会不会回写(会, 因为默认是writeback的, 显然是可以回写的, 所以LVM和flashcache类似, 性能应该很好)? LVM cache能否达到flashcache的性能? 同时lvm还支持多个ssd设备mirror. LVM Cache Red Hat Enterprise Linux 7 introduces LVM cache as a Technology Preview. This feature allows

ZFS case : top CPU 100%sy, when no free memory trigger it.

最近在一个系统频频遇到负载突然飙升到几百, 然后又下去的情况. 根据负载升高的时间点对应的数据库日志分析, 对应的时间点, 有大量的类似如下的日志 : "UPDATE waiting",2015-01-09 01:38:47 CST,979/7,2927976054,LOG,00000,"process 26366 still waiting for ExclusiveLock on extension of relation 686062002 of database 35