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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM