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

夢共裡醉發表於2021-10-12
虛擬資料優化器(VDO)是一種塊虛擬化技術,可提供透明的資料重複刪除功能。通過消除冗餘的資料塊,VDO可以大大減少實際使用的磁碟容量。

VDO由兩個核心模組和兩個 組成:

由下面兩個核心模組組成:

  • kvdo - 該模組載入到裝置管理器層,提供用於重複資料刪除的塊儲存卷。
  • uds - 該模組負責與VDO磁碟上的通用的重複資料刪除索引進行通訊。

包括兩個 行工具:

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

8

安裝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可以大大減少實際使用的磁碟容量。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524109/viewspace-2795493/,如需轉載,請註明出處,否則將追究法律責任。

相關文章