• CentOS7.7 下配置zfsonlinux


    1、安装zfsonlinux的epel源:

    yum install -y http://download.zfsonlinux.org/epel/zfs-release.el7_7.noarch.rpm

     

    注意:

    (1).提供了kABI-tracking kmod 和 DKMS 两种模式的包,用户可以选择安装kABI-tracking kmod或DKMS风格的包。

    (2).默认情况下,zfs-release包被配置为安装DKMS风格的包,因为它们可以与各种内核一起工作。

    (3).如果为了安装kmods,在/etc/yum.repos.d/zfs.repo中使用缺省存储库。必须从zfs切换到zfs-kmod。

    (4). Starting with EL7.7 zfs-0.8 will become the default, EL7.6 and older will continue to track the zfs-0.7 point releases.

     

     

    2、安装zfs:

    yum install -y kernel-devel zfs

     

     

    3、创建pool:

    [root@cent7db02 ~]# lsblk

    NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

    sda 8:0 0 40G 0 disk

    ├─sda1 8:1 0 1G 0 part /boot

    └─sda2 8:2 0 39G 0 part

    ├─centos-root 253:0 0 37G 0 lvm /

    └─centos-swap 253:1 0 2G 0 lvm [SWAP]

    sdb 8:16 0 10G 0 disk

    sdc 8:32 0 10G 0 disk

    sdd 8:48 0 10G 0 disk

    sde 8:64 0 10G 0 disk

    sr0 11:0 1 10.3G 0 rom

    [root@cent7db02 ~]#

    系统中提供了4块磁盘。sdb 和 sdc 当作机械盘;sdd 和 sde 当作ssd,后期用作读缓存和写缓存。

     

    检查zfs模块是否工作:

    [root@cent7db02 ~]# lsmod |grep zfs

    zfs 3980511 0

    zunicode 331170 1 zfs

    zlua 147429 1 zfs

    zcommon 89315 1 zfs

    znvpair 94388 2 zfs,zcommon

    zavl 15167 1 zfs

    icp 288913 1 zfs

    spl 103804 5 icp,zfs,zavl,zcommon,znvpair

    [root@cent7db02 ~]#

    如果zfs模块未加载,则手动加载:

    [root@cent7db02 ~]# /sbin/modprobe zfs

     

    创建资源池:

    [root@cent7db02 ~]# zpool create tank mirror sdb sdc cache ata-VBOX_HARDDISK_VB840e479a-2bbfb13c

    [root@cent7db02 ~]#

    说明:

    sdb 和 sdc 创建成mirror模式的永久存储,sdd 作为cache使用。此处使用sdd的vvid,而不能直接使用sdd.

     

    检查资源池状态:

    [root@cent7db02 /]# zpool status

    pool: tank

    state: ONLINE

    scan: none requested

    config:

     

    NAME STATE READ WRITE CKSUM

    tank ONLINE 0 0 0

    mirror-0 ONLINE 0 0 0

    sdb ONLINE 0 0 0

    sdc ONLINE 0 0 0

    cache

    ata-VBOX_HARDDISK_VB840e479a-2bbfb13c ONLINE 0 0 0

     

    errors: No known data errors

    [root@cent7db02 /]# df -h

    Filesystem Size Used Avail Use% Mounted on

    devtmpfs 908M 0 908M 0% /dev

    tmpfs 919M 0 919M 0% /dev/shm

    tmpfs 919M 8.6M 911M 1% /run

    tmpfs 919M 0 919M 0% /sys/fs/cgroup

    /dev/mapper/centos-root 37G 1.5G 36G 4% /

    /dev/sda1 1014M 148M 867M 15% /boot

    tmpfs 184M 0 184M 0% /run/user/0

    /dev/sr0 11G 11G 0 100% /mnt/cdrom

    tank 9.3G 128K 9.3G 1% /tank

    [root@cent7db02 /]#

    说明:

    资源池其实是一个文件系统,例如当前的/tank.

     

    [root@cent7db02 /]# zpool iostat -v

    capacity operations bandwidth

    pool alloc free read write read write

    --------------------------------------- ----- ----- ----- ----- ----- -----

    tank 120K 9.50G 0 6 12.5K 46.2K

    mirror 120K 9.50G 0 6 12.5K 46.2K

    sdb - - 0 3 6.23K 23.1K

    sdc - - 0 3 6.23K 23.1K

    cache - - - - - -

    ata-VBOX_HARDDISK_VB840e479a-2bbfb13c 1K 9.99G 0 0 1.80K 338

    --------------------------------------- ----- ----- ----- ----- ----- -----

    [root@cent7db02 /]#

     

    注意:资源池提供多种方式进行创建。以上命令创建的资源池类似于2块机械磁盘做成一个raid1,另外一块SSD当作读缓存。

     

    资源池的创建模式如下所示:

    (1).simple pool : 创建命令:zpool create tank sdb sdc sdd sde

    (2).simple mirrored zpool: 创建命令:zpool create tank mirror sdb sdc sdd sde 类似于软raid1.

    (3).Nested VDEVs : 创建命令:zpool create tank mirror sdb sdc mirror sdd sde 类似于raid 1+0

    (4).File VDEVs : 将文件当作磁盘设备来创建资源池。仅用于测试目的,不建议用于生产。

    (5).Hybrid pools: 创建命令:zpool create tank mirror sdb sdc cache ata-VBOX_HARDDISK_VB840e479a-2bbfb13c ata-VBOX_HARDDISK_VB05a337a8-f5d56dc0 类似于带cache缓存. cache设备只能使用vvid,而不能使用盘符。而永久存储数据的pool设备可以使用盘符,并且不需要指定/dev这个绝对路径。

    (6).RAIDZ-1 : 创建命令:zpool create tank raidz1 sdb sdc sdd 类似于raid 5

    (7).RAIDZ-2 : 创建命令:zpool create tank raidz2 sdb sdc sdd sde 类似于raid 6

    (8).RAIDZ-3 : 创建命令:zpool create tank raidz3 sdb sdc sdd sde sdf 没有与之对应的硬件级raid。它是RAIDZ-1和RAIDZ-2的组合。

    (9).Hybrid RAIDZ : 创建命令:zpool create tank raidz1 sde sdf sdg raidz1 sdh sdi sdj raidz1 sdk sdl sdm raidz1 sdn sdo sdp 目的是提升性能,如果大量的磁盘放在一个RAID组时,性能会非常差。

     

    性能变化,RAID最好,RAIDZ最差:

    RAID-0 (fastest)

    RAID-1

    RAIDZ-1

    RAIDZ-2

    RAIDZ-3 (slowest)

     

    给资源池增加SLOG :

    [root@cent7db02 /]# zpool add tank log /dev/disk/by-id/ata-VBOX_HARDDISK_VB05a337a8-f5d56dc0

    [root@cent7db02 /]#

    [root@cent7db02 /]# zpool status

    pool: tank

    state: ONLINE

    scan: none requested

    config:

     

    NAME STATE READ WRITE CKSUM

    tank ONLINE 0 0 0

    mirror-0 ONLINE 0 0 0

    sdb ONLINE 0 0 0

    sdc ONLINE 0 0 0

    logs

    ata-VBOX_HARDDISK_VB05a337a8-f5d56dc0 ONLINE 0 0 0

    cache

    ata-VBOX_HARDDISK_VB840e479a-2bbfb13c ONLINE 0 0 0

     

    errors: No known data errors

    说明:

    最佳实践中增加SLOG时, 应该至少用两块SSD做成log mirror. 这样缓存写入的数据时可以数据冗余,不会造成数据丢失。

     

    [root@cent7db02 /]# zpool iostat -v

    capacity operations bandwidth

    pool alloc free read write read write

    --------------------------------------- ----- ----- ----- ----- ----- -----

    tank 160K 9.50G 0 8 10.6K 56.4K

    mirror 160K 9.50G 0 8 7.07K 38.6K

    sdb - - 0 4 3.53K 19.3K

    sdc - - 0 4 3.53K 19.3K

    logs - - - - - -

    ata-VBOX_HARDDISK_VB05a337a8-f5d56dc0 0 9.50G 0 3 38.5K 194K

    cache - - - - - -

    ata-VBOX_HARDDISK_VB840e479a-2bbfb13c 512 9.99G 0 0 1.02K 199

    --------------------------------------- ----- ----- ----- ----- ----- -----

    [root@cent7db02 /]#

     

    从资源池中划分zvol:

    [root@cent7db02 /]# zfs create -V 1G tank/disk1

    [root@cent7db02 /]# zfs create -V 1G tank/disk2

    [root@cent7db02 /]# zfs create -V 1G tank/disk3

    [root@cent7db02 /]# zfs create -V 1G tank/disk4

    [root@cent7db02 /]# zpool iostat -v

    capacity operations bandwidth

    pool alloc free read write read write

    --------------------------------------- ----- ----- ----- ----- ----- -----

    tank 475K 9.50G 0 4 356 1013K

    mirror 475K 9.50G 0 4 237 1013K

    sdb - - 0 2 118 506K

    sdc - - 0 2 118 506K

    logs - - - - - -

    ata-VBOX_HARDDISK_VB05a337a8-f5d56dc0 0 9.50G 0 0 122 615

    cache - - - - - -

    ata-VBOX_HARDDISK_VB840e479a-2bbfb13c 30.5K 9.99G 0 0 34 358K

    --------------------------------------- ----- ----- ----- ----- ----- -----

    [root@cent7db02 /]#

     

    查看块设备:

    [root@cent7db02 tank]# lsblk

    NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

    sda 8:0 0 40G 0 disk

    ├─sda1 8:1 0 1G 0 part /boot

    └─sda2 8:2 0 39G 0 part

    ├─centos-root 253:0 0 37G 0 lvm /

    └─centos-swap 253:1 0 2G 0 lvm [SWAP]

    sdb 8:16 0 10G 0 disk

    ├─sdb1 8:17 0 10G 0 part

    └─sdb9 8:25 0 8M 0 part

    sdc 8:32 0 10G 0 disk

    ├─sdc1 8:33 0 10G 0 part

    └─sdc9 8:41 0 8M 0 part

    sdd 8:48 0 10G 0 disk

    ├─sdd1 8:49 0 10G 0 part

    └─sdd9 8:57 0 8M 0 part

    sde 8:64 0 10G 0 disk

    ├─sde1 8:65 0 10G 0 part

    └─sde9 8:73 0 8M 0 part

    sr0 11:0 1 10.3G 0 rom /mnt/cdrom

    zd0 230:0 0 1G 0 disk

    zd16 230:16 0 1G 0 disk

    zd32 230:32 0 1G 0 disk

    zd48 230:48 0 1G 0 disk

    [root@cent7db02 tank]#

    说明:

    系统中多了4个块设备,分别为zd0/zd16/zd32/zd48.

     

    注意:

    目前zfs不支持通过iSCSI共享出去,看样子还是得用scst.

     

     

     

    ======================================================================

    测试cache功能:

    --进入/tank目录,模拟大量的数据写入:

    [root@cent7db02 tank]# pwd

    /tank

    [root@cent7db02 tank]# for i in {1..100}; do dd if=/dev/zero of=test$i.log bs=1M count=30 conv=fsync ; done

     

    --查看logs和cache的使用率:

    [root@cent7db02 /]# zpool iostat -v

    capacity operations bandwidth

    pool alloc free read write read write

    --------------------------------------- ----- ----- ----- ----- ----- -----

    tank 541M 8.97G 0 4 242 985K

    mirror 541M 8.97G 0 4 161 889K

    sdb - - 0 2 80 445K

    sdc - - 0 2 80 445K

    logs - - - - - -

    ata-VBOX_HARDDISK_VB05a337a8-f5d56dc0 121M 9.38G 0 0 82 97.0K

    cache - - - - - -

    ata-VBOX_HARDDISK_VB840e479a-2bbfb13c 474M 9.52G 0 0 23 322K

    --------------------------------------- ----- ----- ----- ----- ----- -----

    [root@cent7db02 /]#

     

  • 相关阅读:
    下载及爬取网页内容
    对于for循环的理解
    记录安装fiddle出现的问题
    Django
    12种可以参考的思路关于代码能干什么
    “字符文本中字符太多”错误及解决方法
    jQuery参考:jquery中的$(document).ready()与window.onload的区别
    页面定时刷新功能实现
    HTML:关于位置的几个概念
    Lambda表达式
  • 原文地址:https://www.cnblogs.com/missyou-shiyh/p/12028653.html
Copyright © 2020-2023  润新知