Centos8中安裝並配置VDO來優化存儲空間


虛擬數據優化器(VDO)是一種塊虛擬化技術,可提供透明的數據重復刪除功能。通過消除冗余的數據塊,VDO可以大大減少實際使用的磁盤容量。

VDO由兩個內核模塊和兩個命令組成:

由下面兩個內核模塊組成:

  • kvdo - 該模塊加載到設備管理器層,提供用於重復數據刪除的塊存儲卷。
  • uds - 該模塊負責與VDO磁盤上的通用的重復數據刪除索引進行通信。

包括兩個命令行工具:

  • vdo - 用於創建,刪除,啟動和停止VDO卷,以及執行其他配置操作。
  • vdostats - 用於報告VDO卷的各個方面,包括有效的減少和物理卷的利用率。
系統環境

Centos8

安裝VDO

下面命令安裝vdo和相關依賴,安裝完成之后重啟系統:

[root@localhost ~]# yum -y install vdo
[root@localhost ~]# reboot

Centos8中安裝並配置VDO來優化存儲空間Centos8中安裝並配置VDO來優化存儲空間

創建一個VDO設備

確保有一個空余磁盤或分區可供VDO使用。盡管可以在LVM邏輯卷上面創建VDO卷,但是重新引導系統時會出現引導順序問題。所以再裸盤上面創建vdo卷之后在它之上創建LVM邏輯卷。
Centos8中安裝並配置VDO來優化存儲空間Centos8中安裝並配置VDO來優化存儲空間
下面使用一塊20GB的磁盤,/dev/sda做vdo卷
下面創建vdo卷:

[root@localhost ~]# vdo create --name=vdolvm --device /dev/sda --vdoLogicalSize 60G --writePolicy async 
Creating VDO vdolvm
      The VDO volume can address 16 GB in 8 data slabs, each 2 GB.
      It can grow to address at most 16 TB of physical storage in 8192 slabs.
      If a larger maximum size might be needed, use bigger slabs.
Starting VDO vdolvm
Starting compression on VDO vdolvm
VDO instance 0 volume is ready at /dev/mapper/vdolvm

Centos8中安裝並配置VDO來優化存儲空間Centos8中安裝並配置VDO來優化存儲空間
下面分解一下命令,看看所使用的選項:

  • --device - 指定在哪個硬盤上創建vdo卷
  • --vdoLogicalSize - 這里我們指定了容量大小為60G,比我們實際磁盤20G大了許多。假設我們將從重復數據刪除中至少得到3:1的減少,對於大多數的數據,這是相當保守的,但如果你的數據沒有很多重復的,那么比率應該是不同的。日志文件和其他純文本文件通常可以很好地進行重復數據刪除,可能會得到10:1甚至更高的重復數據刪除率。但是二進制文件,如視頻、音頻或壓縮包,將遠遠低於3:1,甚至在某些情況下1:1。這種情況下不建議使用vdo卷。
  • --writePolicy - vdo有三種寫策略:sync:只有在數據寫入物理設備后,才會確認對VDO卷的寫入。async:在數據寫入緩存后被確認。如果在設備故障或掉電之前沒有刷新緩存,可能會導致數據丟失。auto:在這種默認模式下,VDO將檢查存儲設備並確定它是否支持刷新。如果是這樣,VDO將使用異步模式。如果沒有,它將使用同步模式。
查看新建VDO卷相關的信息

正如我們在上一步的輸出中看到的,VDO創建了一個名為/dev/mapper/vdolvm的新dm設備。當我們創建lvm卷組時,這就是我們將要使用的設備。

[root@localhost ~]# ll /dev/mapper/vdolvm 
lrwxrwxrwx 1 root root 7 Mar  4 13:31 /dev/mapper/vdolvm -> ../dm-2

Centos8中安裝並配置VDO來優化存儲空間Centos8中安裝並配置VDO來優化存儲空間
讓我們看看使用vdostats可以獲得有關vdo卷的什么樣的信息:

[root@localhost ~]# vdostats --hu
Device                    Size      Used Available Use% Space saving%
/dev/mapper/vdolvm       20.0G      4.0G     16.0G  20%           N/A

Centos8中安裝並配置VDO來優化存儲空間Centos8中安裝並配置VDO來優化存儲空間
由於我們尚未將任何數據寫入該卷,因此Space saving%字段為N/A。稍后我們將寫一些數據時,在此處看到更多有用的信息。

可以看到上圖中,我們還沒有寫任何數據,但是已經有4GB,20%的空間正在使用中了!這是因為“通用重復數據刪除索引”已被寫入磁盤。這基本上是一個數據庫,用於記錄slab指紋及其位置。這就是使重復數據刪除成為可能的原因。

將VDO卷作為普通磁盤設備進行設置

現在我們已經創建了VDO設備,我們可以對其進行分區並格式化,或者在這個vod卷上面創建lvm邏輯卷。下面我們創建邏輯卷:

