ZFS used as block device - ZVOL

简介:
前面两篇BLOG介绍了ZFS的性能提升原理和测试, ZFS的快照回滚和克隆方法.
本文将介绍一下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


[参考]
目录
相关文章
|
网络协议
VFS: Cannot open root device "nfs" or unknown-block(0,255)错误解决
VFS: Cannot open root device "nfs" or unknown-block(0,255)错误解决
533 0
|
Unix Linux 内存技术
Buildroot系列开发(七)block device9(上)
Buildroot系列开发(七)block device
126 1
Buildroot系列开发(七)block device9(上)
|
数据安全/隐私保护
Internal error XFS_WANT_CORRUPTED_GOTO at line 1635 of file fs/xfs/libxfs/xfs_alloc.c.
下面为解决问题中报的错误: Internal error XFS_WANT_CORRUPTED_GOTO at line 1635 of file fs/xfs/libxfs/xfs_alloc.c. Caller xfs_free_extent
422 0
Internal error XFS_WANT_CORRUPTED_GOTO at line 1635 of file fs/xfs/libxfs/xfs_alloc.c.
FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
/******************************************************************************** * FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck. * 说明: * 系统更新的时候遇到这个错误,记录一下处理步骤,其原因是我自己把其umount了 * 导致的问题。
6380 0
|
内存技术
嵌入式 VFS: Cannot open root device "mtdblock2" or unknown-block(2,0)
系统启动后,虽然nand驱动表现正常,但是最后挂载rootfs时候出错: Kernel command line: root=/dev/mtdblock2 rw init=/linuxrc console=ttyAMA1,115200 mem=64M rootfstype=yaffs2。
2266 0
|
Linux
Linux Buffer I/O error on device dm-4, logical block
Linux服务器日志(Oracle Linux Server release 5.7)里面出现了一些"Buffer I/O error on device dm-4, logical block 0"之类的错误,如下所示: Jul 3 02:33:24 localhost kernel: Buf...
7667 0
|
JavaScript 前端开发