溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Centos8中怎么使用VDO優(yōu)化存儲空間

發(fā)布時間:2022-02-17 10:44:25 來源:億速云 閱讀:170 作者:iii 欄目:開發(fā)技術(shù)

這篇“Centos8中怎么使用VDO優(yōu)化存儲空間”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Centos8中怎么使用VDO優(yōu)化存儲空間”文章吧。

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

Centos8中怎么使用VDO優(yōu)化存儲空間

系統(tǒng)環(huán)境

Centos8

安裝VDO

下面命令安裝vdo和相關(guān)依賴,安裝完成之后重啟系統(tǒng):

[root@localhost ~]# yum -y install vdo[root@localhost ~]# reboot
Centos8中怎么使用VDO優(yōu)化存儲空間

創(chuàng)建一個VDO設(shè)備

確保有一個空余磁盤或分區(qū)可供VDO使用。盡管可以在LVM邏輯卷上面創(chuàng)建VDO卷,但是重新引導(dǎo)系統(tǒng)時會出現(xiàn)引導(dǎo)順序問題。所以再裸盤上面創(chuàng)建vdo卷之后在它之上創(chuàng)建LVM邏輯卷。

  Centos8中怎么使用VDO優(yōu)化存儲空間 

下面使用一塊20GB的磁盤,/dev/sda做vdo卷 下面創(chuàng)建vdo卷:

[root@localhost ~]# vdo create --name=vdolvm --device /dev/sda --vdoLogicalSize 60G --writePolicy asyncCreating 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優(yōu)化存儲空間 

下面分解一下命令,看看所使用的選項:

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

查看新建VDO卷相關(guān)的信息

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

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

Centos8中怎么使用VDO優(yōu)化存儲空間 讓我們看看使用vdostats可以獲得有關(guān)vdo卷的什么樣的信息:

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

Centos8中怎么使用VDO優(yōu)化存儲空間 

由于我們尚未將任何數(shù)據(jù)寫入該卷,因此Space saving%字段為N/A。稍后我們將寫一些數(shù)據(jù)時,在此處看到更多有用的信息。

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

將VDO卷作為普通磁盤設(shè)備進行設(shè)置

現(xiàn)在我們已經(jīng)創(chuàng)建了VDO設(shè)備,我們可以對其進行分區(qū)并格式化,或者在這個vod卷上面創(chuàng)建lvm邏輯卷。下面我們創(chuàng)建邏輯卷:

# 創(chuàng)建物理卷[root@localhost ~]# pvcreate /dev/mapper/vdolvm Physical volume "/dev/mapper/vdolvm" successfully created.# 創(chuàng)建卷組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

從上面可以看到,lvm認為我們的基礎(chǔ)磁盤為120GB,盡管我們知道它只有40GB。由于LVM不知道VDO后端磁盤的大小。 Centos8中怎么使用VDO優(yōu)化存儲空間 

現(xiàn)在,讓我們創(chuàng)建幾個邏輯卷吧:

[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# 查看創(chuàng)建好的邏輯卷[root@localhost ~]# lvs -o +devices
Centos8中怎么使用VDO優(yōu)化存儲空間

創(chuàng)建掛載點并掛載文件系統(tǒng)

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

[root@localhost ~]# for i in `seq 1 3`; do mkfs.xfs -K /dev/vdo_vg/vdo_lv0$i ; donemeta-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=1log      =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=1log      =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=1log      =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優(yōu)化存儲空間 

當(dāng)我們將新文件系統(tǒng)掛載到掛載點時,我們要告訴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優(yōu)化存儲空間 

現(xiàn)在,我們向設(shè)備寫入了少量數(shù)據(jù),我們可以再次檢查VDO卷以查看情況是否已更改。

[root@localhost ~]# vdostats --huDevice                    Size      Used Available Use% Space saving%
/dev/mapper/vdolvm       20.0G      4.0G     16.0G  20%           86%
Centos8中怎么使用VDO優(yōu)化存儲空間

設(shè)置為開機啟動

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

使用blkid查看這三個邏輯卷的UUID。 Centos8中怎么使用VDO優(yōu)化存儲空間 

使用上面獲取到的UUID,添加在/etc/fstab文件中:

[root@localhost systemd]# vim /etc/fstabUUID="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

以上就是關(guān)于“Centos8中怎么使用VDO優(yōu)化存儲空間”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI