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 /]#

 

猜你喜欢

转载自www.cnblogs.com/missyou-shiyh/p/12028653.html