ZFS虚拟磁盘

我们在学习类似ZFS这样存储技术的时候,往往没有企业级的多磁盘物理服务器设备。但是,和虚拟化技术类似,我们并不需要购买昂贵的设备才能完成实践。Linux支持将文件作为 VDEV ,这样就可以用一台服务器来满足各种硬件虚拟磁盘条件,我们可以演练技术,并为生产部署做好准备。

备注

本文实践在 Fedora 虚拟机 ,也就是 开发环境z-dev 上完成

注意: 使用文件作为 VDEV 不可用于存储 真实 数据,仅用于开发和测试

创建虚拟磁盘

使用 truncate 工具创建文件:

使用 truncate 构建3个2G大小的虚拟磁盘
mkdir /vdisk
for i in {1..3}; do truncate -s 2G /vdisk/$i.img; done

RAIDZ1

RAIDZ1 是一种类似RAID 5的存储技术,提供了 (n-1)/n 的可用容量

创建名为 zpool-data 的 raidz类型 zfs存储池
zpool create zpool-data raidz /vdisk/1.img /vdisk/2.img /vdisk/3.img

这里我曾经使用过 ZFS/Virtual disks 文档中指定类型 zraid1

zpool create zpool-data zraid1 /vdisk/1.img /vdisk/2.img /vdisk/3.img

但是会报错:

cannot open 'zraid1': no such device in /dev
must be a full path or shorthand device name

所以还是改为 raidz 类型

  • 检查zpool存储池:

检查zpool存储池
zpool list

输出显示:

检查zpool存储池输出
NAME         SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
zpool-data  5.50G   190K  5.50G        -         -     0%     0%  1.00x    ONLINE  -
  • 检查zfs(包括挂载信息):

检查zfs
zfs list

输出显示:

检查zfs信息输出
NAME         USED  AVAIL     REFER  MOUNTPOINT
zpool-data   127K  3.54G     30.6K  /zpool-data
  • 此时使用 df -h 名利ing检查,也可以看到目录已经挂载好:

    Filesystem      Size  Used Avail Use% Mounted on
    ...
    zpool-data      3.6G  128K  3.6G   1% /zpool-data
    
  • 检查zpool状态:

检查zpool状态
zpool status zpool-data

显示输出:

检查zpool状态输出
  pool: zpool-data
 state: ONLINE
config:

        NAME              STATE     READ WRITE CKSUM
        zpool-data        ONLINE       0     0     0
          raidz1-0        ONLINE       0     0     0
            /vdisk/1.img  ONLINE       0     0     0
            /vdisk/2.img  ONLINE       0     0     0
            /vdisk/3.img  ONLINE       0     0     0

errors: No known data errors

参考