新聞中心
Centos8 中安裝并配置 VDO 來優(yōu)化存儲空間
作者: 逄增寶 2021-05-19 07:59:35
云計算
虛擬化 虛擬數(shù)據(jù)優(yōu)化器(VDO)是一種塊虛擬化技術,可提供透明的數(shù)據(jù)重復刪除功能。通過消除冗余的數(shù)據(jù)塊,VDO可以大大減少實際使用的磁盤容量。

創(chuàng)新互聯(lián)主營宜豐網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,成都app軟件開發(fā)公司,宜豐h5成都微信小程序搭建,宜豐網(wǎng)站營銷推廣歡迎宜豐等地區(qū)企業(yè)咨詢
虛擬數(shù)據(jù)優(yōu)化器(VDO)是一種塊虛擬化技術,可提供透明的數(shù)據(jù)重復刪除功能。通過消除冗余的數(shù)據(jù)塊,VDO可以大大減少實際使用的磁盤容量。
VDO由兩個內(nèi)核模塊和兩個命令組成:
由下面兩個內(nèi)核模塊組成:
- kvdo - 該模塊加載到設備管理器層,提供用于重復數(shù)據(jù)刪除的塊存儲卷。
- uds - 該模塊負責與VDO磁盤上的通用的重復數(shù)據(jù)刪除索引進行通信。
包括兩個命令行工具:
- vdo - 用于創(chuàng)建,刪除,啟動和停止VDO卷,以及執(zhí)行其他配置操作。
- vdostats - 用于報告VDO卷的各個方面,包括有效的減少和物理卷的利用率。
系統(tǒng)環(huán)境
Centos8
安裝VDO
下面命令安裝vdo和相關依賴,安裝完成之后重啟系統(tǒng):
- [root@localhost ~]# yum -y install vdo
- [root@localhost ~]# reboot
創(chuàng)建一個VDO設備
確保有一個空余磁盤或分區(qū)可供VDO使用。盡管可以在LVM邏輯卷上面創(chuàng)建VDO卷,但是重新引導系統(tǒng)時會出現(xiàn)引導順序問題。所以再裸盤上面創(chuàng)建vdo卷之后在它之上創(chuàng)建LVM邏輯卷。
下面使用一塊20GB的磁盤,/dev/sda做vdo卷
下面創(chuàng)建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
下面分解一下命令,看看所使用的選項:
--device - 指定在哪個硬盤上創(chuàng)建vdo卷
--vdoLogicalSize - 這里我們指定了容量大小為60G,比我們實際磁盤20G大了許多。假設我們將從重復數(shù)據(jù)刪除中至少得到3:1的減少,對于大多數(shù)的數(shù)據(jù),這是相當保守的,但如果你的數(shù)據(jù)沒有很多重復的,那么比率應該是不同的。日志文件和其他純文本文件通??梢院芎玫剡M行重復數(shù)據(jù)刪除,可能會得到10:1甚至更高的重復數(shù)據(jù)刪除率。但是二進制文件,如視頻、音頻或壓縮包,將遠遠低于3:1,甚至在某些情況下1:1。這種情況下不建議使用vdo卷。
--writePolicy - vdo有三種寫策略:
sync:只有在數(shù)據(jù)寫入物理設備后,才會確認對VDO卷的寫入。
async:在數(shù)據(jù)寫入緩存后被確認。如果在設備故障或掉電之前沒有刷新緩存,可能會導致數(shù)據(jù)丟失。
auto:在這種默認模式下,VDO將檢查存儲設備并確定它是否支持刷新。如果是這樣,VDO將使用異步模式。如果沒有,它將使用同步模式。
查看新建VDO卷相關的信息
正如我們在上一步的輸出中看到的,VDO創(chuàng)建了一個名為/dev/mapper/vdolvm的新dm設備。當我們創(chuàng)建lvm卷組時,這就是我們將要使用的設備。
- [root@localhost ~]# ll /dev/mapper/vdolvm
- lrwxrwxrwx 1 root root 7 Mar 4 13:31 /dev/mapper/vdolvm -> ../dm-2
讓我們看看使用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
由于我們尚未將任何數(shù)據(jù)寫入該卷,因此Space saving%字段為N/A。稍后我們將寫一些數(shù)據(jù)時,在此處看到更多有用的信息。
可以看到上圖中,我們還沒有寫任何數(shù)據(jù),但是已經(jīng)有4GB,20%的空間正在使用中了!這是因為“通用重復數(shù)據(jù)刪除索引”已被寫入磁盤。這基本上是一個數(shù)據(jù)庫,用于記錄slab指紋及其位置。這就是使重復數(shù)據(jù)刪除成為可能的原因。
將VDO卷作為普通磁盤設備進行設置
現(xiàn)在我們已經(jīng)創(chuàng)建了VDO設備,我們可以對其進行分區(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 <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后端磁盤的大小。
現(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
創(chuàng)建掛載點并掛載文件系統(tǒng)
通常,創(chuàng)建文件系統(tǒng)后,它將在設備上運行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 ; 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
當我們將新文件系統(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
現(xiàn)在,我們向設備寫入了少量數(shù)據(jù),我們可以再次檢查VDO卷以查看情況是否已更改。
- [root@localhost ~]# vdostats --hu
- Device Size Used Available Use% Space saving%
- /dev/mapper/vdolvm 20.0G 4.0G 16.0G 20% 86%
設置為開機啟動
下面將三個邏輯卷設置為開機啟動,需要在fstab文件中添加x-systemd.device-timeout=0和x-systemd.requires=vdo.service。
使用blkid查看這三個邏輯卷的UUID。
使用上面獲取到的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
本文轉(zhuǎn)載自微信公眾號「Linux就該這么學」,可以通過以下二維碼關注。轉(zhuǎn)載本文請聯(lián)系Linux就該這么學公眾號。
分享題目:Centos8 中安裝并配置 VDO 來優(yōu)化存儲空間
本文路徑:http://fisionsoft.com.cn/article/dhpdpps.html


咨詢
建站咨詢