# 創建物理卷
[root@localhost ~]# pvcreate /dev/mapper/vdolvm 
  Physical volume "/dev/mapper/vdolvm" successfully created.
# 創建卷組vdo_vg
[root@localhost ~]# vgcreate vdo_vg /dev/mapper/vdolvm 
  Volume group "vdo_vg" successfully created
# 查看vdo_vg卷組的信息
[root@localhost ~]# vgdisplay vdo_vg 
  --- Volume group ---
  VG Name               vdo_vg
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <60.00 GiB
  PE Size               4.00 MiB
  Total PE              15359
  Alloc PE / Size       0 / 0   
  Free  PE / Size       15359 / <60.00 GiB
  VG UUID               qfPiH6-eMCU-Z6kr-eeCu-jd0J-8lmf-49daZX

從上面可以看到,lvm認為我們的基礎磁盤為120GB,盡管我們知道它只有40GB。由於LVM不知道VDO后端磁盤的大小。
Centos8中安裝並配置VDO來優化存儲空間Centos8中安裝並配置VDO來優化存儲空間
現在,讓我們創建幾個邏輯卷吧:

[root@localhost ~]# lvcreate -n vdo_lv01 -L 15G vdo_vg 
[root@localhost ~]# lvcreate -L 15G -n vdo_lv02 vdo_vg
[root@localhost ~]# lvcreate -L 15G -n vdo_lv03 vdo_vg 
# 查看創建好的邏輯卷
[root@localhost ~]# lvs -o +devices

Centos8中安裝並配置VDO來優化存儲空間Centos8中安裝並配置VDO來優化存儲空間

創建掛載點並掛載文件系統

通常,創建文件系統后,它將在設備上運行Trim操作。使用VDO時,這不是理想的選擇,因為磁盤容量是按需分配的。因此,我們要告訴mkfs在文件系統創建過程中不要丟棄塊。對於XFS,請使用-K選項。對於EXT4,請使用-E nodiscard。下面使用了一個for循環,將三個邏輯卷格式化為XFS文件系統:

[root@localhost ~]# for i in `seq 1 3`; do mkfs.xfs -K /dev/vdo_vg/vdo_lv0$i ; done
meta-data=/dev/vdo_vg/vdo_lv01   isize=512    agcount=4, agsize=983040 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=3932160, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
meta-data=/dev/vdo_vg/vdo_lv02   isize=512    agcount=4, agsize=983040 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=3932160, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
meta-data=/dev/vdo_vg/vdo_lv03   isize=512    agcount=4, agsize=983040 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=3932160, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

Centos8中安裝並配置VDO來優化存儲空間Centos8中安裝並配置VDO來優化存儲空間
當我們將新文件系統掛載到掛載點時,我們要告訴XFS放棄塊,因為這將大大加快文件刪除的速度。

[root@localhost ~]# mkdir -p /data/{01..03}
[root@localhost ~]# for i in `seq 1 3`; do mount -o discard /dev/vdo_vg/vdo_lv0$i /data/0$i; done

Centos8中安裝並配置VDO來優化存儲空間Centos8中安裝並配置VDO來優化存儲空間
現在,我們向設備寫入了少量數據,我們可以再次檢查VDO卷以查看情況是否已更改。

[root@localhost ~]# vdostats --hu
Device                    Size      Used Available Use% Space saving%
/dev/mapper/vdolvm       20.0G      4.0G     16.0G  20%           86%

Centos8中安裝並配置VDO來優化存儲空間Centos8中安裝並配置VDO來優化存儲空間

設置為開機啟動

下面將三個邏輯卷設置為開機啟動,需要在fstab文件中添加x-systemd.device-timeout=0x-systemd.requires=vdo.service

使用blkid查看這三個邏輯卷的UUID。
Centos8中安裝並配置VDO來優化存儲空間Centos8中安裝並配置VDO來優化存儲空間
使用上面獲取到的UUID,添加在/etc/fstab文件中:

[root@localhost systemd]# vim /etc/fstab 

UUID="bd2c1c61-4656-4065-b5a0-3ca53ef0f949" /data/01  xfs  defaults,x-systemd.device-timeout=0,x-systemd.requires=vdo.service 0 0
UUID="1e53579b-f1da-4f77-80e6-d61a40515525" /data/02  xfs  defaults,x-systemd.device-timeout=0,x-systemd.requires=vdo.service 0 0
UUID="d41bf7e2-bf75-4db7-b323-a923375f6a6e" /data/03  xfs  defaults,x-systemd.device-timeout=0,x-systemd.requires=vdo.service 0 0
總結

虛擬數據優化器(VDO)是一種塊虛擬化技術,可提供透明的數據重復刪除功能。通過消除冗余的數據塊,VDO可以大大減少實際使用的磁盤容量。


免責聲明!

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



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